支付宝沙箱集成无法唤起客户端

支付宝沙箱集成

我当时是无法唤起支付宝客户端支付界面,显示服务端订单错误 ALIN10146

这里我是将官方demo复制然后进行更改的,这是需要留下的类
在这里插入图片描述

这是主页面代码

/**
     * 用于支付宝支付业务的入参 app_id。
     */
     //这个需要换成自己的ID
    public static final String APPID = "2021000118612472";
    //换成对应的私钥
    public static final String RSA2_PRIVATE = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCbQqXPz2GbFCnPl33lHQSxNc2nmdiV8FOj6jitNv1W2c4LI3j4tEXQZSXUqxjBIrgO1aYosTMPBzyMddBa3AP2FuZzjqpHW/jHoJ07HtJAtHCmLAJi4rsPu0OtZjgNyoOVYHuflGlftdTjW7WeoxO9+r/oS88HaQUqvL4ZgQdKxr4u6Nyf8tGk+ArFEpzhNhF2RsXNpfCP516cTms1/OhUXdDQzuEqhm+kruo9Ou30CDkepftmIn4FrMUNPIm5l+U34IX/wyNSz9gkzEnnJBZlOadypWBX83VphecYVVXfAGAH0MrkuhOH8jVYsGTGOU8BuFmhCciB/LA9u1GUv50tAgMBAAECggEBAJNAJpptCRlXikAEYbaGSwj3ClFGrA+omur/HTnKyYMxlyUhQ349G2mGRNbqXtPt5brMDobRaKd8KYTdx/okaO1g0rgOOpjrNYu/XN/RX39WovA3FRxMBTXqWUl/hPIve5SUqSq0Sywm+/2V4S7PY83un0vlejiA9hGOaI0vvoa/ccfV8sjhRXA43UFg4H4tOGPunu7tnSAVDYZasi6koLlpfIHAaCl469RTI3FfXnRkjsV37ZZoks7u7W1F2mw/AHLLIxV/H38m7Vyhm1H1VoveRrluGsDOSLCGKGn22j2lhnzg9Fv0p1RKnuFGaHEnIuQPpOS7OQzQQkXKTzSdGwECgYEA5DkP2ATfhgrP1Cz1xKura1XDaSZM1rOHsfRYwGPHcSURQy2uZT+uDxNfRGkgqi3+uL7ssixVT17g0RRBv4gZjIHCZhsZgjZeg7lYhPCa7jcN7esKTK/U82232axBNPSwQ5JOUrXfahFbu1N98TMjNqIEukMcvEVER/DDDQsl4H0CgYEArig6eKy4MoFNxPm/0iJGkKOn127e4AtRTUlgqwef6TsFGD3nGEmJhihfJsHagioGp5/uUmi2ZIrQx1NL+nBjU0A6AiuX7nNJhls2YouL5/k7+XxRNB3G7BXfYULlG+epVmP7nn/W6J+NYtMK+JfIiEG1EYB9RrjePK8KiLbSfnECgYEAjdi9dTkKKIi9xZUwJ82/HFZQvyDz7xnkhAFnzCP4COXOBd/1na5no60ZsC5bBArUX8Ui3lbZqxxARRL/Dmkr3/2ics3zG9BpDBv93Zqh4N9NBAvq+eDrTWVrOJpsaNqQV18u2Q97TbR+PD7XbzumbkVjBNXDnWy71K7avFeqcg0CgYB4dvMbDb3LkY1NtsNsgrD0038BkXsw1iNCpoLrSrbeCSkY/5ieQB+UYNCQan7OkmtP/1xGPJANM8f+WCux65OIvmBhp+3LzosJGIah24zGxKsrg0ZYGlDCdM6y5Ca+CpwjWb1ugVcSSWru9LQeCD95oJmypYICLVXr+9f5gRxQwQKBgFKLbYCyvLlbKglqI7t92WPef4YZH6A5cgA5jMI50p2CkQeIXhnU5U9wUoCGkgGcsZcvzSITmox9uK4i5l7tXOs8UUi4AknWn8u4YX2J2biAHQXGlAP8jy2olMF23PPNhKzHcWUguqz7oYqCSdwjrEHtAodgzVnvCGDNCRGyKY6H";
    public static final String RSA_PRIVATE = "";

    private static final int SDK_PAY_FLAG = 1;
    private static final int SDK_AUTH_FLAG = 2;

    @SuppressLint("HandlerLeak")
    private Handler mHandler = new Handler() {
        @SuppressWarnings("unused")
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case SDK_PAY_FLAG: {
                    @SuppressWarnings("unchecked")
                    PayResult payResult = new PayResult((Map<String, String>) msg.obj);
                    /**
                     * 对于支付结果,请商户依赖服务端的异步通知结果。同步通知结果,仅作为支付结束的通知。
                     */
                    String resultInfo = payResult.getResult();// 同步返回需要验证的信息
                    String resultStatus = payResult.getResultStatus();
                    // 判断resultStatus 为9000则代表支付成功
                    if (TextUtils.equals(resultStatus, "9000")) {
                        // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
                        LogUtils.getInstance().log("支付成功");
                    } else {
                        // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
                        LogUtils.getInstance().log("支付失败"+resultInfo);
                    }
                    break;
                }
                default:
                    break;
            }
        };
    };

    public void payV2() {
        if (TextUtils.isEmpty(APPID) || (TextUtils.isEmpty(RSA2_PRIVATE) && TextUtils.isEmpty(RSA_PRIVATE))) {
            LogUtils.getInstance().log("错误");
            return;
        }

        /*
         * 这里只是为了方便直接向商户展示支付宝的整个支付流程;所以Demo中加签过程直接放在客户端完成;
         * 真实App里,privateKey等数据严禁放在客户端,加签过程务必要放在服务端完成;
         * 防止商户私密数据泄露,造成不必要的资金损失,及面临各种安全风险;
         *
         * orderInfo 的获取必须来自服务端;
         */
        boolean rsa2 = (RSA2_PRIVATE.length() > 0);
        Map<String, String> params = OrderInfoUtil2_0.buildOrderParamMap(APPID, rsa2);
        String orderParam = OrderInfoUtil2_0.buildOrderParam(params);

        String privateKey = rsa2 ? RSA2_PRIVATE : RSA_PRIVATE;
        String sign = OrderInfoUtil2_0.getSign(params, privateKey, rsa2);
        final String orderInfo = orderParam + "&" + sign;

        final Runnable payRunnable = new Runnable() {

            @Override
            public void run() {
                PayTask alipay = new PayTask(LiveStreamActivity.this);
                Map<String, String> result = alipay.payV2(orderInfo, true);
                Log.i("msp", result.toString());

                Message msg = new Message();
                msg.what = SDK_PAY_FLAG;
                msg.obj = result;
                mHandler.sendMessage(msg);
            }
        };

        // 必须异步调用
        Thread payThread = new Thread(payRunnable);
        payThread.start();
    }

我天真的以为这样就完了,结果onCreate没有添加这句话

//打开沙箱环境
EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX);

加上之后终于成功了,记录一下,引以为戒

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值