Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

微信支付完成后,不能回到APP #100

Open
cleven1 opened this issue Oct 31, 2019 · 7 comments
Open

微信支付完成后,不能回到APP #100

cleven1 opened this issue Oct 31, 2019 · 7 comments

Comments

@cleven1
Copy link

cleven1 commented Oct 31, 2019

根据文档该配的都配了,支付后直接就停留在微信界面呢,不能回到自己的APP, 我测试了官方demo也是这样? 请问这个问题该如何解决???

@samurai00
Copy link
Contributor

URL Scheme

URL Scheme 配置了吗

@cleven1
Copy link
Author

cleven1 commented Nov 1, 2019

配置了

@Mr-nan
Copy link

Mr-nan commented Jan 6, 2020

我也遇到改问题,回调方法不响应

@samurai00
Copy link
Contributor

samurai00 commented Jan 6, 2020

微信 app 支付,URL Schemes 一定要有一个是微信的 appid(是微信的 "wx" 开头的),否则是跳不回来的。而且必须是你支付的那一个 appid,换任何其他的都不行。

回调方法不响应。先确认回调的 URL 是什么,handleOpenURL 方法掉了吗,返回什么,YES/true 还是 NO/false?
completion 有没有覆盖掉

@Mr-nan
Copy link

Mr-nan commented Jan 6, 2020

@samurai00 之前用的版本是2.2.22微信回调都正常,更新至2.2.29版本后回调就没有响应;已检查URL Schemes都一样;

@samurai00
Copy link
Contributor

@Mr-nan 2.2.29 版本,微信官方的 SDK 有变动。“微信支付支持 Universal Links 方式跳转”
必须使用 Universal Links。微信快要废弃原来的方法了。如果非要用原来的 URL Schemes 方式(当前微信还没废弃,但是建议适配 Universal Links),就不要在 Podfile 包含 Pingpp/Wx。

Universal Links 配置方法请参考 Apple 官方文档微信相关文档

回调也不是原来的了,都是 Universal Links 相关的

// 微信使用 Universal Links 的情况,需要该方法
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
    var ret = Pingpp.handleContinue(userActivity, withCompletion: nil)
    if !ret {
        // 其他逻辑
        // ret = 其他处理
    }

    return ret
}

如果还不行,那你需要提供详细的信息。

  1. 支付完成或者取消是按的微信上哪一个按钮?“返回商家”?还是其他按钮?
  2. 是否跳回至你自己的 app?如果没回去,那肯定是哪里没配置对,不需要往下看了。
  3. 进入了 appdelegate 哪个方法?打印一下 URL,是什么内容?(只要不是按的最左上角的"< 你的app名字",都会调用到 application open url 的方法,按了那个是没办法拿到回调的)
  4. 调用了 Pingpp 的 handleOpen 了吗?返回什么?是不是在调用 Pingpp 的方法前就已经 return 了?
  5. 调用 Pingpp 的 handleOpen 第二个参数有没有传?传了 completion 还是 nil
  6. 如果传了 nil,那么会在 createPayment 方法里传的 completion 回调,除非那个实例已被你销毁
  7. 如果传了 completion 那么会在这里返回,createPayment 方法里传的 completion 是不会有回调的,这个逻辑一直都是这样的。

你要确认是不是稍微改了一下部分相关的调用?

@szuwest
Copy link

szuwest commented Sep 25, 2021

请问解决了吗?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants