1. 程式人生 > >android螞蟻金服支付寶支付整合步驟

android螞蟻金服支付寶支付整合步驟

此篇僅限於android客戶端整合步驟,檢視全部的請轉https://docs.open.alipay.com/204/105296/

自支付寶 SDK  15.5.7 開始,打包方式更換為 AAR,替代之前的 JAR 打包,SDK 支付介面部分不變.現在就基於支付寶SDK15.5.7整合支付寶支付

首先下載新的AAR的SDK包:https://download.csdn.net/download/lanrenxiaowen/10811584

一.下載完將裡面的AAR格式包放入到專案的libs裡面

二.在您主專案的 build.gradle 中,新增下面的內容,將 libs
 目錄作為依賴倉庫:

allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://www.jitpack.io' }
        flatDir {
            dirs 'libs'
        }
    }
}

 三.在您 App Module 的 build.gradle 中,新增下面的內容,將支付寶 SDK 作為專案依賴:

//支付寶支付
implementation (name: 'alipaySdk-15.5.7-20181023110917', ext: 'aar')

許可權配置:

    <!-- 訪問網路,網路定位需要上網 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- 獲取運營商資訊,用於支援提供運營商資訊相關的介面 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- 用於訪問wifi網路資訊,wifi資訊會用於進行網路定位 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!-- 用於讀取手機當前的狀態 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <!-- 寫入擴充套件儲存,向擴充套件卡寫入資料,用於寫入離線定位資料 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

如果您的應用已經升級 targetSdk 到 23 及以上,則需要在執行時向用戶申請 WRITE_EXTERNAL_STORAGE 和 READ_PHONE_STATE 這兩項許可權。

到這裡咱們的資源和配置工作已經準備完成,接下來就是調起支付寶了

調起支付寶只需要一個引數就是訂單的簽名,就是後臺返回給你的一個字串,假裝咱們已經有了這個字串

String qianming = "後臺返回過來的簽名";
例如:
{
    "code": 800,
    "msg": "成功",
    "obj": "alipay_sdk=alipay-sdk-java-dynamicVersionNo&app_id=2016120103702677&biz_content=%7B%22out_trade_no%22%3A%22R42581972062%22%2C%22product_code%22%3A%22QUICK_WAP_PAY%22%2C%22subject%22%3A%22%E6%94%AF%E4%BB%98%E5%AE%9D%E6%94%AF%E4%BB%98%22%2C%22total_amount%22%3A%220.01%22%7D&charset=utf-8&format=json&method=alipay.trade.app.pay&notify_url=http%3A%2F%2F%E5%B7%A5%E7%A8%8B%E5%85%AC%E7%BD%91%E8%AE%BF%E9%97%AE%E5%9C%B0%E5%9D%80%2Falipay.trade.page.pay-JAVA-UTF-8%2Fnotify_url.jsp&sign=II53m99LCRlE%2BTnpYg6UzZa0TOmLdWXjb60ikkvkozgPHzwhtYsi4e%2B3gBw%2FaD7NtyURsxaXTmsEzwDB2D99oXzZbuWAOTQtRPLoaNXNu%2FouZqXmZ71aQ1llYpt1o%2FYe2YpUTO2cvQHLgBSC%2FBOK55avlm9LwEK4BkZVyz8qTLg%3D&sign_type=RSA&timestamp=2018-11-27+21%3A32%3A26&version=1.0"
}
其中obj欄位就是咱們需要用到的簽名

然後就是根據這個簽名調起支付寶進行支付,訂單的資訊全部都在這個簽名裡面,在你的獲取簽名的請求成功方法裡面加入

//支付
PayUtils pay = new PayUtils(ConfirmOrderActivity.this, mHandler);
pay.ZFB_PAY(qianming, ConfirmOrderActivity.this);
private static final int SDK_PAY_FLAG = 1; 
private Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case SDK_PAY_FLAG: {
                    PayResult payResult = new PayResult((String) msg.obj);
                    /**
                     * 同步返回的結果必須放置到服務端進行驗證(驗證的規則請看https://doc.open.alipay.com/doc2/
                     * detail.htm?spm=0.0.0.0.xdvAU6&treeId=59&articleId=103665&
                     * docType=1) 建議商戶依賴非同步通知
                     */
                    String resultInfo = payResult.getResult();// 同步返回需要驗證的資訊

                    String resultStatus = payResult.getResultStatus();
                    Log.e("alicode", resultStatus + "");
                    // 判斷resultStatus 為“9000”則代表支付成功,具體狀態碼代表含義可參考介面文件
                    if (TextUtils.equals(resultStatus, "9000")) {
                        Toast.makeText(ConfirmOrderActivity.this, "支付成功",
                                Toast.LENGTH_SHORT).show();
                    } else {
                        // 判斷resultStatus 為非"9000"則代表可能支付失敗
                        // "8000"代表支付結果因為支付渠道原因或者系統原因還在等待支付結果確認,最終交易是否成功以服務端非同步通知為準(小概率狀態)
                        if (TextUtils.equals(resultStatus, "8000")) {
                            Toast.makeText(ConfirmOrderActivity.this, "支付結果確認中",
                                    Toast.LENGTH_SHORT).show();
                        } else {
                            // 其他值就可以判斷為支付失敗,包括使用者主動取消支付,或者系統返回的錯誤
                            Toast.makeText(ConfirmOrderActivity.this,
                                    "支付失敗" + resultStatus, Toast.LENGTH_SHORT)
                                    .show();
                        }
                    }
                    break;
                }
            }
        }

        ;
    };

至此,android支付寶支付就整合完畢了,如果不成功,就請你們的後臺同事調引數吧

微信支付參考:https://blog.csdn.net/lanrenxiaowen/article/details/84589592