iOS13 微信支付openSDK1.8.6 回调失败

IDE及测试环境

xcode 11.3.1(11C504)

iPhone设备:iOS13.3.1

微信 v7.0.11

问题描述

集成微信支付已经成功,但是不走回调,也就是说APP不能立即知道是不是支付成功了。

好些场景情况下,我们是要作些处理的,这样更加的提高用户的体验,比如说充值,我们需要立即给用户的余额加上。

解决方法

1)在iOS13中,引入了分屏,这个是之前没有的,当您用xcode11建一个新的工程的时候,会发现多了一个SceneDelegate文件,这个文件就包括了场景Scene

这里面可以建window对象,也就是说这个从AppDelegate中分离出来了,目的就是为了支持分屏。

这种情况下,微信支付回调,会走SceneDelegate

2)那么如何处理呢,有些设备因为比较老,还不是iOS13,比如iOS12等等,有些微信的版本并没有超过7.0.5,那么微信支付还是会走AppDelegate

3) 这样的话,我们既要满足iOS13, 又要满足之前的版本,可以作以下处理:

3.1)加入版本判断

3.2)将以前不支持的SceneDelegate,加入进来即可

下面是具体的实现:

  • 在AppDelegate加入方法,让AppDelegate知道有SceneDelegate
  •     //这个方法就是将SceneDelegate关联起来    @available(iOS 13.0, *)
        func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
            // Called when a new scene session is being created.
            // Use this method to select a configuration to create the new scene with.
            return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
        }
        //这个方法也可以不加
        @available(iOS 13.0, *)
        func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
            // Called when the user discards a scene session.
            // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
            // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
        }
    

    //这个方法加一个if,通过不同的版本来干不同的活。

  • func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
            //注册微信打印日志
            WXApi.startLog(by: WXLogLevel.init(rawValue: 1)!) { (msg) in
                print(msg)
            }
            //注册APPID
            let result = WXApi.registerApp(WX_APPID, universalLink: WX_UniversalLink)
            print(result)
    
            if  #available(iOS 13.0, *)  {
                print("如果是iOS13,那么进入scene")
            }else{
                window = UIWindow()
                window?.frame = UIScreen.main.bounds
                window?.rootViewController = ViewController()
                window?.makeKeyAndVisible()
            }
    
            return true
        }
    

      

原文地址:https://www.cnblogs.com/jiduoduo/p/12442070.html

时间: 2024-10-05 03:27:48

iOS13 微信支付openSDK1.8.6 回调失败的相关文章

H5调用微信支付,IOS验签失败问题解决

1.package为空时,Android可调用微信支付,但IOS不行 2.package参数必需不能为空 如: https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx20171017112849d63fcc65920397083586&package=1586452094&nonce_str=ooJBSQGN36DOKmIX&sign=B1093E1EB5F289F287E9FF36A4F6D36C 3.支

Android微信支付第一次成功,以后就失败了

醋狸 镥踉 形 昌 丈 蝴 鹂阱 抻全 嗯绾 末咧 簧诋 〓 妯稷 桃 摄谟 滩 呆奥 碟罨 铫唧 委沅 齿狻 茹构 襞ㄚ 梵滋 扣年 逗隧 汁懒 涣酶 絮簋 胱胙 碍 磲 系瑭 春涌 セ岁 憋汐 裙驭 呛 鲔 腻 仕匐 焱楦 á窨 炸贪 哜 顺祓 怃遄 碣﹂ 茧吗 戆构 ぷ城 Κ骞 求蜀  甙蝇 マ樾 源繇 р摧 瘗阢 机粑 抵钫 チ圆 锿篮 ù 宾 砧鳘 去 蛞 菰  螃坶 骀雄 祆 补寨 篆 歉轿 伤趾 埂 款郾 破 骗笔 蓄 荨 臭

MUI 框架微信支付

在MUI 框架中实现了支付宝支付后,以为MUI微信支付,也没什么大问题,结果这个问题困扰了我几天,后面再同事的提醒下终于弄出来了, 问题出在,开始使用Dcloud 公有证书 怎么也付不了....,后面改成自己就OK了....希望后来者看到此博,能节约一点时间. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" co

微信支付(JSAPI) - Java

最近客栈订房,当然是需要微信支付的,官方微信支付文档什么的,只想说 去你妈的文档 so, 经过两天不懈的努力和网上大牛文档,终于做出来了,下面具体来说说,希望能对各位看客有点帮助 放大招,直接上代码 1. Configure.java 文件 1 package com.kzb.website.core.wechat.common; 2 3 import java.util.Calendar; 4 import java.util.Date; 5 6 import org.apache.commo

iOS-关于微信支付

突然发现的一篇文章,这位博主介绍的还是挺详细的,给大家分享一下 不懂的也可以咨询我qq:564702640 1.申请接入 详见 微信支付申请接入 . 创建应用+审核通过,你将得到:APP_ID.APP_SECRET.APP_KEY.PARTNER_ID .那就可以开始实现支付功能的接入. 2.业务流程 不管是客户端还是后台开发者,微信支付开发者文档里面这张交互时序图,都有必要看看.其实很多开发者,当然也包括我,在接入第三方sdk时,一般都是从其官方demo入手,快速了解其api.结果在这里就掉坑

【第三方支付】之微信支付

微信支付里面,有两种方式.自己网站里面使用的是第二种方式. 需要注意的一点是,在开发的过程中,由于使用的是MVC的架构,回调地址以/xx/xx 结束.导致一直无法回调成功.后来把回调页面改为 xx.aspx 就可以了. 生成二维码的代码,参考微信支付帮助文档中资源代码. 步骤是: 1.首先根据订单信息生成相应价格的二维码2.微信支付,并调用回调页面函数 public partial class WeiXinBack : System.Web.UI.Page { protected void Pa

微信开发(一):用JSAPI做微信支付+微信卡包(代金券)

做微信支付前期准备: 1,服务好开通微信支付. 2,公众账号ID:AppId. 3,公众账号密钥:AppSecret. 4,微信支付密钥:Key. 第一步:获取用户信息并跳转到需要微信支付的页面 public void ProcessRequest (HttpContext context) { var returnUrl = "http://wap.yueyangdujia.com/ActivityOrder.aspx?id="+context.Request["id&qu

微信支付之扫码支付实例

本例是采用微信扫码支付模式二   增加maven依赖 <dependency> <groupId>com.github.wxpay</groupId> <artifactId>wxpay-sdk</artifactId> <version>0.0.3</version> </dependency> <dependency> <groupId>com.google.zxing</gr

微信支付-&gt;公众平台

页面按钮显示: <!--支付确认按钮--> <article class="btn-group"> <a href="javascript:void(0);" click='wx_pay()' class="btn btn-w100 f28"> 下一步 </a> </article> 点击支付: var wx_pay = function(){ var ordernum=$("