前言:APP更新迭代问题,对接国外支付。毕竟国外不像咱们天朝有支付宝,微信这么方便普及的工具。
今天我们来集成一下Braintree这个Paypal旗下的服务,Paypal相当于咱天朝的支付宝。它的SDK适用 Java, Android,iOS等等服务端以及客户端。文章主要谈谈iOS端的集成。
申请账号
这个是公司领导注册的,香港的公司。听说国内的账号不能用或者限制很多
Braintree 工作流程原理
移动端其实很简单。进入支付页面像服务器发送一个请求,服务器给你返回client token 我们拿着这个client token 去像braintree拿支付的随机数. 这个随机数返回给后台 后台拿着这个支付随机数付款 然后告诉我们。具体实现代码下方有贴出来。
客户端集成
官方文档其实很详细了,这里把步骤在列一下.客户端集成我们依赖cocoaPods 首先根据需求,你的支付方式有多种选择。这里我们只是先做了信用卡和paypal。其实还有很多,还有Venmo,像苹果还有Apple Pay.
Podfile文件
#国外支付
pod 'BraintreeDropIn'
pod 'Braintree/PayPal'
pod 'Braintree/Apple-Pay'
这里只集成了3种。
注意
这里如果使用了最新官方的Drop-in的UI,iOS版本要从iOS9开始了。
paypal
因为涉及到H5页面支付或者应用跳转,需要设注册一个URL类型
1.在Xcode中,在Project Navigator中点击您的项目,然后导航到App Target > Info > URL Types
2.点击[+]添加新的URL类型
3.在URL Schemes下,输入您的应用切换返回URL方案。该方案必须以您的应用程序的Bundle ID开始,并致力于Braintree应用程序切换返回。例如,如果应用程序包ID是com.your-company.Your-App,那么您的URL方案可能是com.your-company.Your-App.payments。
比如在我项目中 .payments前面就是我项目的Bundle ID
设置好了之后 在AppDelegate导入
#import "BraintreeCore.h" //国外支付
之后再在AppDelegate中的application:didFinishLaunchingWithOptions:
实现,使用setReturnURLScheme:
与您在上面设置的值
[BTAppSwitch setReturnURLScheme:@"DiDaWatchEBiaoPing-en.com.payments"];
然后在您的应用程序委托中,将支付授权URL传递给Braintree进行最终确认:
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
if ([url.scheme localizedCaseInsensitiveCompare:@"com.your-company.Your-App.payments"] == NSOrderedSame) {
return [BTAppSwitch handleOpenURL:url options:options];
}
return NO;
}
// If you support iOS 7 or 8, add the following method.
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
if ([url.scheme localizedCaseInsensitiveCompare:@"com.your-company.Your-App.payments"] == NSOrderedSame) {
return [BTAppSwitch handleOpenURL:url sourceApplication:sourceApplication];
}
return NO;
}