javascript - 使用 Stripe 时的 handleCardPayment 错误
问题描述
我目前收到错误:
stripe.handleCardPayment intent secret 的值无效:值应该是格式为 ${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>
单击此按钮时,将调用支付方法,该方法又使用条带句柄CardPaymentMethod:
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
解决方案
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
推荐阅读
- string - 如何查找字符串的字节长度
- swift - 如何使用 JTAppleCalendar 在一个 ViewController 中制作 2 个日历
- python - 通过将两列分组并对第三列数据求和来过滤python
- php - 数据未存储在 MySQL 数据库中
- python-3.x - 如何用 gitignore 隐藏 bot Telegram 令牌?
- python - Python 模块的大小是否有限制?
- swift - AVCaptureMetadataOutput().rectOfInterest 不工作
- angular - 如何在不以角度重置表单的情况下重置验证错误?
- python - 基于现有 id 创建唯一、可传递的 id 的最简单方法
- python - 如何在python的排列中找到最大的数字?