简单聊聊PayPal与BrainTree选型经历

2019年9月30日,PayPal公司被批准通过对国付宝的股权收购正式进入中国。2019年12月19日晚间,PayPal公司正式宣布,已完成对国付宝信息科技有限公司(Gopay)70%的股权收购。交易完成后,PayPal成为第一家获准在中国市场提供在线支付服务的外资支付平台。

所以以后即使做国内业务,也可能要和PayPal打交道了。正巧手里有个项目做的是海外市场,所以在PayPal和Braintree的技术选型中,进行了一次调研。

PayPal支付功能的选择

起初产品希望我们平台能够直接允许C端用户通过PayPal转账给B端用户,资金不通过我们平台中转,但是平台希望获取转账信息,这样平台可以给C端用户一些业务上的处理。

基于产品的需求,我们选择使用PayPal的"PayPal Commerce Platform"功能来实现这种需求。

基础知识

Payment Gateway & Processor

想要理解这金融支付服务,需要先了解下面的基础知识:

一般网上交易的流程(为了说明问题,仅为缩略版的流程) :
消费者 - 商户网站 - 消费者账户银行 - 支付网关 - 支付处理系统 - 商户收款银行

简单来说:

支付网关(Payment Gateway)是在商户的在线商城网站和商户的银行收款账户之间,搭建一个加密的支付信息通道,以便安全地将消费者通过浏览器在网站上购买时所输入的账户信息(如信用卡、姓名等)安全地传输到银行端,并将付款行的授权返回给收款行。

支付处理系统(Processor)是连接消费者账户银行和商户收款银行之间的交易系统,确保交易资金可以顺利地从消费者付款行账户进入到商户的收款行账户。

支付网关和支付处理系统是需要连接的。一个支付网关可以连接多个支付处理系统。

Authorization & Capture

另外,在信用卡支付会涉及这两种 RESOURCE 的操作:Authorization & Capture,又称“授权”和“捕获”。

在线信用卡支付流程:

  1. 商家向用户请求,一定金额的支付。
  2. 用户授权该笔交易金额; Authorization。
  3. 商家向该信用卡获取金额; Capture。
    (资金并非在用户同意授权后就直接打到商家的结算账号上)

关于Authorization & Capture的解释和实现方式,可以看下面的文章:
http://www.paymentsgateway.com.au/what-you-need-to-know/payments-gateway-authorization-and-capture

PayPal提供的主要功能

目前PayPal提供的主要功能:

  1. Checkout
  2. PayPal Commerce Platform
  3. Subscriptions
  4. Payouts
  5. Invoicing
  6. Payflow Gateway & PayPal Payments Pro

更多功能,请查看开发者文档地址:https://developer.paypal.com/

另外PayPal还提供了功能强大的Webhook,提供各种事件的回调通知。

Checkout

"Checkout"的开发者文档地址:https://developer.paypal.com/docs/checkout/

这项技术服务,提供的是最常规的付款功能,开发者作为收款人,付款人需要登录PayPal进行支付。

Express Checkout

"Express Checkout"服务的开发者文档:https://developer.paypal.com/docs/classic/payflow/express-checkout/

简单聊聊PayPal与BrainTree选型经历_第1张图片
express-checkout

除了常规的支付方式,PayPal还提供了一种"Express Checkout"的方式。在这种方式下,付款人可以使用PayPal余额,银行帐户或信用卡付款,而无需在商家网站上共享或输入任何信息。

该服务属于下面要介绍的"Payflow Gateway"。

注意:Braintree提供支持的PayPal内置PayPal Express Checkout功能。不要打开PayPal Express Checkout,否则这两个版本会相互冲突。

PayPal Commerce Platform

"PayPal Commerce Platform"的开发者文档地址:https://developer.paypal.com/docs/commerce-platform/

"PayPal Commerce Platform"是2019年二季度新推出的服务,前身是PayPal的"PayPal for Partners"(开发者文档见于参考文档6)。

目前需要申请才能使用服务,据提交申请的同事说,第一次申请就收到了拒信。可见申请还是有一定门槛的,所以需要紧急上线的项目选择此服务要慎重。

简单聊聊PayPal与BrainTree选型经历_第2张图片
开发流程

这项技术服务,开发者作为平台,付款人与收款人的交易通过平台中转,平台可以控制发款的实际和抽成的比例。

Subscriptions

"Subscriptions"的开发者文档地址:https://developer.paypal.com/docs/subscriptions/

这项技术服务,开发者可以定期向客户收取费用。

Payouts

"Payouts"的开发者文档地址:https://developer.paypal.com/docs/payouts/

[图片上传失败...(image-aa20b6-1577630479837)]

这项技术服务,开发者作为付款人,可以同时向大量的人进行汇款。

Invoicing

"Invoicing"的开发者文档地址:https://developer.paypal.com/docs/invoicing/

这项技术服务,开发者作为收款方可以向付款方提供PayPal发票。

Payflow Gateway & PayPal Payments Pro

"Payflow Gateway"的开发者文档地址:https://developer.paypal.com/docs/classic/products/payflow-gateway/

"PayPal Payments Pro"的开发者文档地址:https://developer.paypal.com/docs/classic/products/paypal-payments-pro/

两者的区别可以查看"Payflow Gateway"的开发者文档,主要是在"Processor"的区别

这两项技术服务,开发者可以作为类似电商这样的卖家,向付款方提供PayPal等各种支付,并且卖家具备资金托管的能力。

Braintree与Stripe的选择

后来需求发生变化,产品希望我们平台能够具备支付能力和资金托管能力,所以技术选型很容易的转移到了Braintree和Stripe之间的选择。

Braintree的开发者文档地址:https://developers.braintreepayments.com/

Stripe的开发者文档地址:https://stripe.com/docs

海外支付平台选择

  • Braintree是提供网站及移动装置金流整合支付的公司,PayPal在2013年收购了Braintree,所以Braintree与PayPal有深度整合可以无缝支援。如果要支持PayPal账户结算就只能使用 Braintree,可以单独接入PayPal,但是单独接入PayPal的单笔交易费率是比Braintree高很多的。
  • Stripe是一家线上金流整合服务的新创公司,主打设计简洁、容易使用、可站内(网站或APP皆可)付费的付款方式(使用PayPal结帐时需要跳到PayPal页面,商家可控性较低)。

两个平台在信用卡支付方式在两种平台费率是一样的。社区反馈来说,Stripe的集成要比Braintree简洁,集成比较方便和快捷。

Braintree以优质的客服和技术支援闻名,可靠度高,相对于PayPal和Stripe的客服在网路上都遭遇大量的负评(例如没来由的终止帐户却求助客服无门),Braintree的评价其实相对来说颇高。如果用户人群使用PayPal的比例比较高时,最好还是使用Braintree,毕竟PayPal和Braintree是一家公司,目前Stripe也并不支持PayPal。如果上面的情况没有影响到你的话,则使用Stripe。毕竟Stripe开发起来是非常快捷和舒适的,而且还支持支付宝和微信,这点对国内开发者也很有吸引力。

Braintree的工作原理

Braintree的工作原理如下图:

简单聊聊PayPal与BrainTree选型经历_第3张图片
BrainTree的工作原理
  1. 客户端从业务服务器请求一个client token,用来初始化客户端的SDK。
  2. 业务服务器用服务端SDK生成一个client token,发送给客户端。
  3. 客户端SDK初始化之后,顾客点击提交了支付信息,调用SDK提交支付信息,会返回一个payment method nonce(一个uuid的字符串)。
  4. 客户端把这个payment method nonce发送给业务服务器。
  5. 业务服务器接收到客户端传递过来的payment method nonce,然后用服务端的SDK创建一笔交易。

Braintree接入基础功能还是比较容易的,在此不作赘述。

参考文档:

  1. https://developer.paypal.com/docs/accept-payments/#credit-card-acceptance-on-your-website-or-mobile-app
  2. https://developers.braintreepayments.com/start/hello-server/java
  3. https://www.paypal.com/c2/smarthelp/article/什么是授权(订单)?-faq3829
  4. https://developer.paypal.com/docs/classic/express-checkout/integration-guide/ECParallelPayments/
  5. https://www.angelleye.com/paypal-split-payments-express-checkout-billing-agreements-reference-transactions/
  6. https://developer.paypal.com/docs/classic/products/adaptive-payments/?mark=Adaptive%20Payments
  7. https://www.angelleye.com/paypal-split-payments-express-checkout-billing-agreements-reference-transactions/

最后,限于笔者经验水平有限,欢迎读者就文中的观点提出宝贵的建议和意见。如果想获得更多的学习资源或者想和更多的是技术爱好者一起交流,可以关注我的公众号『全菜工程师小辉』后台回复关键词领取学习资料、进入前后端技术交流群和程序员副业群。同时也可以加入程序员副业群Q群:735764906 一起交流。

简单聊聊PayPal与BrainTree选型经历_第4张图片
哎呀,如果我的名片丢了。微信搜索“全菜工程师小辉”,依然可以找到我

你可能感兴趣的:(简单聊聊PayPal与BrainTree选型经历)