之前有个项目是要做海外支付业务,最后大家决定用stripe支付,但是iOS Stripe支付中文的资料很少,我看到的也只有swift版本的资料,我就整理下自己做oc版Stripe时踩过的坑和一点经验吧。才疏学浅,欢迎指正。
首先stripe支付是一种海外信用卡支付在线支付,只要你输入信用卡号和后面CVC就可以支付了,stripe也提供了很详细的文档:stripe 官方ios文档,直接看文档就可以完成stripe支付的集成,不过如果觉得自己英文不太好,可以看下我做的步骤。
1,导入SDK
有好多导入的方法,我是使用的cocospod导入的:pod Stripe
2,App delegate中集成stripe
在 AppDelegate.m 中
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
[[STPPaymentConfigurationsharedConfiguration]setPublishableKey:kStripePublishableKey];
...
returnYES;
}
其中 kStripePublishableKey 是你在stripe上申请的公钥
stripe还支持Apple pay ,如果要加入Apple pay的话还要加上这句:
[[STPPaymentConfigurationsharedConfiguration] setAppleMerchantIdentifier:@"your apple merchant identifier"];
3,支付页面
stripe的SDK中提供了系统默认的付款页面,我们之前的项目就是采用的系统默认的付款页面。
1,STPAddCardViewController
这是一个添加信用卡的页面,弹出后会是一个添加信用卡的界面。假设页面A可以push出STPAddCardViewController,我们就将STPAddCardViewController的delegate设置为A,实现它的回调方法
//添加新的信用卡
STPAddCardViewController*addCardViewController = [[STPAddCardViewControlleralloc]init];
addCardViewController.delegate= self;
其中比较关键的代理方法有:
// 添加信用卡的取消回调
- (void)addCardViewControllerDidCancel:(STPAddCardViewController*)addCardViewController
// 添加信用卡后我们可以拿到stripe返回的一个STPToken,而这个token里面有后端需要的参数,token_id 和 created 这是后台实际支付时需要的,将他们传给后台,回调成功后就代表付款成功了
- (void)addCardViewController:(STPAddCardViewController*)addCardViewControllerdidCreateToken:(STPToken*)tokencompletion:(STPErrorBlock)completion
2,STPPaymentCardTextField
这是一个选择新卡支付的页面,选择卡后同样进行回调实现支付
// 这是他的回调方法
-(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;}
以上就是很简单的stripe支付行为,官方也写的很详细,如果可以看的话看英文文档是最好的,官方也提供了一个demo:demo地址。结合着demo应该很快就可以实现stripe支付。
我对stripe支付的理解是客户端这边拿到用户的token的相关信息,然后后台用这些信息去实现真正的付款行为,所以客户端这边的工作只是一个获取token和实现回调的工作,真正的支付行为是发生在后台的。
写的不对的地方欢迎大家指正,大家共同进步。
我的github:Baoy