iOS oc版Stripe支付

作者: Baoy的简书 | 来源:发表于2016-09-21 14:57 被阅读1679次

       之前有个项目是要做海外支付业务,最后大家决定用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

    相关文章

      网友评论

      • kongkk:你好!我想问一下关于present STPAddCardViewController页面,填写完信息之后,点击右上角的Done按钮,页面提示You did not provide an API Key , though you did set your Authorzation header to "Bearer".Using Bearer auth,Your Authorization header should look something like "Authorization";是怎么回事呢?里面说没有提供key,但是我明明在App启动完成的方法中初始化了PublicKey了。求解!感激不尽!!!!
      • 7f6f478c3a55:你好,我能问下,stripe的sdk在哪里下载吗:sob: 我找了好久也没有找到
      • L不来我不走:能给个Demo吗、英文水平不咋地、看文档好费劲。m17186781705@163.com
        Baoy的简书:https://github.com/stripe/stripe-ios 我用的官方demo,直接写在工程中的
      • ZHANGKAILUN_:说的的确有点坑,一些重要的类你都没有说,真的,如果没有足够的经验还是不要写这种帖子,容易误导很多看你帖子的朋友,不如直接去SOF看了
        Baoy的简书:@ZHANGKAILUN_ 哈哈哈哈 是是是
      • e759bbb80eb4:STPPaymentContext 这个类你肯定用到了吧,怎么用的,你也不说明一下。净扯些没用的
        Baoy的简书:@DLoveIsSweety 哈哈哈 对对对
      • e1af655be4de:你好, 写的挺不错的, 有一个问题,backend 是客户端集成的, 还是server集成的
        Baoy的简书:@DLoveIsSweety 就瞎写的 _(:зゝ∠)_
        e759bbb80eb4:你这写的啥啊,默认的页面是 由哪个类创建的,传什么参数,关键的你一个都没写。你这样很容易误导别人的
        Baoy的简书:server集成的,这一篇其实主要讲客户端集成Stripe的库以及怎么与服务端交互

      本文标题:iOS oc版Stripe支付

      本文链接:https://www.haomeiwen.com/subject/jlhaettx.html