使用条纹时{handleCardPayment错误

时间:2019-08-28 09:47:38

标签: javascript php stripe-payments

我当前收到错误消息:

  

stripe.handleCardPayment意向密钥的值无效:该值应为$ {id} secret $ {secret}形式的客户端密钥。您指定了:pi_1FCNbuIxBpL3Mx4OJYi5hKML。

我首先从我在Vue.js中完成的前端向我在Laravel中完成的后端发出一个axios请求,这创建了一个付款意图(即pi_1FCNbuIxBpL3Mx4OJYi5hKML)。

 StripePackage::setApiKey('sk_test_xxxxxxxxxxx');

    $intent = \Stripe\PaymentIntent::create([
        'amount' => 1099,
        'currency' => 'eur',
    ]);

    return $intent;

我将这种付款方式设置为一个名为data_secret的全局定义的数据变量,该变量在提交付款的按钮中引用:

<button id='test' class='pay-with-stripe' @click='pay' type="button" style="margin-top:20px;" :data-secret="data_secret">Pay with card</button>

单击此按钮将调用支付方法,该方法又使用条纹handleCardPaymentMethod:

var cardButton = document.getElementById("test");
    var clientSecret = cardButton.dataset.secret;

    this.stripe.handleCardPayment(
      clientSecret, this.card, {
        payment_method_data: {
          billing_details: {name: 'Test Name'}
        }
      }
    ).

这会触发前面提到的错误。

我一直在关注此文档,但无法看到此问题:https://stripe.com/docs/payments/payment-intents/web

1 个答案:

答案 0 :(得分:1)

Stripe.js的handleCardPayment方法使用PaymentIntent的client_secret字段[0](看起来像“ pi_123_secret_123”),而不是PaymentIntent的ID(即“ pi_123”)。

您的代码似乎在设置前端的PaymentIntent ID,而不是client_secret。

[0] https://stripe.com/docs/api/payment_intents/object#payment_intent_object-client_secret