这里有一个奇怪的问题。按照文档,我将 PaymentMethod 附加到现有客户,但它不起作用。粗略地说,我:
编码:
stripe.Customer.create(email=user.email, name=user.full_name)
stripe.PaymentIntent.create(amount=amount, currency="aud", customer=user.stripe_customer_id)
Stripe('{{ stripe_publishable_key }}').elements().create("card");
stripe.confirmCardPayment('{{ clientSecret }}', {
payment_method: {
card: card,
billing_details: {
// name: 'Jenny Rosen'
},
}
}).then(function (result) {
if (result.error) {
// Show error to your customer (e.g., insufficient funds)
console.log(result.error.message);
var displayError = document.getElementById('card-errors');
displayError.textContent = result.error.message;
} else {
// The payment has been processed!
if (result.paymentIntent.status === 'succeeded') {
// Show a success message to your customer
// There's a risk of the customer closing the window before callback
// execution. Set up a webhook or plugin to listen for the
// payment_intent.succeeded event that handles any business critical
// post-payment actions.
$('#fake-submit').click();
}
}
});
stripe.PaymentMethod.attach(stripe.PaymentIntent.retrieve(intent_id).payment_method, customer=user.stripe_customer_id)
Request req_request_id: This PaymentMethod was previously used without being attached to a Customer or was detached from a Customer, and may not be used again.
最佳答案
Stripe 文档似乎存在问题。
在 https://stripe.com/docs/payments/save-after-payment#web-collect-card-details他们有:
setup_future_usage: 'off_session'
但是在 https://stripe.com/docs/payments/save-and-reuse#web-collect-card-details他们错过了这条关键线。
但是在您的情况下,用户是否选择是否要将卡保存在前端?那你就不用在后台存卡了,可以存到
confirmCardPayment
电话:https://stripe.com/docs/js/payment_intents/confirm_card_payment#stripe_confirm_card_payment-data-save_payment_method :
save_payment_method
booleanIf the
PaymentIntent
is associated with a customer and this parameter is set totrue
, the provided payment method will be attached to the customer. Default isfalse
.
关于javascript - 此 PaymentMethod 之前使用过但未附加到客户或已与客户分离,并且可能不会再次使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60333494/