ionic 微信支付、支付宝支付未回调终极解决【其实很简单】

在做Ionic开发中,很多时候都要集成支付功能,比如微信和支付宝,几经折腾可以完成支付,但支付回调这个问题,很多人都会遇到,就算是插件作者做了说明,也还会存在无法回调的问题,那就说明是自己的代码写得有问题了,下面就一起来看看这个问题怎么解决。

相关插件

序号 插件 链接
1 cordova-plugin-wechat npm
2 cordova-plugin-alipay-v2 npm

问题描述

  1. 直接回调catch逻辑,支付成功也是执行catch
  2. 错误提示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);
  • 换成与插件定义一致的方式试试看?
  • 回调了, 回调了!

解决问题

将插件的函数调用方法进行替换,即可, 参考 问题猜测

你可能感兴趣的:(ionic,支付宝,微信支付,cordova)