Android之支付寶支付集成

支付寶集成流程
https://opendocs.alipay.com/open/204/105296/
主要的回調(diào)返回類(lèi)兩個(gè):PayResult與AuthResult
支付接口的調(diào)用:

  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);
        }
    };
     // 必須異步調(diào)用
    Thread payThread = new Thread(payRunnable);
    payThread.start();

支付結(jié)果的接收:

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);
            /**
             * 對(duì)于支付結(jié)果,請(qǐng)商戶依賴服務(wù)端的異步通知結(jié)果。同步通知結(jié)果,僅作為支付結(jié)束的通知。
             */
            String resultInfo = payResult.getResult();// 同步返回需要驗(yàn)證的信息
            String resultStatus = payResult.getResultStatus();
            // 判斷resultStatus 為9000則代表支付成功
            if (TextUtils.equals(resultStatus, "9000")) {
                // 該筆訂單是否真實(shí)支付成功,需要依賴服務(wù)端的異步通知。
                showAlert(PayDemoActivity.this, getString(R.string.pay_success) + payResult);
            } else {
                // 該筆訂單真實(shí)的支付結(jié)果,需要依賴服務(wù)端的異步通知。
                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”則代表授權(quán)成功,具體狀態(tài)碼代表含義可參考授權(quán)接口文檔
            if (TextUtils.equals(resultStatus, "9000") && TextUtils.equals(authResult.getResultCode(), "200")) {
                // 獲取alipay_open_id,調(diào)支付時(shí)作為參數(shù)extern_token 的value
                // 傳入,則支付賬戶為該授權(quán)賬戶
                showAlert(PayDemoActivity.this, getString(R.string.auth_success) + authResult);
            } else {
                // 其他狀態(tài)值則為授權(quán)失敗
                showAlert(PayDemoActivity.this, getString(R.string.auth_failed) + authResult);
            }
            break;
        }
        default:
            break;
        }
    };
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容