在最近的工作中,我接触到了多种国外支付平台,尤其是 Stripe。本文将分享我对 Stripe 平台的初步认识,主要基于其文档内容,后续会在实际使用中不断完善。
基本介绍与其他支付平台的对比
什么是 Stripe
Stripe 是一个基于 API 的便捷支付渠道,提供多种支付功能和产品。
使用范围
截至 2019 年 4 月 7 日,Stripe 已支持 32 个国家的使用。虽然有资料提到支持 25 个国家,但实际上支持的国家列表更为广泛。需要注意的是,中国大陆尚未被支持,因此中国企业若想使用 Stripe,需要在支持国家中开设银行账户。可以通过 Stripe Atlas 创建美国银行账户,更多信息可参考其主页。
与其他平台的简单对比
在与朋友的交流中,了解到 PayPal 和 Square 的使用体验。PayPal 的开发难度较大,隐藏费用高,实际费用可能超过 5%。而 Square 的开发相对简单,但其 SDK 仅支持较低版本的安卓系统,因此在某些情况下可能不适用。
总体来看,Stripe 的开发简单,支持多种支付方式(如支付宝和微信支付),适合创业团队使用;而 Square 更适合线下支付需求,PayPal 则更适合大型企业。
支付流程
整个支付流程相对简单,主要包括以下步骤:
- 客户端将用户输入的信用卡信息发送到 Stripe 服务器。
- Stripe 服务器对信息进行校验,返回一个 token。
- 客户端将 token 和订单信息发送到服务器。
- 服务器计算订单金额并请求 Stripe 扣费。
- Stripe 返回交易结果给服务器。
- 服务器将交易结果返回给客户端。
测试账号
Stripe 提供了足够的测试账号,方便我们进行各种测试。
一步支付
在收款时,设置 capture 为 true,Stripe 将直接进行收账。
java
// Set your secret key: remember to change this to your live secret key in production
Stripe.apiKey = “sk_test_yoursecretkey”;
// Token is created using Checkout or Elements! Get the payment token ID submitted by the form:
String token = request.getParameter(“stripeToken”);
Map
params.put(“amount”, 999);
params.put(“currency”, “usd”);
params.put(“description”, “Example charge”);
params.put(“source”, token);
Charge charge = Charge.create(params);
每个 token 只能使用一次,且会很快失效。
两步支付
Stripe 支持分步骤支付,可以先授权支付,稍后再进行结算。授权有效期为七天,未及时收费将被取消。
支付的附加信息
发送支付邮件
Stripe 可以设置每笔账单的邮件接收,确保用户及时收到账单信息。
java
params.put(“receipt_email”, “[email protected]”);
设置附加信息
Stripe 支持将 Metadata 添加到支付请求中,便于管理每笔支付信息。
支付失败
支付过程中可能会出现失败情况,建议对每种失败类型进行处理。失败原因可能包括:
- 支付被发卡单位拒绝(如信息错误、信用卡过期等)。
- Stripe 安全屏蔽。
- 无效的 API 调用。
如果 Stripe 屏蔽了合法支付,可以在 Dashboard 中标记该卡为安全。
编程中对支付失败的处理
可以通过处理 API 错误和使用 webhooks 监听事件来自动处理支付结果。
纠纷与防欺诈
在交易过程中,需注意如何处理交易纠纷和防范欺诈。处理纠纷时,需提供有效证据,具体时间和资料要求可在 Stripe Dashboard 中查看。
防范纠纷和欺诈
- 收集尽可能多的支付信息,如客户名称、邮箱、CVC、账单地址等。
- 使用校验检查,确保信息的准确性。
退款
可以使用 charge.refund.updated 监控退款事件,确保用户在退款时及时收到通知。
小小的注意事项
支付精度
在实现支付时,需关注 Stripe 平台的精度,确保支付单位和金额的正确性。
防止 Stripe IP 无法访问
确保系统能够访问 Stripe 服务器,以便顺利进行支付和接收回调。
其他
使用 webhooks
通过 webhooks 监控支付的触发事件,确保及时处理支付状态。
更多支付方式
Stripe 支持多种支付方式,包括支付宝、微信支付及比特币支付。
善用 Card 和 Customer
利用 Card 和 Customer 功能,方便管理支付和提升用户体验。
账单与发票
Stripe 提供账单功能,支持周期性收费,适合实现会员自动续费。
不要随便保存用户的信用卡信息
除非获得 PCI 认证,否则请勿在数据库中保存用户的信用卡信息。
iOS 应用程序中优先考虑 Stripe
根据苹果公司的规定,出售数字内容需使用应用内购买,而实物商品则可使用 Stripe 等其他支付方案。