Flutter使用sy_flutter_alipay拉取支付宝闪退问题解决

担心原地址会挂掉特此记录,原解决方法地址:https://github.com/lishuhao/sy_flutter_alipay/issues/6#issuecomment-521872051
安卓支付宝支付返回时,插件内部开辟了子线程,返回的时候没有回到主线程,所以导致崩溃。在插件内部成功和异常的方法都放在主线程中,就没有问题了。
修改插件的android源码,修改后代码如下:

  //调起支付
public void alipay(final String payInfo, boolean isSandbox, final MethodChannel.Result callback) {
    //沙箱环境
    if (isSandbox) {
        EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX);
    }

    final Activity activity = this.activity;
    Runnable payRunnable = new Runnable() {
        @Override
        public void run() {
            try {
                PayTask alipay = new PayTask(activity);
                final Map<String, String> result = alipay.payV2(payInfo, true);
                activity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        callback.success(result);
                    }
                });
            } catch (final Exception e) {
                activity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        callback.error("PAY_ERROR", e.getMessage(), null);
                    }
                });
            }
        }
    };

    Thread payThread = new Thread(payRunnable);
    payThread.start();
}

猜你喜欢

转载自blog.csdn.net/qq_41345281/article/details/106689160
今日推荐