iOS 微信支付点击左上角返回解决方案
在网了搜了一些解决方案,感觉并不是那么严谨,于是自己动手搞了一下,直接说思路
iOS调起第三方支付和安卓还不一样,安卓是把第三方的支付SDK直接镶嵌在自己的App中,而iOS由于沙盒机制,各个应用之间相互独立,应用之间的调用只有通过系统留下的唯一入口scheme, 所以iOS调起第三方支付是在两个App之间相互切换的。以下从两个角度解析iOS吊起第三方支付
1、支付之前点击取消或者左上返回
(1)点击支付是App显示进入非活跃状态,再进入后台
-[AppDelegate applicationWillResignActive:]
-[AppDelegate applicationDidEnterBackground:]
(2)点击取消时会
-[AppDelegate applicationWillEnterForeground:]
然后回调支付成功失败方法
-[AppDelegate applicationDidBecomeActive:]
(3)由(2可以看出)我们需要做的操作
重点思路
1)定义一个单例类,并定义支付类型属性
typedef enum{
Pay_Type_none = 0,
Pay_Type_wxpay = 1,
Pay_Type_alipay = 2
} Pay_Type;
在点击支付是把Type设置为对应的类型
2)在支付成功失败的回调里把type设置为Pay_Type_none(没有任何类型),这样在其他操作的时候调用-[AppDelegate applicationDidBecomeActive:]不会有任何影响
3)在-[AppDelegate applicationDidBecomeActive:]方法里判断type类型发送相对应的通知
4)在支付控制器接收通知,并结合后台的查询接口查询订单是否支付结果,如果订单支付成功type设置为Pay_Type_none并做成功的操作,如果失败ype设置为Pay_Type_none,做失败的操作
2、支付完成后点击左上返回
一般第三方API是尽量避免这种操作的,但是不排除特殊情况,这种方案按照第一种方案解决就没问题了,但是支付成功后,你把App进程杀死,单例对象随着进程也被释放,那肯定是监听不到了。只有等下次打开App去监听订单结果了
iOS 微信支付点击左上角返回解决方案的更多相关文章
- iOS微信支付集成
概述 iOS微信支付集成 详细 代码下载:http://www.demodashi.com/demo/10735.html 支付宝和微信都是业界的老大哥,相信大家都有所觉得文档.SDK都是各种坑吧(纯 ...
- ASP.NET WEB API微信支付通知接口,返回xml数据,微信服务器不识别问题
原文:ASP.NET WEB API微信支付通知接口,返回xml数据,微信服务器不识别问题 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/MrTra ...
- 小程序 跳转web-view 点击左上角返回需要点击2次才能返回
小程序 跳转web-view 点击左上角返回需要点击2次才能返回 再html页面引入js即可解决 <script type="text/javascript" src=& ...
- ios微信支付成功后点击左上角返回不走回调的问题
最近做微信支付发现ios9以后出现的跳转其他app后左上角有返回xxx功能会影响微信支付回调,情况如图 返回后不走下面的方法 - (BOOL)application:(UIApplication *) ...
- iOS微信支付无法直接返回APP的问题
最近新测个项目,发现在IOS手机的APP上使用微信支付无法直接返回APP. 咨询微信客服,了解到无法直接返回APP的原因是收款配置的APPID为合作商家的APPID,而不是公司APP的APPID. 当 ...
- iOS 微信支付如果遇到跳转只有一个确定请看这里
http://www.cocoachina.com/bbs/read.php?tid-321546.html 今天在联调微信支付,不得不说,和它比起来,阿里的支付sdk真的是太好用了.果然和后端同学在 ...
- iOS 微信支付总结
1.支付流程 https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=8_3 商户系统和微信支付系统主要交互说明: 步骤1:用户在商户APP中选择 ...
- iOS 微信支付
相关资料 SDK下载:https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=11_1 APP端开发步骤说明:https://pay.weixin ...
- iOS微信支付
SDK接入 服务器签名版本 官方已经是建议使用服务器签名来接入微信支付,实际上从安全上考虑,确实是每个客户端不应该知道RAS密钥,也不需要每个客户端都写一遍签名的算法. 服务端接入流程文档:https ...
随机推荐
- 速查笔记(Linux Shell编程<下>)
转载自: http://www.cnblogs.com/stephen-liu74/archive/2011/11/04/2228133.html 五.BASH SHELL编程: 1. 初始化顺 ...
- Node.js 使用jQuery取得Nodejs http服务端返回的JSON数组示例
server.js代码: // 内置http模块,提供了http服务器和客户端功能(path模块也是内置模块,而mime是附加模块) var http=require("http" ...
- Laravel之中间件
一.中间件的作用 HTTP 中间件提供了一个便利的机制来过滤进入应用的 HTTP 请求.例如,Laravel 包含了一个中间件来验证用户是否经过授权,如果用户没有经过授权,中间件会将用户重定向到登录页 ...
- vue-router push
//push 方法一 对象 // this.$router.push({path:'HelloWorld2'}); //push 方法二 命名的路由 // this.$router.push({nam ...
- (十)Thymeleaf用法——Themeleaf内联
5. 内联 [[...]]是内联文本的表示格式,但需要使用th:inline属性(分为text,javascript,none)激活. 5.1 文本内联 <p th:inline=&quo ...
- Lambda Expression in C#
1.Expression Expression<Func<double, double>> exp = a => Math.Sin(a); 委托类型Func<dou ...
- webstore 与 热编译的配置冲突
这个勾去掉就会自动编译了!
- Mac下面的SecureCRT(附破解方案) 更新到最新的7.3.2(转)
转自 http://bbs.weiphone.com/read-htm-tid-6939481.html 继续更新到7.3.2的破解.只是升级了下secureCRT到7.3.2,方法还是不变 相信很多 ...
- objective-C中的扩展方法与partial class
在c#中要扩展一个现有类非常easy,比方这样: ? 1 2 3 4 5 6 7 public static class Utils { public static void PrintTo ...
- Python基础之函数与装饰器
阅读目录 一.为什么要使用函数 二.函数的定义与调用 三.函数返回值 四.函数的参数 五.本章小结 六.装饰器 一.函数流程图: 函数名的命名规则: 1.函数名必须由字母下划线数字组成,不能是关键字和 ...