iOS - Developer - OC 进阶大全

iOS 微信、支付宝H5支付返回APP趟过的坑

2020-10-28  本文已影响0人  zwwuchn

本文旨在提醒接入微信、支付宝支付后返回APP可能会出现的问题, 至于如何接入, 可以百度, 网上的接入代码大同小异, 基本上没什么差别, 可以说是从一个源码复制粘贴出来的, 逻辑没问题, 问题就在于写文章的人只复制粘贴发出来没有验证过, 如果运气好的话刚好会没问题

进入主题

微信支付

基本原理是在webView里边拦截微信支付请求, 在请求连接上增加redirect_url=xxx.com://

注意

这里有个坑, 基本上网上的所有文章在这里都会告诉你把自定义的schemes拼到xxx处, 运气好的话可能你就成功了
其实这里拼的不只是schemes, 简单的说这里应该是xxx.xxx.com://,头一个xxx可能是你以前定义过得APPschemes, 后边的xxx.com是公司注册微信支付的一级域名(一级域名 例如xxx.abc.com), 如果你只拼了schemes, 就会一直报"商户参数异常,请联系商家", 此处必须有支付的域名在后边, 这也是所有的文章走到这一步都是以.com结尾拼接url的原因
这样就可以做到跳转微信支付, 但是会在支付完成之后停留在微信界面, 什么原因

注意

这里是微信回跳的坑, 刚才是把schemes跟域名拼在一起形成的xxx.xxx.com, 这个时候支付没问题, 但是拼接后的url是无法从中截取到schemes的, 所以也就不会回跳到APP, 所以我们要做的就是把这个拼接了支付域名的url即xxx.xxx.com来替换以前自定义的schemes, 现在的schemes就变成了xxx.xxx.com, 然后这个时候再拼接url的时候就可以直接用schemes了, 不需要再拼接域名, 这也是所有文章在拼接是只是告诉你需要把schemes拼在这里, 然而你拼了也达不到想要效果的原因

微信支付结语

避免了上边的坑的话, 剩下的支付返回后出现白屏或者支付参数问题都是小问题, 网上的文章中对于这些错误的处理可以使用,都一样

支付宝支付

支付宝支付原理, 主要是把支付URL中schemes默认的参数"alipays"换成我们自己的schemes就可以了, 然后经过edcoding和encoding的操作基本就没什么问题, 支付宝的支付总体来说比微信好得多, 所以一般没什么问题, 网上的例子可以直接抄就行
这里我建议先做微信支付回跳, 因为这个时候原先定义的schemes已经改变了, 再做支付宝的就可以直接用, 不会造成做完支付宝的以后做微信,会碍于schemes不想轻易改变的思想而耽误时间(纯属个人建议)

请关注我的专题 iOS - Developer - OC 进阶大全

上一篇下一篇

猜你喜欢

热点阅读