前言:APP更新迭代問題,對接國外支付。畢竟國外不像咱們天朝有支付寶,微信這么方便普及的工具。
今天我們來集成一下Braintree這個Paypal旗下的服務(wù),Paypal相當(dāng)于咱天朝的支付寶。它的SDK適用 Java, Android,iOS等等服務(wù)端以及客戶端。文章主要談?wù)刬OS端的集成。
申請賬號
這個是公司領(lǐng)導(dǎo)注冊的,香港的公司。聽說國內(nèi)的賬號不能用或者限制很多
Braintree 工作流程原理

移動端其實很簡單。進入支付頁面像服務(wù)器發(fā)送一個請求,服務(wù)器給你返回client token 我們拿著這個client token 去像braintree拿支付的隨機數(shù). 這個隨機數(shù)返回給后臺 后臺拿著這個支付隨機數(shù)付款 然后告訴我們。具體實現(xiàn)代碼下方有貼出來。
客戶端集成
官方文檔其實很詳細了,這里把步驟在列一下.客戶端集成我們依賴cocoaPods 首先根據(jù)需求,你的支付方式有多種選擇。這里我們只是先做了信用卡和paypal。其實還有很多,還有Venmo,像蘋果還有Apple Pay.
Podfile文件
#國外支付
pod 'BraintreeDropIn'
pod 'Braintree/PayPal'
pod 'Braintree/Apple-Pay'
這里只集成了3種。
注意

這里如果使用了最新官方的Drop-in的UI,iOS版本要從iOS9開始了。
paypal
因為涉及到H5頁面支付或者應(yīng)用跳轉(zhuǎn),需要設(shè)注冊一個URL類型
1.在Xcode中,在Project Navigator中點擊您的項目,然后導(dǎo)航到App Target > Info > URL Types
2.點擊[+]添加新的URL類型
3.在URL Schemes下,輸入您的應(yīng)用切換返回URL方案。該方案必須以您的應(yīng)用程序的Bundle ID開始,并致力于Braintree應(yīng)用程序切換返回。例如,如果應(yīng)用程序包ID是com.your-company.Your-App,那么您的URL方案可能是com.your-company.Your-App.payments。

比如在我項目中 .payments前面就是我項目的Bundle ID
設(shè)置好了之后 在AppDelegate導(dǎo)入
#import "BraintreeCore.h" //國外支付
之后再在AppDelegate中的application:didFinishLaunchingWithOptions:實現(xiàn),使用setReturnURLScheme:與您在上面設(shè)置的值
[BTAppSwitch setReturnURLScheme:@"DiDaWatchEBiaoPing-en.com.payments"];
然后在您的應(yīng)用程序委托中,將支付授權(quán)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;
}