使用条纹 + 格子创建 ACH 收费 - 没有这样的令牌;在实时模式中存在类似的对象

Posted

技术标签:

【中文标题】使用条纹 + 格子创建 ACH 收费 - 没有这样的令牌;在实时模式中存在类似的对象【英文标题】:Creating a ACH charge with stripe + plaid - no such token; a similar object exists in live mode 【发布时间】:2017-03-22 06:15:47 【问题描述】:

我之前在开发模式下尝试对实时卡/客户收费时遇到过这个问题。我以前从未使用条纹进行 ACH 收费,而且我肯定处于开发模式。 https://stripe.com/docs/ach#integrating-plaid

js

var linkHandler = Plaid.create(
env: 'tartan',
clientName: 'Stripe / Plaid Test',
key: '[Plaid key]',
product: 'auth',
selectAccount: true,
onSuccess: function(public_token, metadata) 
 // Token & Account ID - I use this for subsequent cURL requuest
 console.log('public_token: ' + public_token);
 console.log('account ID: ' + metadata.account_id);
 ,
);

// Trigger the Link UI
 document.getElementById('linkButton').onclick = function() 
 linkHandler.open();
;

响应有效。我使用上面的 public_token 和帐户 ID:

    $data = array(
            'client_id' => 'MY_CLIENT_ID',
            'secret' => 'MY_SECRET',
            'public_token' => 'MY_PUBLIC_TOKEN_FROM_ABOVE',
            'account_id' => 'MY_ACCOUNT_ID_FROM_ABOVE'
     );


    $string = http_build_query($data);

    //initialize session
    $ch=curl_init("https://tartan.plaid.com/exchange_token");

    //set options
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    //execute session
    $keys = curl_exec($ch);
    $keys = json_decode($keys);
    //close session
    curl_close($ch);

这也会产生一个有效的响应对象:


 access_token: 'MY_ACCESS_TOKEN',
 account_id: 'MY_ACCOUNT_ID',
 stripe_bank_account_token: 'MY_STRIPE_BANK_ACCOUNT'

我想这就是我搞混的地方。文档说: 响应将包含经过验证的 Stripe 银行帐户令牌 ID。您可以将此令牌附加到 Stripe Customer 对象,或直接在其上创建费用。

但是,当我像这样在银行帐户令牌上创建费用时:

    \Stripe\Stripe::setApiKey("sk_test_MY_TEST_KEY");

    $charge = \Stripe\Charge::create(array(
      "amount" => 2100,
      "currency" => "usd",
      "source" => $keys->stripe_bank_account_token, //(btok_MY_TOKEN_FROM_ABOVE)
      "description" => "my description"
    ));

    var_dump( $charge );

我得到的错误是:致命错误:未捕获的异常“Stripe\Error\InvalidRequest”,消息“没有这样的令牌:btoken_MY_BANK_TOKEN;实时模式下存在类似的对象,但使用了测试模式密钥来发出此请求。'

【问题讨论】:

您的问题的结尾似乎丢失了。当您尝试使用 Plaid 返回的银行账户令牌时会发生什么? API 是否返回错误消息? 是的,对不起。已更新。 【参考方案1】:

这意味着您创建了一个真实的银行帐户令牌。

如果您想测试您的集成,您需要使用以下凭据生成 Plaid 令牌:

用户名:test_plaid 密码:test_good 代码:1234

这将返回一个测试银行帐户令牌,您可以在与您的 Stripe 测试秘密 API 密钥 (sk_test_...) 一起发送的 API 请求中使用该令牌。

如果您想处理实时收费,那么您需要使用 Plaid 链接中的真实凭证来获取真实的银行账户令牌,然后在通过您的 Stripe 实时秘密 API 密钥发送的 API 请求中使用银行账户令牌( sk_live_...)。

【讨论】:

谢谢。为了清楚起见,这将类似于:jsfiddle.net/u2L1cgw6/1 @Ywain 你能回答我这个问题吗***.com/questions/58096180/…

以上是关于使用条纹 + 格子创建 ACH 收费 - 没有这样的令牌;在实时模式中存在类似的对象的主要内容,如果未能解决你的问题,请参考以下文章

条纹支付到银行账户

条纹:在保存的卡上创建 30 天试用订阅费用,但允许用户升级并立即开始收费?

带有格子 + 条纹 Api 的错误代码 2002

条纹存款(预付)付款。需提前2个月向客户收费

条纹,验证卡并仅在操作后对其进行收费

条纹设置意图