国际电商的 Stripe Checkout 集成:边缘情况与经验
基础集成很容易
标准的 Stripe Checkout 集成——创建会话,重定向用户,通过 webhook 处理 checkout.session.completed——确实像文档描述的那样有效,而且相当快速。这一部分本文不会花太多时间讨论。
税务:你认为你理解,直到你不理解
Stripe Tax 可以自动计算税率,但它对地址数据的质量非常敏感。不完整或格式错误的账单地址会导致不正确的税率,从而导致税务报告中的差异。
对于 B2B 销售,增值税处理更加复杂。欧盟增值税号码验证是异步的,Stripe 不会实时阻止未经验证的增值税号码。实现增值税号码格式的客户端验证可以减少大约 80% 的格式错误。
货币和展示
Stripe Checkout 支持在不同货币中展示价格。问题在于货币转换率:Stripe 会自动应用转换,但汇率是他们自己的,不一定与你向客户展示的汇率相匹配。
最可靠的方法是为每种货币维护单独的定价,而不是依赖自动转换。这需要更多的产品目录工作,但消除了对账问题的主要来源。
Webhook 可靠性
Stripe webhook 在实践中非常可靠,但需要幂等处理。相同的 webhook 事件可能会被多次发送。每个处理程序需要检查是否已经处理了给定的 event.id,并在已处理时安全地返回成功,而不重复执行操作。
退款和差额
退款处理往往是集成中最被忽视的部分,直到客户开始请求退款。Stripe 的退款 API 很简单,但库存恢复、税务调整以及通知顺序需要明确建模,而不是在退款请求到来时临时处理。