Android集成Stripe API:Charge操作应在客户端还是后端?
Stripe Charge操作:客户端还是后端执行?
嘿,我来给你把这个问题讲明白——现在Stripe的安全规范和最佳实践要求,Charge操作必须在你的后端服务执行,绝对不能在Android客户端直接发起。
为什么旧版示例能在客户端用Charge类?
你提到的旧版客户端Charge调用,是Stripe早期API的做法,但现在已经被彻底废弃了。Stripe后来意识到这种方式存在严重的安全漏洞:如果在客户端代码里包含能发起Charge的密钥,一旦APK被反编译,攻击者就能拿到你的密钥,随意发起扣款操作,给你和用户带来巨大损失。所以现在Stripe已经移除了客户端侧的Charge相关API,强制要求把扣款逻辑放在后端。
Android客户端该做什么?
客户端的核心职责是安全收集用户的支付信息,并生成安全的支付凭证,然后把这个凭证传给后端。用Stripe的Android SDK,你可以做这些事:
- 用Stripe提供的预构建UI组件(比如PaymentSheet)收集卡号、有效期等支付信息,避免自己处理敏感数据
- 调用SDK的
createPaymentMethod方法,生成一个PaymentMethod对象,这个对象里的id是安全的支付凭证,不会包含任何敏感的用户支付信息 - 把这个
PaymentMethod.id传给你的后端服务
后端该做什么?
后端拿到客户端传来的支付凭证后,再用你的**Stripe秘钥(这个秘钥只能保存在后端,绝对不能出现在客户端代码里)**调用Stripe的API发起扣款:
- 推荐使用更现代的
Payment IntentAPI,而不是旧的Charge API——Payment Intent支持3D Secure等身份验证流程,能有效降低支付失败率和欺诈风险 - 后端调用Stripe API创建Payment Intent并确认支付,完成整个扣款流程
总结
简单来说,客户端负责“安全收集并传递支付凭证”,后端负责“发起实际的扣款请求”——这是Stripe现在强制要求的安全架构,也是支付行业的标准做法,既能保护你的密钥安全,也能保障用户的支付信息不被泄露。
内容的提问来源于stack exchange,提问作者Дмитро Яковлєв
相关产品推荐
相关产品推荐

