Stripe中能否关联Link支付方式至客户?API创建报错如何解决?
Stripe Link支付方式关联客户的解决方案
控制台关联Link到客户的可行性
无法在Stripe控制台手动将Link支付方式关联至特定客户对象。Link支付方式依赖用户的邮箱授权会话,只能通过支付/设置流程由用户主动授权后,由Stripe自动关联到客户。
API报错原因及解决方法
报错1:invalid_request_error<br />You cannot create a type link PaymentMethod directly.
Link类型的PaymentMethod不支持直接调用PaymentMethods.create接口创建。它只能在用户通过Link界面完成授权后,由Stripe自动生成并关联到客户,触发方式为使用SetupIntent或PaymentIntent。
报错2:parameter_unknown - link[email]<br />Received unknown parameter: link[email]
PaymentMethods.create接口不接受link[email]参数。Link的邮箱信息由用户在前端授权流程中提供,无需手动通过API传参。
正确实现步骤
方法1:通过SetupIntent关联Link到客户(仅完成支付方式绑定,不发起支付)
- 后端创建SetupIntent,指定关联客户及支付方式类型为
link:
curl https://api.stripe.com/v1/setup_intents \ -u sk_test_your_secret_key: \ -d customer=cus_YOUR_CUSTOMER_ID \ -d payment_method_types[]=link
- 前端使用Stripe.js加载Link认证组件,引导用户输入邮箱并完成授权:
const stripe = Stripe('pk_test_your_public_key'); const elements = stripe.elements(); // 挂载Link认证元素 const linkAuthElement = elements.create('linkAuthentication'); linkAuthElement.mount('#link-auth-container'); // 从后端获取SetupIntent的client_secret const clientSecret = 'seti_YOUR_SETUP_INTENT_SECRET'; // 完成授权流程 const { error } = await stripe.confirmSetup({ elements, clientSecret, confirmParams: { return_url: 'https://your-domain.com/setup-success', }, }); if (!error) { // 授权成功,Link PaymentMethod已自动关联到目标客户 }
方法2:通过PaymentIntent关联Link到客户(同时完成支付与支付方式绑定)
如果需要在支付过程中关联Link到客户,可创建PaymentIntent并指定关联客户,用户完成支付授权后,Link PaymentMethod会自动关联到客户:
curl https://api.stripe.com/v1/payment_intents \ -u sk_test_your_secret_key: \ -d amount=1000 \ -d currency=usd \ -d customer=cus_YOUR_CUSTOMER_ID \ -d payment_method_types[]=link
前端同样使用Stripe.js的confirmPayment方法完成用户授权即可。
内容的提问来源于stack exchange,提问作者ralpopo
相关产品推荐
相关产品推荐

