iOS集成Braintree, 支持credit card, PayPal支付(sandbox环境)

如果客户端只支持Paypal,那么需要import PayPal Mobile SDKs,但在v.zero以后(https://developer.paypal.com/docs/bt-vzero-overview/),可以集成多种支付,不需要分别import各自的SDK,就像是统一了行业标准,对开发者来说是件好事情,而且如果使用drop-in SDK自带的UI,开发起来会很省心,不需要自己写界面,一个底部弹出框包含所有支付内容。所以,趁我还没酒精过量,赶快写下v.zero的工作原理,还有Server和Client联调的demo。

看到官方文档(https://developers.braintreepayments.com/start/overview),首先先讲两个重要的点:1.Client token,2.Payment method nonce

Client token

是服务端通过Braintree的SDK生成的,比如我要用Rails5来开发,服务端,那么我需要的SDK是(gem “braintree”, “~> 2.72.0”),用它来生成token
这三个参数是生成token的依据,当你注册一个新的账户(https://www.braintreepayments.com/en-ca/sandbox)
给下截图,Account->My User->View Authorizations->API Keys->view,注意那三个参数,mark等下server会用到。


Rails配置代码:

记下以后继续,然后客户端会依据这个client token直接和Braintree的服务器通信,所以这是一个认证令牌(These should not be reused; a new client token should be generated for each request that’s sent to Braintree.)而且为了安全,每次客户端和Braintree服务器的直接通信都需要新的token,对应于每一个支付request。就像APNs当中,注册token,然后拿着token直接和apple服务器通信,一个道理,只不过一个是OS级别的,一个是第三方服务,那OS级别的无非是依赖于Apple ID这个统一的账户系统,本质是一样的对吧。

Payment method nonce
直接翻译叫做:支付方法随机数。其实就是一个字符串,代表一次支付方法的调用,然后服务端,获取这个字符串,通过Server的SDK,对Braintree服务器发起新的事务请求
这个东西其实在客户端的callback方法中有,是Braintree服务器直接下发的,我们的服务器不管这个类型。附上解释原理的那张经典图片:

看下overview的文档,图片下的5个steps,讲得很清楚
以上原理,现在到实践 继续阅读iOS集成Braintree, 支持credit card, PayPal支付(sandbox环境)