flutter 使用sy_flutter_alipay插件在安卓支付宝支付返回闪退的解决方法

发布于 5 年前 作者 phonegap100 3068 次浏览 最后一次编辑是 5 年前 来自 分享

使用sy_flutter_alipay进行支付宝支付的时候,由于安卓支付宝支付返回时,插件内部开辟了子线程,返回的时候没有回到主线程,所以导致崩溃。在插件内部成功和异常的方法都放在主线程中,就没有问题了。

解决办法 修改源码

//调起支付
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();
}

来源: https://github.com/lishuhao/sy_flutter_alipay/issues/6

回到顶部