如何在Stripe CLI中触发指定amount_total的测试checkout.session.completed事件?
Stripe Trigger添加amount_total报错parameter_unknown的解决办法
问题描述
使用stripe trigger checkout.session.completed触发事件时,添加client_reference_id和metadata参数能正常运行:
stripe trigger checkout.session.completed --add checkout_session:client_reference_id=0b044395-9265-4dff-8f7e-3a53839e76d8 --add checkout_session:metadata.orgId=ee1ab35e-2ec5-46ff-9d95-e8fc71ae44ff
但添加amount_total=450参数时,会触发parameter_unknown错误:
stripe trigger checkout.session.completed --add checkout_session:client_reference_id=0b044395-9265-4dff-8f7e-3a53839e76d8 --add checkout_session:metadata.orgId=ee1ab35e-2ec5-46ff-9d95-e8fc71ae44ff --add checkout_session:amount_total=450
原因分析
amount_total是Checkout Session的计算字段,它的值由会话关联的line_items(商品条目)里的价格自动计算生成,不能通过--add参数直接手动设置。Stripe的Trigger工具模拟真实支付流程,不允许覆盖这类由业务逻辑推导的字段,因此会返回参数未知的错误。
解决方法
如果需要自定义订单金额,需要通过修改line_items中的价格信息来实现,有两种常用方式:
方式1:动态设置价格的unit_amount
直接在trigger命令中指定商品的单价,让Stripe自动计算amount_total:
stripe trigger checkout.session.completed \ --add checkout_session:client_reference_id=0b044395-9265-4dff-8f7e-3a53839e76d8 \ --add checkout_session:metadata.orgId=ee1ab35e-2ec5-46ff-9d95-e8fc71ae44ff \ --add checkout_session:line_items[0]:price_data:unit_amount=450 \ --add checkout_session:line_items[0]:price_data:currency=usd \ --add checkout_session:line_items[0]:quantity=1
方式2:使用预先创建的价格ID
先在Stripe Dashboard或通过API创建一个价格(比如单价450美分的价格),然后在trigger命令中引用该价格ID:
stripe trigger checkout.session.completed \ --add checkout_session:client_reference_id=0b044395-9265-4dff-8f7e-3a53839e76d8 \ --add checkout_session:metadata.orgId=ee1ab35e-2ec5-46ff-9d95-e8fc71ae44ff \ --add checkout_session:line_items[0]:price=price_123456789 \ --add checkout_session:line_items[0]:quantity=1
注意:price_data仅适用于创建临时价格的场景,若需要复用价格,推荐使用预先创建的价格ID。
内容的提问来源于stack exchange,提问作者lazlojuly
相关产品推荐
相关产品推荐

