集成支付宝和微信支付的区别

第一点:

1、(1)调用支付宝支付接口时:如果没有安装手机客户端,会进入h5页面进行支付;支付完成的回调方法(安装客户端和或没有安装都会回到该block内):

安装客户端和或没有安装都会回到该block内

(2)既然支付安装客户端和或没有安装都会回到该block内,有人会问那为什么要在AppDelegate中也设置回调方法,如下

既然要在这里设置支付回调的方法肯定是有原因的,那什么时候会回到该回调方法内呢?答案就是当跳转到支付宝客户端(⚠️是客户端)时,如果手欠退出或杀死了自己的app,那当你支付完后会跳到AppDelegate中的block块中。哈哈哈,解决你部分疑惑没!

(3)微信就没有支付宝那么麻烦了,发起微信支付时:如果没有安装手机客户端则不会进行支付

第二点:

2、微信支付完成后回调的方法永远都是回到如下两个方法(不管你有没有杀死程序)

第一会回到这里

真正你需要在支付完成后处理的方法是如下

在该方法中,从后台得到真正的支付结果,并执行支付完成的一些操作


支付的一些总结

1、既然需要跳转到其他应用,则需要设置“其他应用的白名单”,这是必须的

2、为了支付完后能成功跳回自己的app,需要设置URL Schemes,一般以在开放平台成功申请应用时给你的appid做为Schemes。如果你支付完成之后没有成功跳回你的应用程序,你可以看看你是否设置了正确的URL Schemes

3、在我看来,支付真正难在了后台,我们毕竟是直接从后台得到的签名加密的订单字符串,利用她直接发起支付而已

4、我支付的时候遇到了一个很深的坑:支付宝支付后台生成的的签名加密的订单字符串,数据请求我们都用的第三方AFNetWorking,(1)AFNetWorking的JSON解析默认库只支持text/json,application/json,text/javascript,所以如果出现code=-1016错误则说明当前的JSON解析模式是text/html,所以要加上这段代码:

code=-1016

随即又出现code = 3840,原因:json数据中的不规范造成的解决方法,json数据中也许有转义字符的出现导致了这种情况(大概解决方法)把解析得到的 NSData数据解析成为字符串形式,判断数据中是否含有这些转义字符,含有的话用空字符串替换掉,再把字符串转换为NSData类型的数据,然后进行解析为JSon数据。确实是如此:我们后台返回的签名加密字符串含有“&amp”,在这里,我们为的就是得到这个字符串,所以只需要把返回的NSData转换成NSString,去掉特殊字符就行。我们就需要拿到没有json解析前的NSData数据,一句代码搞定:

code = 3840


哈哈哈哈,支付分享就到这里啦,用简书safari总是闪退,这是咋回事

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,246评论 4 61
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,969评论 19 139
  • 支付宝简介文档 (适用于ydm-java接口与后台,如有误入,但愿也能给您带来帮助) 此文档写于2017年3月,只...
    隔壁付叔叔阅读 17,149评论 3 19
  • 起初并未觉得自己是多恋家的人,直到2007年冬天背起行囊去当兵准备蹬车的那一刻,我才意识到要离家很久才会回来...
    小柳飞刀阅读 926评论 6 20
  • 杨慧霞 洛阳 焦点解决讲师二期班成员 坚持分享第675天 《焦点解决》读书会+1天 第一次主持读书会不免忐...
    yhx慧心慧语阅读 303评论 0 1