Stripe生产环境加拿大ACSS DEBIT微存款验证金额传递方法咨询
Stripe ACSS Debit微存款验证金额传递问题(加拿大地区)
问题描述
使用ACSS Debit(加拿大)完成付款后,无法通过微存款验证:
- 按文档要求传入两笔微存款金额时,触发「传入的微存款金额不匹配」错误
- 尝试拆分总金额并传入小数部分后,出现其他错误
核心疑问:生产环境调用verifyMicrodepositsForPayment接口时,如何正确传递微存款金额?
错误代码示例
let money = grandTotal/2; money = Number(money.toString().split('.')[1]); const money1 = money - 1 money = money + 1 await stripe.verifyMicrodepositsForPayment(clientSecret{ amounts: [money1, money]});
问题分析与解决方案
核心错误点
- 金额逻辑完全错误:代码中自行计算金额(拆分总金额小数部分后加减1),但Stripe的微存款是随机打入用户银行账户的小额资金,必须使用实际到账的两笔金额,而非自定义计算值。
- 语法错误:调用接口时
clientSecret后缺少逗号,导致参数传递格式错误。
正确实现方式
Stripe要求amounts数组传入的是实际存入用户账户的两笔微存款的「分」单位整数(比如银行到账$0.05,对应数值5;到账$0.03,对应数值3),步骤如下:
- 让用户查看自己的银行账户,找到Stripe打入的两笔小额存款记录
- 将这两个金额转换为分的整数(去掉小数点,取纯数字)
- 正确调用接口传递数值
修正后的代码示例
// 示例:用户实际收到的微存款为$0.05和$0.03,对应分的数值是5和3 await stripe.verifyMicrodepositsForPayment(clientSecret, { amounts: [5, 3] });
额外注意事项
- 生产环境中绝对不能自行计算微存款金额,必须依赖用户提供的实际到账数据
- 确保接口调用的参数格式正确,避免语法错误导致的额外异常
内容的提问来源于stack exchange,提问作者Gabriel Temitope
相关产品推荐
相关产品推荐

