You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Stripe集成GiroPay与SOFORT遇到问题求助

关于Stripe Giropay支付集成问题的排查与解决方案

我来帮你梳理下这个问题的排查方向,结合你给出的代码和遇到的现象,咱们一步步拆解:

1. 测试密钥报错的核心原因

你提到用测试密钥(pk_test_xxx)调用时提示“需使用发布密钥”,大概率是测试模式下的配置遗漏:

  • 先确认Stripe后台的测试环境中,Giropay支付方式是否已经正式激活(有时候只激活生产环境会导致测试模式无法调用);
  • 另外检查代码中有没有不小心混用密钥的情况,比如后端用了测试密钥但前端用了生产密钥,或者反过来。

其实测试密钥完全支持Giropay的测试流程,Stripe针对Giropay有专门的测试模拟规则,这个后面会提到。

2. 发布密钥下仅返回Source对象的正常性与缺失步骤

当你用发布密钥调用createSource成功返回Source对象时,这是流程的第一步,而非全部!Giropay的完整支付流程是:

  1. 前端调用createSource生成待支付的Source(状态为pending);
  2. 将用户重定向到source.redirect.url,用户在Giropay的页面完成支付;
  3. 用户支付完成后,会自动跳回你指定的return_url;
  4. 通过Webhook或后端接口验证Source状态,完成最终的扣费操作。

你的代码目前只完成了第一步,缺少了重定向用户到Giropay支付页面的关键逻辑,这就是为什么你只看到Source对象,但没有后续支付流程的原因。

3. 代码修正建议

修改你的Giropay分支代码,补充重定向逻辑:

else if (choosenPaymentMethod == "giropay") {
 stripe.createSource({
 type: 'giropay',
 amount: 1099,
 currency: 'eur',
 owner: {
 name: 'Jenny Rosen',
 },
 redirect: {
 return_url: 'https://shop.example.com/crtA6B28E1',
 },
 }).then(function(result) {
 if (result.error) {
   // 前端友好提示用户错误,比如弹窗显示错误信息
   console.error(result.error);
 } else {
   // 关键步骤:跳转到Giropay的官方支付页面
   window.location.href = result.source.redirect.url;
 }
 });
}

4. 后续回调与状态验证

用户完成支付跳回return_url后,需要验证支付结果,推荐两种方式:

  • Webhook方式(更可靠):在Stripe后台配置source.chargeable事件的Webhook地址,当Source状态变为可扣费状态时,后端用Secret Key调用stripe.charges.create完成扣费;
  • 前端+后端联动方式:在return_url页面,获取URL参数中的sourceID,传给后端,后端用Secret Key调用stripe.sources.retrieve查询状态,再返回结果给前端处理。

另外,测试环境下你可以手动模拟支付:生成Source后复制source.redirect.url,打开后可以选择“模拟成功支付”或“模拟失败”,之后会跳回你的return_url,方便测试回调逻辑。

5. 最后检查几个细节

  • 确保Stripe后台的测试和生产环境都激活了Giropay;
  • 把return_url添加到Stripe后台的“允许跳转域名”列表中,防止被拦截;
  • 所有涉及扣费、查询的敏感操作必须放在后端,绝对不能在前端暴露Secret Key。

内容的提问来源于stack exchange,提问作者A. Ilazi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:50:06