前言
以前接入微信和支付宝的支付, 采用的是导入对应的SDK, 调用和返回都是由SDK内部处理, 这一点从操作和集成角度而言, 安全和方便. 但是局限性也是有的:
- 苹果限制虚拟类型的商品等必须使用内购, 也就是说 支付宝和微信的三方支付存在很多的局限性,这个虽然是为用户的账户资金安全考虑,
但是就目前的国内实际情况而言, 这是一个麻烦(和谐一下) - 在一定程度上增加了包体积的大小
- 增加了审核的成本
那么, 问题来了, 有没有更简单的方案呢, 答案当然是有的.
网页支付
微信和支付宝的网页支付营运而生…
优点:
- 采用网页支付, 空间上不需要在项目中导入SDK增加体积
- WEB一站式解决支付问题
可以更好地应对审核(和谐一下)
缺点:(学习使我快乐, 忽略吧)
- H5或者网页的对接经验
- 增加了学习的成本
- 需要单独处理支付宝和微信的链接
应用场景:
目前我遇到的大部分是活动网页.
正文
这边文章目的是使用网页支付, 更好的适配审核, 所以, 有舍有得, 我们不去看缺点, 毕竟, 就过审而言, 这点不算什么…
进入正题, 网页支付, 就是使用WKWebView打开网页, 由网页调用支付宝or微信的网页的SDK, 这部分由前端同学(甩锅中…)完成, 我们这边通过WK的代理获取当前请求的网络连接,判断是不是需要openURL到微信或者支付宝.
1. 设置URL Scheme
这个相当于你App的铭牌, 别的App想要跳转到你的App的时候, 就需要知道你App的铭牌,一个App可以设置多个.
2. AppDelegate( 这一步 看大家需求操作吧 )
设置进入前台(跳转回来) 处理服务器需要刷新的网页
3.1 - 微信网页支付
大致流程:
- 获取当前请求的链接,判断你是不是微信的
- 保存连接中的参数名为redirect_url的对应数据为appWillBecomeActiveWebReloadUrlString,
- 替换redirect_url = “自定App的URLScheme” 用于,
- 替换完后, 重新请求连接,
- 跳转,
- 支付完成, 返回app(能返回是因为第3步)
- 在AppDelegate的程序进入前台的代理方法中处理当前网页刷新之前保存的appWillBecomeActiveWebReloadUrlString(至于这个保存的appWillBecomeActiveWebReloadUrlString的链接地址内容是啥,就看你们前端如何处理了).
// 判断非返回或者刷新
if (!(navigationAction.navigationType == WKNavigationType.backForward || navigationAction.navigationType == WKNavigationType.reload)) {
// 微信判断
let pre_string = "https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb"
if request.url?.absoluteString.hasPrefix(pre_string) ?? false {
let par = WebPayTool.params(of: navigationAction.request.url)
let params: NSMutableDictionary = NSMutableDictionary(dictionary:par);
if var allKeys = params.allKeys as

本文探讨了网页支付在微信和支付宝上的应用,重点介绍了如何通过替换redirect_url和fromAppUrlScheme参数来实现网页支付,以减少应用体积并简化审核过程。
最低0.47元/天 解锁文章
1万+





