ios微信支付失败 php,iOS 微信支付疑难杂症。

哈喽,大家好,感谢您来阅读我的文章,作为iOS开发者,集成各类支付是家常便饭之事,今天我来给大家推荐几个不常见的微信支付问题。

最近,在项目的反馈版块中,收到了这么一位APP用户的反馈,他在使用我们家的APP时,使用微信支付,支付完成后,账户信息得不到更新,需要重启APP才能更新。从后面了解中所得知,用户手中装的微信APP版本号是 7.0.3的(经过了九九八十一难,我拿到了用户使用的手机,并将其手机用于项目调试)。

在控制台中,我发现了这么一条信息,在调取WXAPI时就会打印出来。

canOpenURL: failed for URL: "weixinULAPI://" - error: The operation couldn’t be completed. (OSStatus error -10814.)

当时有点懵逼。这个是多么熟悉,有多么可恨的报错。这个在刚介入微信支付时就能出现。只需在项目中把各种配置配起来,就可以消除的了,我反反复复对之前的配置进行检测,发现并没有问题。

很是奇怪咯。~~~~

这个时候,我使用微信支付,不管成功与否,确实不会触发回调。(在个人手机操作时,流程都是正常的)

查阅了各种资料。发现也没查出个所以然来。

最后我只能下手,向WXAPI文档下手了。

/*! @brief处理旧版微信通过URL启动App时传递的数据

*

* 需要在 application:openURL:sourceApplication:annotation:或者application:handleOpenURL中调用。

* @paramurl微信启动第三方应用时传递过来的URL

* @paramdelegate  WXApiDelegate对象,用来接收微信触发的消息。

* @return成功返回YES,失败返回NO。

*/

+ (BOOL)handleOpenURL:(NSURL *)url delegate:(nullable id)delegate;

/*! @brief处理微信通过Universal Link启动App时传递的数据

*

* 需要在 application:continueUserActivity:restorationHandler:中调用。

* @paramuserActivity微信启动第三方应用时系统API传递过来的userActivity

* @paramdelegate  WXApiDelegate对象,用来接收微信触发的消息。

* @return成功返回YES,失败返回NO。

*/

+ (BOOL)handleOpenUniversalLink:(NSUserActivity *)userActivity delegate:(nullable id)delegate;

看到以上两个API,脑海中突然灵光一闪,关于SDK接口问题。其实这里最大的问题不是接口,而是自身微信版本问题。

在上面第一条信息中,我们可以得知。

旧版微信通过URL Schemes传递数据的

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options{

return [WXApi handleOpenURL:url delegate:self];

}

新版微信是通过UniversalLink来传递数据的。

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray> * __nullable restorableObjects))restorationHandler {

return [WXApi handleOpenUniversalLink:userActivity delegate:self];

}

把这两个接口适配好。就可以收到微信回调的。

即使能收到微信回调。但是控制台中还是会继续打印出 canOpenURL: failed for URL: "weixinULAPI://" - error: The operation couldn’t be completed. (OSStatus error -10814.) 从功能上暂时没有发现什么异常。

个人分析,可能是高版本的SDK调用低版本的微信时,由于内部兼容所导致的。并不影响使用。

如何有道友知道是什么原因所导致的。可以在下方评论区中留言。

随便提一下:在iOS13 开始会出现这么一个文件SceneDelegate(Xcode11开始,创建项目时,会把之前的APPdelegate给细分化)。

在有这种项目文件的项目中,UniversalLink 和 URL Schemes 回调都会在这个文件API方法中回调。

iOS 13 UniversalLink 回调方法。

- (void)scene:(UIScene *)scene continueUserActivity:(NSUserActivity *)userActivity API_AVAILABLE(ios(13.0)){

}

iOS 13  URL Schemes

- (void)scene:(UIScene *)scene openURLContexts:(NSSet *)URLContexts API_AVAILABLE(ios(13.0)){

}

随手记录,不喜勿喷。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值