? ?之前有個(gè)項(xiàng)目是要做海外支付業(yè)務(wù),最后大家決定用stripe支付,但是iOS Stripe支付中文的資料很少,我看到的也只有swift版本的資料,我就整理下自己做oc版Stripe時(shí)踩過(guò)的坑和一點(diǎn)經(jīng)驗(yàn)吧。才疏學(xué)淺,歡迎指正。

? 首先stripe支付是一種海外信用卡支付在線支付,只要你輸入信用卡號(hào)和后面CVC就可以支付了,stripe也提供了很詳細(xì)的文檔:stripe 官方ios文檔,直接看文檔就可以完成stripe支付的集成,不過(guò)如果覺(jué)得自己英文不太好,可以看下我做的步驟。
1,導(dǎo)入SDK
有好多導(dǎo)入的方法,我是使用的cocospod導(dǎo)入的:pod Stripe
2,App delegate中集成stripe
在 AppDelegate.m 中
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
[[STPPaymentConfigurationsharedConfiguration]setPublishableKey:kStripePublishableKey];
...
returnYES;
}
其中 kStripePublishableKey 是你在stripe上申請(qǐng)的公鑰
stripe還支持Apple pay ,如果要加入Apple pay的話還要加上這句:
[[STPPaymentConfigurationsharedConfiguration] setAppleMerchantIdentifier:@"your apple merchant identifier"];
3,支付頁(yè)面
stripe的SDK中提供了系統(tǒng)默認(rèn)的付款頁(yè)面,我們之前的項(xiàng)目就是采用的系統(tǒng)默認(rèn)的付款頁(yè)面。
1,STPAddCardViewController
這是一個(gè)添加信用卡的頁(yè)面,彈出后會(huì)是一個(gè)添加信用卡的界面。假設(shè)頁(yè)面A可以push出STPAddCardViewController,我們就將STPAddCardViewController的delegate設(shè)置為A,實(shí)現(xiàn)它的回調(diào)方法
//添加新的信用卡
STPAddCardViewController*addCardViewController = [[STPAddCardViewControlleralloc]init];
addCardViewController.delegate= self;
其中比較關(guān)鍵的代理方法有:
// ? ?添加信用卡的取消回調(diào)
- (void)addCardViewControllerDidCancel:(STPAddCardViewController*)addCardViewController
//? 添加信用卡后我們可以拿到stripe返回的一個(gè)STPToken,而這個(gè)token里面有后端需要的參數(shù),token_id 和 created 這是后臺(tái)實(shí)際支付時(shí)需要的,將他們傳給后臺(tái),回調(diào)成功后就代表付款成功了
- (void)addCardViewController:(STPAddCardViewController*)addCardViewControllerdidCreateToken:(STPToken*)tokencompletion:(STPErrorBlock)completion
2,STPPaymentCardTextField
這是一個(gè)選擇新卡支付的頁(yè)面,選擇卡后同樣進(jìn)行回調(diào)實(shí)現(xiàn)支付
// 這是他的回調(diào)方法
-(void)paymentCardTextFieldDidChange:(STPPaymentCardTextField*)textField{NSLog(@"Card number: %@ Exp Month: %@ Exp Year: %@ CVC: %@",textField.cardParams.number,@(textField.cardParams.expMonth),@(textField.cardParams.expYear),textField.cardParams.cvc);self.buyButton.enabled=textField.isValid;}
? ?以上就是很簡(jiǎn)單的stripe支付行為,官方也寫(xiě)的很詳細(xì),如果可以看的話看英文文檔是最好的,官方也提供了一個(gè)demo:demo地址。結(jié)合著demo應(yīng)該很快就可以實(shí)現(xiàn)stripe支付。
? ?我對(duì)stripe支付的理解是客戶端這邊拿到用戶的token的相關(guān)信息,然后后臺(tái)用這些信息去實(shí)現(xiàn)真正的付款行為,所以客戶端這邊的工作只是一個(gè)獲取token和實(shí)現(xiàn)回調(diào)的工作,真正的支付行為是發(fā)生在后臺(tái)的。
寫(xiě)的不對(duì)的地方歡迎大家指正,大家共同進(jìn)步。
我的github:Baoy