项目中老版的支付宝sdk是在去年年中的时候接的,私钥是直接放在项目里的,前几天的时候支付宝官方发了一份通知函建议为防止私钥被盗用需要将私钥和签名流程放在后台。而且新版的sdk是加了支付被篡改的验证的。项目就更新了下新版的sdk。记录一下遇到的问题和流程。
首先打开蚂蚁金服及开放平台的文档中心,搜索移动支付。下载SDK&DEMO。DEMO中包含有服务端和移动端demo,取所需即可。
tips:为防止项目报错先copy出来一份更新成功后再修改源项目。
1.删除项目中原sdk及签名加密相关文件。
2.使用下载的官方demo中的对应文件替换
3.对着demo从新添加一遍依赖库,sdk,和静态库。重复的会自动替换掉老的。
4.新版本sdk签名部分字段可能会有变化,修改即可。
新版本需要注意的地方:
1.AppDelegate中添加iOS9.0后的新api,官方demo中有。
// NOTE: 9.0以后使用新API接口
接完后测试的支付宝钱包的时候发现这个支付结果回调不走了。
[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
NSLog(@"reslut = %@",resultDic);
}];
查找了更新日志才知道回调逻辑有变化。
2. 支付结果返回统一,便于用户接入。
原有方案:payOrder:fromScheme:callback接口,业务传入callback1,用于支付结果返回;
processOrderWithPaymentReulst:standbyCallback接口,业务传入callback2,用于支付结果返回;
一般一次支付中(跳支付宝客户端支付),都会涉及到这两个接口;原有的规则是callback1存在,则统一调用callback1返回支付结果给业务方,若callback1不存在(app被杀掉的情况),则调用callback2返回支付结果给业务方。
现有方案:payOrder:fromScheme:callback接口,业务会传入CompletionBlock1(本地没有安装支付宝客户端的情况下(走H5收银台),会通过该CompletionBlock1反馈结果);
processOrderWithPaymentResult:standByCallback接口,业务会传入CompletionBlock2(本地安装了支付宝客户端的情况下,会通过该CompletionBlock2反馈结果)。
现有方案中是在AppDelegate中的方法是调用支付宝钱包(客户端)的结果回调。
也就是:processOrderWithPaymentResult:standByCallback接口
而调用h5支付的时候的结果回调是使用的支付界面的回调。
也就是:payOrder:fromScheme:callback
升级过程中也就遇到了这么多问题,也没多少东西。希望能够帮到有需要的人。