Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android開發:app工程集成銀聯支付功能(客戶端)

Android開發:app工程集成銀聯支付功能(客戶端)

編輯:關於Android編程

一.功能描述

銀聯支付流程如下所示:
這裡寫圖片描述vcu1w/fOxLW1o6y+zb/J0tTN6rPJo6zO0tTa1eLA78z5yc+94bm5zbyjrNLyzqphc7XEzNjK4tDUoaM8L3A+DQo8aDQ+PHN0cm9uZz5qYXKw/KGiLnNvzsS8/rrNLmJpbs7EvP4gPC9zdHJvbmc+PC9oND4NCjxwPtLyzqrO0rXEuaSzzNfK1LTT0LXjtuDBy6Os0rvVxc28vdiyu8/Co6zL+dLUztLWu7j4s/bOxLz+vNC1xL3hubnNvKGjPC9wPg0KPHA+PGJyIC8+DQo8aW1nIGFsdD0="這裡寫圖片描述" src="/uploadfile/Collfiles/20160507/20160507090907245.png" title="\" />

拷貝upmp_android/sdkPro/jar/data.bin到工程的assets文件夾中;拷貝upmp_android/sdkPro/jar/xxx/libentryexpro.so和upmp_android/sdkPro/jar/xxx/libuptsmaddon.so到工程的armeabi-v7a文件夾中(官方說v8 v7 abi都行)拷貝upmp_android/sdkPro/UPPayAssistEx.jar到工程的libs/目錄下;拷貝upmp_android/sdkPro/jar/UPPayPluginExPro.jar到工程的libs/目錄下;

AndroidManifest.xml添加配置

<!-- 銀聯支付相關配置 -->
        <uses-library
            android:name="org.simalliance.openmobileapi"
            android:required="false" />

        <activity
            android:name="com.unionpay.uppay.PayActivity"
            android:configChanges="orientation|keyboardHidden"
            android:excludeFromRecents="true"
            android:label="@string/app_name"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="adjustResize" />
        <activity
            android:name="com.unionpay.UPPayWapActivity"
            android:configChanges="orientation|keyboardHidden"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="adjustResize" />

        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <uses-permission android:name="android.permission.NFC" />

        <uses-feature android:name="android.hardware.nfc.hce" />

        <uses-permission android:name="android.permission.RECORD_AUDIO" />
        <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
        <uses-permission android:name="org.simalliance.openmobileapi.SMARTCARD" />

2.2調用支付控件

2.2.1調用支付接口

 

import com.unionpay.UPPayAssistEx;
//在調用支付控件的代碼按以下方式調用支付控件
//比如onclick或者handler等等...
/*參數說明:
activity —— 用於啟動支付控件的活動對象
spId —— 保留使用,這裡輸入null
sysProvider —— 保留使用,這裡輸入null
orderInfo —— 訂單信息為交易流水號,即TN,為商戶後台從銀聯後台獲取。 
mode —— 銀聯後台環境標識,“00”將在銀聯正式環境發起交易,“01”將在銀聯測試環境發起交易
返回值:
UPPayAssistEx.PLUGIN_VALID —— 該終端已經安裝控件,並啟動控件
UPPayAssistEx.PLUGIN_NOT_FOUND — 手機終端尚未安裝支付控件,需要先安裝支付控件
*/
String serverMode = "01";
UPPayAssistEx.startPay (activity, null, null, tn, serverMode);

 

2.2.2接收支付結果

支付完成後,獲取支付控件支付結果,並添加相應處理邏輯,只需實現調用Activity中的onActivityResult()方法即可,支付成功時會返回商戶客戶端支付結果的簽名信息。

官方Demo是這樣的:
其中有一句:此處的verify,商戶需送去商戶後台做驗簽 ,請注意並不是在這裡向後台請求驗簽,因為後台也會接收到銀聯後台的支付結果通知,驗簽是在商戶後台做,請參考上一篇博文的補充部分《Android開發:app工程集成銀聯支付功能(服務器端) 》

 

protected void onActivityResult( int requestCode,
         int resultCode, 
        Intent data) 
{
    if( data == null ){
        return;
    }

    String str =  data.getExtras().getString("pay_result");
    if( str.equalsIgnoreCase(R_SUCCESS) ){
        // 支付成功後,extra中如果存在result_data,取出校驗
// result_data結構見c)result_data參數說明
        if(data.hasExtra("result_data")) {
String sign =  data.getExtras().getString("result_data");  
// 驗簽證書同後台驗簽證書
// 此處的verify,商戶需送去商戶後台做驗簽 
if(verify(sign)) {
    //驗證通過後,顯示支付結果
                showResultDialog(" 支付成功! ");
} else {
// 驗證不通過後的處理
// 建議通過商戶後台查詢支付結果
}
} else {
// 未收到簽名信息
// 建議通過商戶後台查詢支付結果
}
    }else if( str.equalsIgnoreCase(R_FAIL) ){
        showResultDialog(" 支付失敗! ");
    }else if( str.equalsIgnoreCase(R_CANCEL) ){
        showResultDialog(" 你已取消了本次訂單的支付! ");


 

由此就基本完成了客戶端的集成,當然還有一些:支付失敗的處理、取消訂單的處理,以及退貨、退款等等處理,等有時間再完善了。

本想截圖的!!手機暫時出現了無法截圖的毛病...

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved