在做Ionic开发中,很多时候都要集成支付功能,比如微信和支付宝,几经折腾可以完成支付,但支付回调这个问题,很多人都会遇到,就算是插件作者做了说明,也还会存在无法回调的问题,那就说明是自己的代码写得有问题了,下面就一起来看看这个问题怎么解决。
相关插件
序号 | 插件 | 链接 |
---|---|---|
1 | cordova-plugin-wechat | npm |
2 | cordova-plugin-alipay-v2 | npm |
问题描述
- 直接回调catch逻辑,支付成功也是执行catch
- 错误提示
undefined is not an object
问题分析
catch 被触发肯定是出错了,这个错误不是说肯定就是请求支付的时候出错,在then逻辑里有错误也会触发catch,那咱们直接在then里面打个console.log()
这个总不会报错了吧,很遗憾,then逻辑还是没有触发, 那咱们就来看看catch中回传的error
参数的错误信息, undefined is not an object
,貌似是什么东西未定义,怎么办呢?
问题猜测
- promise 问题 ?
- 查看插件的
www/xxx.js
文件中的exec
函数的定义如下:
function xxx(params, onSuccess, onError);
- 我的调用方式
xxx(params).then(onSuccess).catch(onError);
- 换成与插件定义一致的方式试试看?
- 回调了, 回调了!
解决问题
将插件的函数调用方法进行替换,即可, 参考 问题猜测