【发布时间】:2021-05-11 12:21:39
【问题描述】:
我正在尝试在我的网络应用中实施 3D Secure。它与 SEPA 借记卡和不需要 3D Secure 的卡借记卡完美配合。但是,对于需要 3D Secure 的卡,付款在 Stripe 仪表板中仍处于 Incomplete 状态。
我的产品是年度订阅。
首先,我在服务器 (https://stripe.com/docs/api/payment_intents/create) 上创建支付意图,并在 HTTP 响应中发送客户端密码。
List<Object> paymentMethodTypes = new ArrayList<>();
paymentMethodTypes.add("card");
paymentMethodTypes.add("sepa_debit");
Map<String, Object> params = new HashMap<>();
params.put("amount", 2000);
params.put("currency", "eur");
params.put(
"payment_method_types",
paymentMethodTypes
);
PaymentIntent paymentIntent = PaymentIntent.create(params);
之后,我在前端使用 stripe.confirmCardSetup 和 clientSecret 和 card 元素,然后将付款方式发送到我的后端。
const response = await stripe.confirmCardSetup(clientSecret, {
payment_method: {
card: elements.getElement(CardElement)
}
})
await setDefaultPaymentMethod(payload?.setupIntent?.payment_method);
然后我检索付款方式并将其附加给客户,最后创建订阅,如 Stripe 示例 (https://stripe.com/docs/billing/subscriptions/examples) 所示。
PaymentMethod paymentMethod = PaymentMethod.retrieve(
"pm_***"
);
Map<String, Object> params = new HashMap<>();
params.put(
"customer",
"clg_***"
);
PaymentMethod updatedPaymentMethod = paymentMethod.attach(params);
// Create subscription
它确实在前端显示 3D 安全身份验证模式。但是,在整个过程结束时(在后端创建订阅后),需要 3D Secure 的卡支付仍然处于Incomplete 状态。谁能指出我正确实施 3D Secure 的正确方向?
【问题讨论】:
标签: javascript java stripe-payments