我当前收到错误消息:
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
答案 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