iOS 支付宝集成

  其实集成之前总觉得这是一个高大上的技能,可是真正掌握之后就会觉得比tableview还简单。。。废话不多说,下面把集成支付的流程跟大家讲一下,有不对的地方欢迎指正

  首先集成支付功能之前,会有专门的人向支付宝申请合作商户,顺利的话,会拿到两个关键的东东,一个叫partner(合作商户的唯一标识),一个叫私钥(数据传输时必不可少的一个工具参数),这两个参数会在专门人员申请好之后,直接告诉我们,或者通过公司的服务器返回,有了这两个参数,剩下的工作就简单啦(具体怎么申请合作商户和生成公钥私钥,还请看支付宝开发者平台)

  支付的流程大体可以这样描述:

1:首先移动端需要向公司的服务器请求商品信息     

2:请求成功,服务器返回商品信息给移动端    

3:移动端拿着服务器返回的各种信息,取自己需要的生成一个订单(商品名,描述,金额,回调地址等等)需求不同返回不同,由商户自行定义,但是订单中一定会有这么几个参数(partner:2088开头的商户唯一标示,privateKey:加密时候需要用到的密钥(有java,php和C#三种,根据公司服务器不同自选择),有时也需要传一个叫做seller的参数:支付宝账号)!此时订单需要的参数信息都已准备完毕,开始下订单,个人觉得这个过程是整个支付流程的核心.

    3_1:这里需要用到支付宝的一个关键类(Order.h),专门用于生成订单.首先alloc init一个Order实例,将从后台返回的,需要用到的订单信息一次赋值给Order类的各个属性,属性多种多样,开发者们不必担心需要传的订单信息没有对应的属性,就算没有也可以自己手动给Order添加一个,但是,但是,但是,用不到的属性一定要删除,一定要删除,一定要删除,否则可能会为后续的工作带来影响,其中上文提到的两个重要参数(partner和privateKey),在这一步需要将参数partner赋值给order的partner属性

    3_2:订单信息一次赋值给Order属性之后,需要生成一个待签名的字符串,我们只需要调用Order的description方法,就能轻轻松松生成一个等待下一步签的字符串

    3_3:这里需要用到支付宝的另一个关键类(DataSinger.h),用于签名上一步生成的字符串,并进行base64编码和URLEncode.  首先我们要将获取到的私钥(私钥可以认为是一个字符串)加工一下,去掉里面的空格和换行,紧接着通过私钥创建一个“签名的工人”,这个签名的工人会将上一步生成的字符串进行签名,生成一个签名过后的字符串

    3_4:最后一步,将生成的签名过后的字符串转化成订单字符串(也就是加密),传给支付宝服务器进行支付,这一步只需调用一个方法,有两个参数,一个是刚刚完成签名的订单字符串,一个是用于跳转的配置信息



下面是具体过程

  part1:导入支付宝所需的框架,一个都不能少

如果缺少两个.a文件,xcode会找不到openssl和Util两个文件夹里面的文件


  part2:添加相关配置:这是支付成功跳转的配置信息

其中info->URL types中的第三个配置信息室支付宝的,剪头指向的两处信息可按格式随意填写,但是稍后在支付的页面中代码也会用到,一定要保证此处所写和代码中的一致,一定要保证此处所写和代码中的一致,一定要保证此处所写和代码中的一致(刚刚3_4中的配置信息参数),重要的事说三遍,同时,此处填写完之后,会在info.plist文件中自动生成一份,为了保险起见我都是手动在ifo.plist中写一遍,否则没有的话会造成支付成功之后不能跳转回原界面


  part3:全部配置完成之后,开始创建一个Order类,并将从服务器获取到的订单信息一次赋值给Order属性



  part4:调用descript方法生成一个等待签名的字符串



  part5:将字符串签名


其中str为私钥,先在别处将私钥进行去掉空格和换行操作后,赋值给str


  part6:将签名过后的字符串加密生成订单字符串,加密类型可以写死,也可以由后台获取,我这里是后台获取


这一步就好像将上面生成的两个字符串拼接到一起,中间加了RSA加密


  part7:最后一步,调用支付宝支付block完成支付


其中参数appScheme为配置信息,一定要跟info.plist和info中相同,一定要跟info.plist和info中相同,一定要跟info.plist和info中相同!重要的事说三遍


到此为止,大功告成,欢迎批评指正,在下还只是一介小菜,如果有疑问欢迎加入iOS技术交流群 487599875 一起成长

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值