美文网首页
Android之支付宝支付集成

Android之支付宝支付集成

作者: xiao波 | 来源:发表于2020-05-28 17:25 被阅读0次

支付宝集成流程
https://opendocs.alipay.com/open/204/105296/
主要的回调返回类两个:PayResult与AuthResult
支付接口的调用:

  final String orderInfo = info;   // 订单信息

    Runnable payRunnable = new Runnable() {

        @Override
        public void run() {
            PayTask alipay = new PayTask(DemoActivity.this);
           Map <String,String> result = alipay.payV2(orderInfo,true);

            Message msg = new Message();
            msg.what = SDK_PAY_FLAG;
            msg.obj = result;
            mHandler.sendMessage(msg);
        }
    };
     // 必须异步调用
    Thread payThread = new Thread(payRunnable);
    payThread.start();

支付结果的接收:

private Handler mHandler = new Handler() {
      @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
    @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")) {
                // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
                showAlert(PayDemoActivity.this, getString(R.string.pay_success) + payResult);
            } else {
                // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
                showAlert(PayDemoActivity.this, getString(R.string.pay_failed) + payResult);
            }
            break;
        }
        case SDK_AUTH_FLAG: {
            @SuppressWarnings("unchecked")
            AuthResult authResult = new AuthResult((Map<String, String>) msg.obj, true);
            String resultStatus = authResult.getResultStatus();

            // 判断resultStatus 为“9000”且result_code
            // 为“200”则代表授权成功,具体状态码代表含义可参考授权接口文档
            if (TextUtils.equals(resultStatus, "9000") && TextUtils.equals(authResult.getResultCode(), "200")) {
                // 获取alipay_open_id,调支付时作为参数extern_token 的value
                // 传入,则支付账户为该授权账户
                showAlert(PayDemoActivity.this, getString(R.string.auth_success) + authResult);
            } else {
                // 其他状态值则为授权失败
                showAlert(PayDemoActivity.this, getString(R.string.auth_failed) + authResult);
            }
            break;
        }
        default:
            break;
        }
    };
};

相关文章

网友评论

      本文标题:Android之支付宝支付集成

      本文链接:https://www.haomeiwen.com/subject/nvvaahtx.html