Shopware 6中如何通过store-api设置支付信息对接Stripe支付
问题根因
你遇到的No credit card selected报错是Shopware无头模式对接Stripe的常见问题,已有大量开发者通过相同方案解决。本质原因是Shopware官方Stripe集成不会从/store-api/handle-payment接口的载荷中读取信用卡相关参数,需要提前将Stripe生成的支付凭证绑定到当前订单的会话上下文,才能正常触发支付流程,具体操作步骤如下:
- 首先通过Stripe前端JS SDK收集信用卡信息,生成格式为
pm_xxx的Stripe支付方法ID,注意不要把明文信用卡信息传输到你的服务端,所有敏感卡信息必须由前端直接和Stripe交互生成凭证,符合支付合规要求。 - 调用Shopware Store API的
/store-api/payment-method/stripe/set-card接口,将生成的支付方法ID绑定到当前会话上下文,请求示例如下:
{ "paymentMethodId": "pm_xxxxxxxxxxxxxxxxxxxxxxxx", "saveCard": false }
saveCard参数设为true时可将当前信用卡保存到用户的Shopware账号中,供后续下单复用。
- 完成绑定后,再按官方文档要求调用
/store-api/handle-payment接口,传入原有的orderId、finishUrl、errorUrl三个参数即可正常触发Stripe支付流程,无需额外传递信用卡相关参数。
注意:如果是访客下单场景,必须保证调用
set-card接口和后续handle-payment接口时,请求头携带的sw-context-token完全一致,否则上下文不关联仍然会触发相同报错。如果需要适配Stripe 3D Secure强认证要求,可以在调用set-card接口时额外传入returnUrl参数,用于认证完成后的跳转回调。
内容的提问来源于stack exchange,提问作者Daniel Richter
相关产品推荐
相关产品推荐

