最近在进行支付相关的工作,由于业务主要面向国外用户,因此接触了一些国外的支付平台。本文将分享我对 Stripe 支付平台的初步了解,内容基于官方文档,后续会在实际使用中不断完善。
Stripe 支付平台的基本介绍与对比
什么是 Stripe?
Stripe 是一个基于 API 的便捷支付渠道,提供丰富的功能和产品,适合全球范围内的支付需求。
使用范围
截至2019年4月,Stripe 已经支持32个国家的支付业务(资料显示此前为25个国家)。具体支持的国家可以参考 Stripe 全球支持页面。
然而,中国大陆目前尚未在支持列表中。如果中国企业希望使用 Stripe,可以通过 Stripe Atlas 创建一个美国的银行账号。更多关于 Atlas 的介绍可以参考其官方主页。
与其他支付平台的简单对比
与 PayPal 和 Square 相比,Stripe 具有以下优势:
- PayPal:开发难度较大,隐藏费用高,实际支付费率可能远超表面的 2.99%,且新账号存在不接受信用卡支付的问题。
- Square:开发相对简单,但其 SDK 仅支持较低版本的安卓系统,限制了其应用范围。
总体而言,Stripe 开发简单,支持多种支付方式(包括支付宝和微信支付),适合创业团队使用;Square 更擅长线下支付;而 PayPal 则更适合大型企业。
Stripe 支付流程
Stripe 的支付流程简洁高效,主要分为以下步骤:
- 客户端将用户输入的信用卡信息发送到 Stripe 服务器。
- Stripe 服务器校验信用卡信息,通过后返回一个支付令牌(token)给客户端。
- 客户端将 token 和订单信息发送到服务器。
- 服务器计算订单金额,并请求 Stripe 进行扣费。
- Stripe 返回交易结果给服务器。
- 服务器将交易结果返回给客户端。
测试账号
Stripe 提供丰富的测试账号,方便开发者在不同场景下进行测试。
一步支付与两步支付
- 一步支付:后台获取支付令牌后,直接进行收款。
- 两步支付:支持先授权支付,稍后再进行结算,适合需要支付审核的场景。
支付附加功能
发送支付邮件
Stripe 支持为每笔账单发送邮件通知,用户可设置接收邮件的邮箱地址。
添加附加信息
可以通过 Metadata 在支付请求中添加自定义信息,这些信息仅对商家可见,有助于管理支付记录。
支付失败处理
支付失败的原因多种多样,Stripe 提供了详细的失败类型和原因描述。建议对每种失败类型进行针对性处理,提升用户体验。
支付失败的原因
- 发卡单位拒绝支付(
type:"issuer_declined"
) - 信息错误,如信用卡过期。
- 信用卡使用场景或国家受限。
- Stripe 安全屏蔽(
type: "blocked"
) - Stripe 认为交易存在风险。
- 无效的 API 调用(
type: "invalid"
) - 生产环境中应尽量避免。
自动处理支付失败
可以通过 API 错误捕获或 Webhooks 监听 charge.failed
事件,实现支付失败的自动处理。
防范纠纷与欺诈
支付平台需要关注交易纠纷与欺诈防范,避免资金损失。Stripe 提供了丰富的工具和建议,帮助商家识别和处理潜在的风险。
常见欺诈类型
- 盗用信用卡:使用被盗信用卡支付。
- 超额支付:支付金额高于实际订单。
- 市场欺诈:通过退款操作获取非法利益。
识别潜在欺诈
Stripe 的 Radar 功能可自动识别高风险的信用卡支付。商家还可以通过收集更多支付信息、使用校验检查等方式降低欺诈风险。
退款与支付精度
退款流程
Stripe 支持便捷的退款操作,退款发生时可通过 charge.refund.updated
事件进行监控。
支付精度
Stripe 支持多种货币的精确支付,确保交易金额的准确性。最小和最大支付金额取决于银行账户的结算货币。
其他功能
Webhooks 的使用
通过 Webhooks 可以监控支付过程中的各种触发事件,实现更灵活的业务逻辑。
多种支付方式
Stripe 支持包括支付宝、微信支付和比特币在内的多种支付方式,满足全球用户的需求。
账单与发票
Stripe 提供账单功能,支持周期性收费,适用于会员自动续费等场景。
信用卡信息的存储
除非获得 PCI 认证,否则不建议在服务器中保存用户的信用卡信息,确保数据安全。
iOS 应用中的使用
在 iOS 应用中,Stripe 可以作为实物商品的支付方案,避免高额的应用内购买费用。