iOS 接入國(guó)際支付 Stripe 和 Braintree

來源: 氪技人
作者:傷心的EasyMan
時(shí)間:2021-10-09
20145
Braintree 是 PayPal 旗下的服務(wù),所以如果要支持 PayPal 賬戶結(jié)算就只能使用 Braintree,可用單獨(dú)接入Paypal,但是單獨(dú)接入Paypal的單筆交易費(fèi)率是比Braintree高很多的。


前言

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

常用的國(guó)際支付

  • Braintree 是 PayPal 旗下的服務(wù),所以如果要支持 PayPal 賬戶結(jié)算就只能使用 Braintree,可用單獨(dú)接入Paypal,但是單獨(dú)接入Paypal的單筆交易費(fèi)率是比Braintree高很多的。

  • Stripe 是一家做支付的公司。他們的目標(biāo)是,進(jìn)一步簡(jiǎn)化支付流程。
    在我使用這兩種支付時(shí),確實(shí)發(fā)現(xiàn)Stripe的集成要比Braintree簡(jiǎn)潔,集成比較方便和快捷。公司由于費(fèi)率的問題還是選擇了Stripe,因?yàn)閜aypal的費(fèi)率是比較高的,Braintree是paypal旗下的原因吧,信用卡支付方式在兩種平臺(tái)費(fèi)率是一樣的,但其他方面可能Stripe更優(yōu)一些。

    以下是國(guó)外一篇網(wǎng)站上,對(duì)strip和braintree的對(duì)比!

6.JPG

Braintree和Stripe對(duì)比

建議

如果用戶人群使用Paypal的比例比較高時(shí),最好還是使用Braintree。相反,則使用stripe,開發(fā)起來是非常快捷和舒適的,而且還支持支付寶和微信,這點(diǎn)對(duì)我們國(guó)內(nèi)開發(fā)者也挺友好。

Braintree接入步驟

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

7.JPG


Braintree支付流程

  1. 你的APP會(huì)從你的服務(wù)器請(qǐng)求一個(gè)client token,用來初始化客戶端的SDK

  2. 你的服務(wù)器用服務(wù)端SDK可以生成一個(gè)client token,用來發(fā)送給客戶端

  3. 一旦你的客戶端SDK初始化了,顧客點(diǎn)擊提交了支付信息,調(diào)用SDK提交支付信息,會(huì)返回一個(gè)payment method nonce

  4. 然后你需要把這個(gè)payment method nonce發(fā)送給你的服務(wù)器

  5. 你的服務(wù)器接收到客戶端傳遞過來的payment method nonce,然后用服務(wù)端的SDK創(chuàng)建一筆交易

注冊(cè)沙箱賬戶

1. 獲取client key

braintree沙箱賬戶注冊(cè)
注冊(cè)過程非常簡(jiǎn)單,這里只是測(cè)試賬戶,所以比較快。

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

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,下圖的卡號(hào)信息是Braintree提供的測(cè)試卡號(hào),在官方文檔中可以找到

 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就說明客戶端測(cè)試成功了,上面的流程里,聯(lián)調(diào)的時(shí)候需要自己服務(wù)器提供兩個(gè)接口:

  1. 獲取client token

  2. 發(fā)送payment method nonce給服務(wù)器,然后服務(wù)器創(chuàng)建交易。

以上是用的自定義UI,沒有用Braintree提供的UI,其他的支付方式都大同小異,都是獲取到nonce進(jìn)行處理,可以參照官方文檔,我這里就沒補(bǔ)充了。

Stripe接入步驟

聲明

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

1. 獲取key

注冊(cè)鏈接:

https://dashboard.stripe.com/login

進(jìn)入控制臺(tái),找到如下界面獲取測(cè)試的key

8.JPG

Stripe控制臺(tái)

2. 初始化sdk

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

pod 'Stripe'

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

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

我這里使用非常簡(jiǎn)單,直接用的stripe自帶的STPPaymentCardTextField,合適的地方添加該控件

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

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

    self.paymentTextField.delegate = self;

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

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

卡的信息在這個(gè)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的支付文檔比較清晰,集成比較快和簡(jiǎn)單,控制臺(tái)也比較友好。所以如果paypal用戶不多的情況下就可以優(yōu)先使用stripe,畢竟還支持微信和支付寶。

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于氪技人,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
Paypal、Stripe、Braintree,跨境電商金流第三方支付到底用哪家?
Paypal、Stripe、Braintree,跨境電商金流第三方支付到底用哪家?
做跨境電子商務(wù)生意,電商網(wǎng)站的金流肯定是一個(gè)最大的麻煩,Paypal或是Stripe和Braintree則是國(guó)際上大家最常用的金流整合第三方支付服務(wù)商。這些金流服務(wù)大幅簡(jiǎn)化網(wǎng)站付費(fèi)過程,都讓消費(fèi)者只要填入Email、信用卡號(hào)、CVC信用卡驗(yàn)證碼就可結(jié)帳,但到底該用哪家,之間又有什么不同,這篇給大家說分明。
Braintree
PayPal
跨境支付
2021-10-092021-10-09
iOS 接入國(guó)際支付 Stripe 和 Braintree
iOS 接入國(guó)際支付 Stripe 和 Braintree
Braintree 是 PayPal 旗下的服務(wù),所以如果要支持 PayPal 賬戶結(jié)算就只能使用 Braintree,可用單獨(dú)接入Paypal,但是單獨(dú)接入Paypal的單筆交易費(fèi)率是比Braintree高很多的。
Braintree
iOS
跨境支付
2021-10-092021-10-09
Braintree-國(guó)外支付對(duì)接(三) 之Customer UI
Braintree-國(guó)外支付對(duì)接(三) 之Customer UI
Braintree-國(guó)外支付對(duì)接(二) 中的支付按鈕的生成是braintree自帶的樣式和事件控制的,即drop-in,生成的界面我們不能過多的更改和控制。所以假如我們想要自己編寫控件,自己控制樣式,但又能正常點(diǎn)擊觸發(fā)支付等事件。那么就使用Customer UI.
Braintree
跨境支付
2021-10-092021-10-09
Braintree-國(guó)外支付對(duì)接(二)
Braintree-國(guó)外支付對(duì)接(二)
在前文國(guó)外支付對(duì)接:Braintree(一)的基礎(chǔ)上已經(jīng)拿到了相關(guān)配置信息,接下來就是碼代碼了,這里完成的主要功能是支付與退款。
Braintree
跨境支付
2021-10-092021-10-09
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家