1.概述
銀聯手機支付控件(以下簡稱支付控件),主要爲合作商戶的手機客戶端提供安全、便捷的支付服務。用戶通過在支付控件中輸入銀行卡卡號、手機號、密碼(借記卡和預付卡)或者CVN2、有效期(信用卡)、驗證碼等要素完成支付。
2.支付流程說明
通過支付控件進行交易的流程如下圖:
流程圖說明:
(1)用戶在客戶端中點擊購買商品,客戶端發起訂單生成請求到商戶後臺;
(2)商戶後臺收到訂單生成請求後,按照《手機控件支付產品接口規範》組織並推送訂單信息至銀聯後臺;
(3)銀聯後臺接收訂單信息並檢查通過後,生成對應交易流水號(即TN),並回復交易流水號至商戶後臺(應答要素:交易流水號等);
(4)商戶後臺接收到交易流水號,將交易流水號返回給客戶端;
(5)客戶端通過交易流水號(TN)調用支付控件;
(6)用戶在支付控件中輸入相關支付信息後,由支付控件向銀聯後臺發起支付請求;
(7)支付成功後,銀聯後臺將支付結果通知給商戶後臺;
(8)銀聯將支付結果通知支付控件;
(9)支付控件顯示支付結果並將支付結果返回給客戶端;
目前各個平臺支持的設備情況如下:
Android平臺SDK主要適用於Android 2.3及以上版本的終端設備;
3.測試賬號
招商銀行借記卡:6226090000000048
手機號:18100000000
密碼:111101
短信驗證碼:123456(先點獲取驗證碼之後再輸入)
證件類型:01身份證
證件號:510265790128303
姓名:張三
4.Android客戶端
涉及到SDK的接口說明、及其接口調用細節,需要讀者具有一定Android編程經驗。
4.1SDK包說明
商戶開發者在獲取到銀聯提供的開發包後請檢查SDK文件所在目錄upmp_android/sdkProSDK,以下部分提及的文件均在該目錄中:
apk目錄下包括了支付控件的apk:UPPayPluginExPro.apk
jar目錄下包括了商戶集成所需要的jar包、so文件(支持arm,armv7,x86,x86_64和arm64-v8a平臺)和資源文件。
UPPayAssistEx.jar定義了調用支付控件所需要的接口。
4.2接口說明
1、支付接口
upmp_android/UPPayAssistEx.jar中定義了啓動支付控件的接口,接口定義如下:
4.3添加SDK包
1. 拷貝upmp_android/sdkPro/jar/data.bin到工程的assets/目錄下;
2. 拷貝upmp_android/sdkPro/jar/xxx/libentryexpro.so和upmp_android/sdkPro/jar/xxx/libuptsmaddon.so到工程的libs/xxx/目錄下,其中xxx爲 armeabi-v7a、armeabi、arm64-v8a、x86、x86_64之一。
arm64-v8a(x86_64)是針對arm64(x86 64)架構優化的庫文件,引入工程後在arm64(x86 64)機型上性能會提升,但是最終生成的程序包將變大。注意: 如果工程中使用了其他的.so庫,那麼需要所有.so庫都有arm64-v8a(x86_64)的版本。
3. 拷貝upmp_android/sdkPro/UPPayAssistEx.jar到工程的libs/目錄下;
4. 拷貝upmp_android/sdkPro/jar/UPPayPluginExPro.jar到工程的libs/目錄下;
效果圖如下:
接着請右鍵單擊工程,選擇Build Path中的 Configure Build Path …,選中Libraries這個tab,並通過Add Jars…導入工程libs目錄下的或UPPayPluginExPro.jar。如下圖:
在工程的AndroidManifest.xml文件中註冊支付插件使用的Activity。添加如下:
同時添加,銀聯支付插件相關權限:
注意:版本編譯時的target應選用Open Mobile API,建議level19以上,如下圖所示:
4.4調用支付控件
1、支付接口調用
a) 在調用支付控件的代碼文件中引入UPPayAssistEx類如:
b)接着可以通過以下方式調用支付控件:
c) 控件回調說明:
支付完成後,獲取支付控件支付結果,並添加相應處理邏輯,只需實現調用Activity中的onActivityResult()方法即可,支付成功時會返回商戶客戶端支付結果和簽名信息。
控件返回的結果信息僅作爲參考,商戶訂單是否成功支付應該以商戶後臺主動到全渠道查詢的結果或者收到全渠道支付結果通知爲準。
收到控件返回結果後,建議無視結果中的內容和簽名信息,直接到自己的後臺查狀態,如果後臺此時未收到全渠道的後臺通知,則主動發起查詢接口到全渠道查狀態。這樣可既保證APP中展示的訂單狀態和後臺記錄一致,也可及時更新後臺記錄的訂單狀態。
如仍希望使用控件返回的信息,驗籤時建議送到後臺去驗籤;如果需要在APP中驗籤,則需要自行實現驗籤公鑰更新的機制,否則銀聯更新密鑰後會驗籤失敗。
示例代碼如下:
result_data參數說明:
result_data示例如下:
2、檢測是否已安裝銀聯Apk接口調用