iOS接入國際支付Stripe和Braintree

前言

最近在開發(fā)國際版APP時需要用到支付,由于資料比較少,所以這里記錄一下Braintree和Stripe的使用埃儿。

常用的國際支付

  • Braintree 是 PayPal 旗下的服務(wù)截亦,所以如果要支持 PayPal 賬戶結(jié)算就只能使用 Braintree,可用單獨接入Paypal晶姊,但是單獨接入Paypal的單筆交易費率是比Braintree高很多的扒接。
  • Stripe 是一家做支付的公司。他們的目標(biāo)是们衙,進一步簡化支付流程钾怔。
    在我使用這兩種支付時,確實發(fā)現(xiàn)Stripe的集成要比Braintree簡潔蒙挑,集成比較方便和快捷宗侦。公司由于費率的問題還是選擇了Stripe,因為paypal的費率是比較高的忆蚀,Braintree是paypal旗下的原因吧矾利,信用卡支付方式在兩種平臺費率是一樣的,但其他方面可能Stripe更優(yōu)一些馋袜。

    以下是國外一篇網(wǎng)站上男旗,對strip和braintree的對比!
    Braintree和Stripe對比

建議

如果用戶人群使用Paypal的比例比較高時,最好還是使用Braintree欣鳖。相反察皇,則使用stripe,開發(fā)起來是非常快捷和舒適的,而且還支持支付寶和微信观堂,這點對我們國內(nèi)開發(fā)者也挺友好让网。

Braintree接入步驟

首先我們需要了解一下Braintree的支付流程,Braintree的工作原理如下圖:


Braintree支付流程
  1. 你的APP會從你的服務(wù)器請求一個client token师痕,用來初始化客戶端的SDK
  2. 你的服務(wù)器用服務(wù)端SDK可以生成一個client token溃睹,用來發(fā)送給客戶端
  3. 一旦你的客戶端SDK初始化了,顧客點擊提交了支付信息胰坟,調(diào)用SDK提交支付信息因篇,會返回一個payment method nonce
  4. 然后你需要把這個payment method nonce發(fā)送給你的服務(wù)器
  5. 你的服務(wù)器接收到客戶端傳遞過來的payment method nonce,然后用服務(wù)端的SDK創(chuàng)建一筆交易

注冊沙箱賬戶

1. 獲取client key

braintree沙箱賬戶注冊
注冊過程非常簡單笔横,這里只是測試賬戶竞滓,所以比較快。

在沙箱首頁點設(shè)置按鈕吹缔,選擇API進入商佑,這里點擊頁面中的 + Generate New Tokenization Key 可以創(chuàng)建一個上面支付流程里提到的client token(自己的服務(wù)器還未提供這個借口,所以可以自己手動生成一個key用來測試)厢塘。

2. 導(dǎo)入Client SDK
使用 CocoaPods

在pod文件中添加以下代碼導(dǎo)入SDK

pod 'BraintreeDropIn'
使用 Carthage
  • 在Cartfile文件里添加:github "braintree/braintree-ios-drop-in"

  • 需要添加如下framekwork

BraintreeDropIn.framework
BraintreeUIKit.framework
BraintreeCard.framework
BraintreeCore.framework
BraintreePaymentFlow.framework
PayPalOneTouch.framework
PayPalDataCollector.framework
PayPalUtils.framework
3. 獲取payment nonce

我這里是只用了信用卡支付來舉例茶没,其他的可以看官方的案例或文檔肌幽。

#import "BraintreeCore.h"
#import "BraintreeDropIn.h"
#import "BraintreeCard.h"

首先初始化cardClient,下圖的卡號信息是Braintree提供的測試卡號抓半,在官方文檔中可以找到

 BTAPIClient *braintreeClient = [[BTAPIClient alloc] initWithAuthorization:clientTokenOrTokenizationKey];
    if(!braintreeClient){
        //clientToken無效
        return;
    }
    BTCardClient *cardClient = [[BTCardClient alloc] initWithAPIClient:braintreeClient];
    BTCard *card = [[BTCard alloc] initWithNumber:@"4111111111111111"
                                  expirationMonth:@"12"
                                   expirationYear:@"2018"
                                              cvv:@"200"];

發(fā)送支付的信息給Braintree獲取payment nonce token

 [cardClient tokenizeCard:card
                  completion:^(BTCardNonce *tokenizedCard, NSError *error) {
                      // Communicate the tokenizedCard.nonce to your server, or handle error
                      NSLog(@"error:%@",error);
                      if(error){
                         
                      }else{
                          NSString * nonce = tokenizedCard.nonce;
                          NSLog(@"nonce:%@",nonce);
                      
                  }];
總結(jié)

如果在上面中能正確獲取到nonce就說明客戶端測試成功了喂急,上面的流程里,聯(lián)調(diào)的時候需要自己服務(wù)器提供兩個接口:

  1. 獲取client token
  2. 發(fā)送payment method nonce給服務(wù)器笛求,然后服務(wù)器創(chuàng)建交易廊移。

以上是用的自定義UI,沒有用Braintree提供的UI探入,其他的支付方式都大同小異狡孔,都是獲取到nonce進行處理,可以參照官方文檔新症,我這里就沒補充了步氏。

Stripe接入步驟

聲明

Stripe最近由于歐洲今年九月SCA的需要,已經(jīng)更新了信用卡支付的Charges API徒爹,其他支付方式會在今年陸續(xù)更新荚醒,所以建議可以看我另外一篇文章關(guān)于Payment Intents API的。iOS Stripe支付升級支持歐洲九月SCA驗證

1. 獲取key

注冊鏈接:

https://dashboard.stripe.com/login

進入控制臺隆嗅,找到如下界面獲取測試的key


Stripe控制臺
2. 初始化sdk

在pod文件中添加以下代碼導(dǎo)入SDK

pod 'Stripe'

在AppDelegate.m中引入并初始化sdk

#import <Stripe.h>
 //配置stripe支付
[Stripe setDefaultPublishableKey: StripeKey];
3. 使用STPPaymentCardTextField

我這里使用非常簡單界阁,直接用的stripe自帶的STPPaymentCardTextField,合適的地方添加該控件

//信用卡付款輸入框
@property (weak, nonatomic)STPPaymentCardTextField *paymentTextField;

添加了STPPaymentCardTextField后胖喳,要記得設(shè)置代理

    self.paymentTextField.delegate = self;

然后實現(xiàn)代理,這里是用來驗證輸入的信用卡信息是否有效泡躯,還有一些其他的代理,如果有需要可以自己去使用

- (void)paymentCardTextFieldDidChange:(STPPaymentCardTextField *)textField {
    // Toggle buy button state
   // self.buyButton.enabled = textField.isValid
    self.viewModel.cardIsValid = textField.isValid;
}
4. 調(diào)用支付丽焊,獲取token

卡的信息在這個field里可以直接拿较剃,然后獲取到的token發(fā)送給服務(wù)器,完成最后一步支付操作

 [[STPAPIClient sharedClient] createTokenWithCard:self.paymentTextField.cardParams
                                          completion:^(STPToken *token, NSError *error) {
                                           
if (error) {                            NSLog(@"error:%@",error.userInfo);                                               }
                                              NSLog(@"token:::%@",token.tokenId);
                                          }];
總結(jié)

stripe的支付文檔比較清晰技健,集成比較快和簡單写穴,控制臺也比較友好。所以如果paypal用戶不多的情況下就可以優(yōu)先使用stripe雌贱,畢竟還支持微信和支付寶啊送。

期待

  • 文章若有些許幫助,請給個喜歡或評論;若沒啥幫助欣孤,請給點建議~

  • 如果有疑問馋没,請在文章底部評論指出,我會火速解決和修正問題降传。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末篷朵,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子婆排,更是在濱河造成了極大的恐慌声旺,老刑警劉巖控硼,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異艾少,居然都是意外死亡,警方通過查閱死者的電腦和手機翼悴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門缚够,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鹦赎,你說我怎么就攤上這事谍椅。” “怎么了古话?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵雏吭,是天一觀的道長。 經(jīng)常有香客問我陪踩,道長杖们,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任肩狂,我火速辦了婚禮摘完,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘傻谁。我一直安慰自己孝治,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布审磁。 她就那樣靜靜地躺著谈飒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪态蒂。 梳的紋絲不亂的頭發(fā)上杭措,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音吃媒,去河邊找鬼瓤介。 笑死,一個胖子當(dāng)著我的面吹牛赘那,可吹牛的內(nèi)容都是我干的刑桑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼募舟,長吁一口氣:“原來是場噩夢啊……” “哼祠斧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拱礁,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤琢锋,失蹤者是張志新(化名)和其女友劉穎辕漂,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吴超,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡钉嘹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了鲸阻。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片跋涣。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鸟悴,靈堂內(nèi)的尸體忽然破棺而出陈辱,到底是詐尸還是另有隱情,我是刑警寧澤细诸,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布沛贪,位于F島的核電站,受9級特大地震影響震贵,放射性物質(zhì)發(fā)生泄漏利赋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一猩系、第九天 我趴在偏房一處隱蔽的房頂上張望隐砸。 院中可真熱鬧,春花似錦蝙眶、人聲如沸季希。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽式塌。三九已至,卻和暖如春友浸,著一層夾襖步出監(jiān)牢的瞬間峰尝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工收恢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留武学,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓伦意,卻偏偏與公主長得像火窒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子驮肉,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容