如何在Stripe测试环境中自定义模拟托管结账完成订单?
在Stripe测试环境自动化自定义托管结账订单的方案
方法1:通过Stripe API创建自定义Checkout Session并触发完成事件
这是最灵活的方式,能完全控制所有参数:
- 创建自定义Checkout Session
使用Stripe API生成符合需求的会话,指定订单项、货币、关联账户等参数。以Node.js为例:
const stripe = require('stripe')('你的测试Secret Key'); const session = await stripe.checkout.sessions.create({ mode: 'payment', currency: 'eur', // 指定货币 line_items: [ { price_data: { currency: 'eur', product_data: { name: '自定义商品', }, unit_amount: 2999, // 金额(分) }, quantity: 1, }, ], payment_intent_data: { transfer_data: { destination: 'acct_xxx', // 指定关联账户ID }, }, success_url: 'https://your-test-domain.com/success', cancel_url: 'https://your-test-domain.com/cancel', });
执行后会得到固定的session.id,所有参数均为预设值。
- 触发结账完成事件
用Stripe CLI针对该特定会话触发事件,确保事件数据完全匹配自定义会话:
stripe trigger checkout.session.completed --event-payload '{"data":{"object":{"id":"'$SESSION_ID'"}}}'
替换$SESSION_ID为你刚创建的会话ID即可。
方法2:直接使用自定义Payload触发事件
若无需提前创建会话,可直接构造完整的Checkout Session JSON作为事件Payload,用CLI触发:
stripe trigger checkout.session.completed --event-payload @path/to/your-custom-payload.json
your-custom-payload.json需严格遵循Stripe checkout.session.completed事件结构,填入订单项、货币、关联账户ID、测试支付方式等你需要的所有字段。
方法3:端到端自动化测试(模拟真实用户操作)
如果需要覆盖完整的用户结账流程(含跳转Stripe托管页面、输入测试卡号),可使用Playwright或Cypress这类工具:
- 导航到你的下单页面,触发Checkout跳转
- 在Stripe托管页面自动填入测试卡号(比如
4242 4242 4242 4242,过期日期填未来任意值,CVC填任意3位) - 自动提交支付,等待跳转回成功页面,同时监听webhook事件
这种方式最贴近真实用户场景,适合完整流程测试。
注意事项
- 全程使用Stripe测试密钥,禁止使用生产密钥
- 测试卡号可使用Stripe官方提供的测试卡列表,比如
4242系列、4000 0000 0000 0002(模拟支付失败)等 - 关联账户必须是测试环境中的账户ID,且已完成必要验证步骤
内容的提问来源于stack exchange,提问作者Dashiell Rose Bark-Huss
相关产品推荐
相关产品推荐

