Android移動支付(支付寶支付2016最新接入詳解)

接入流程

一:公司開通支付寶商戶號
二:註冊登錄螞蟻金服開放平臺創建應用
三:項目集成支付寶SDK

一:公司開通支付寶商戶號

1 註冊商戶號:https://mobiless.alipay.com/ 可以把鏈接發給人事,讓她弄一下,需要提交的資料也只能由人事來弄。
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

二:註冊登錄螞蟻金服開放平臺創建應用

螞蟻金服開放平臺:https://open.alipay.com/platform/home.htm
創建成功並上線是如下面:
這裏寫圖片描述

1 創建應用
這裏寫圖片描述

2 應用環境設置
這裏寫圖片描述

應用公鑰配置 點擊支付寶的祕鑰生成器
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

AES祕鑰點擊生成即可
這裏寫圖片描述

上線和添加支付功能
這裏寫圖片描述

選擇APP支付,確定後會提示需要簽約,進行簽約就是了
這裏寫圖片描述

點擊上線,簽約涉及到公司信息的就交給人事去弄吧

三:項目中集成支付寶SDK

先上文檔:
https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.DjzzBP&treeId=193&articleId=105296&docType=1
這裏寫圖片描述
按着文檔一步一步的做就行了

修改Manifest
在商戶應用工程的AndroidManifest.xml文件裏面添加聲明:

<activity
            android:name="com.alipay.sdk.app.H5PayActivity"
            android:configChanges="orientation|keyboardHidden|navigation"
            android:exported="false"
            android:screenOrientation="behind" >
</activity>
<activity
            android:name="com.alipay.sdk.auth.AuthActivity"
            android:configChanges="orientation|keyboardHidden|navigation"
            android:exported="false"
            android:screenOrientation="behind" >
 </activity>

和權限聲明:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<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" />

添加混淆規則
在商戶應用工程的proguard-project.txt裏添加以下相關規則:

-libraryjars libs/alipaySDK-20150602.jar

-keep class com.alipay.android.app.IAlixPay{*;}
-keep class com.alipay.android.app.IAlixPay$Stub{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*;}
-keep class com.alipay.sdk.app.PayTask{ public *;}
-keep class com.alipay.sdk.app.AuthTask{ public *;}

至此,開發包開發資源導入完成。

支付接口調用
需要在新線程中調用支付接口。(可參考alipay_demo實現)
獲取PayTask支付對象調用支付(支付行爲需要在獨立的非ui線程中執行),代碼示例:

final String orderInfo = info;   // 訂單信息

        Runnable payRunnable = new Runnable() {

            @Override
            public void run() {
                PayTask alipay = new PayTask(DemoActivity.this);
                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();

支付結果獲取和處理
調用pay方法支付後,將通過2種途徑獲得支付結果:

同步返回
商戶應用客戶端通過當前調用支付的Activity的Handler對象,通過它的回調函數獲取支付結果。(可參考alipay_demo實現)
代碼示例:

private Handler mHandler = new Handler() {
        public void handleMessage(Message msg) {
            Result result = new Result((String) msg.obj);
            Toast.makeText(DemoActivity.this, result.getResult(),
                        Toast.LENGTH_LONG).show();
        };
    };

異步通知
商戶需要提供一個http協議的接口,包含在請求支付的入參中,其key對應notify_url。支付寶服務器在支付完成後,會以POST方式調用notify_url傳輸數據。

獲取當前開發包版本號
調用PayTask對象的getVersion()方法查詢。
代碼示例:

PayTask payTask = new PayTask(activity);
String version = payTask.getVersion();

在支付類添加
APPID
PID
商戶私鑰,pkcs8格式(在支付寶商戶裏面配置一下)

這裏寫圖片描述

這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

這樣運行Demo就可以成功調用支付寶了,是不是感覺挺簡單的呢,這是博主第二次做個移動支付了,第一次做的是用第三方SDK Ping++接入的,一次性集成了支付寶和微信支付,跳槽換了一家公司,雖然第三方SDK接入支付簡單,Ping++號稱只需一行代碼,畢竟這世上沒有免費的午餐,所以這次決定單獨接入,有時間會帶來Android微信支付的接入詳解。

Demo github鏈接:https://github.com/weijiagithub/AlipayDemo

發佈了29 篇原創文章 · 獲贊 9 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章