銀聯支付,支付

來源:互聯網
上載者:User

銀聯支付,支付

一、概述

銀聯手機支付控制項(以下簡稱支付控制項),主要為合作商戶的手機用戶端或手機Web網站提供安全、便捷的支付服務。目前支付控制項支援Android和iOS兩個平台,使用者通過在支付控制項中輸入銀行卡卡號、手機號、密碼(借記卡和預付卡)或者CVN2、有效期間(信用卡)、驗證碼等要素完成支付。

二、支付流程介紹

通過支付控制項進行交易的流程如:

 

流程圖說明:

(1)使用者在用戶端中點擊購買商品,用戶端發起訂單產生請求到商戶後台;

(2)商戶後台收到訂單產生請求後,按照《UPMP商戶接入介面規範》組織並推送訂單資訊至銀聯後台;

(3)銀聯後台接收訂單資訊並檢查通過後,產生對應交易流水號(即TN),並回複交易流水號至商戶後台(應答要素:交易流水號等);

(4)商戶後台接收到交易流水號,將交易流水號返回給用戶端;

(5)用戶端通過交易流水號(TN)調用支付控制項;

(6)使用者在支付控制項中輸入相關支付資訊後,由支付控制項向銀聯後台發起支付請求;

(7)支付成功後,銀聯後台將支付結果通知給商戶後台;

(8)銀聯將支付結果通知支付控制項;

(9)支付控制項顯示支付結果並將支付結果返回給用戶端;

注: 本文檔主要關註上述流程中(5)、(9)部分的實現

目前各個平台支援的裝置情況如下:

Android平台SDK主要適用於Android 2.1及以上版本的終端裝置;

iOS版本支付控制項適用iOS 5.1及以上版本終端裝置。

二、測試帳號

  • 提供測試使用卡號、手機號資訊(此類資訊僅供測試,不會發生正式交易)

招商銀行預付卡:

卡號:6226 4401 2345 6785

密碼:111101

三、iOS用戶端

本小節提供給那些具有一定iOS編程經驗和瞭解物件導向概念的讀者使用。

SDK檔案所在目錄:upmp_iphone/sdk,以下部分所說檔案,均在該目錄中尋找。

  1. SDK說明

SDK分為以下兩個版本:

  1. 支援純無卡交易靜態庫,以下簡稱UPPayPlugin,包含檔案:

UPPayPlugin.h

UPPayPluginDelegate.h

libUPPayPlugin.a

  1. 支援純無卡交易和VIPOS音頻口支付靜態庫,以下簡稱UPPayPluginPro,包含檔案:

UPPayPluginPro.h

UPPayPluginDelegate.h

libUPPayPluginPro.a

  1. 介面說明
  1.  

 

各個參數的介紹如表3-1:

表3-1 介面參數說明

 

  1. 添加SDK包
  1. 根據商戶選擇的SDK版本,將sdk/inc目錄和sdk/libs目錄下對應版本的三個檔案添加到UPPayDemo工程中;
  2. 如果你選擇的是UPPayPlugin版本,添加QuartzCore.framework、Security.framework到工程中;
  3. 如果你選擇的是UPPayPluginPro版本,添加QuartzCore.framework、AudioToolbox.framework, CoreAudio.framework、 MediaPlayer.framework, AVFoundation.framework和Security.framework到工程中;
  4. 在工程的Build Settings中找到Other Linker Flags中添加-ObjC宏;
  1. 調用外掛程式
  1. 在需要調用支付控制項的源檔案內引用標頭檔UPPayPlugin.h或UPPayPluginPro.h(注意:如果工程的compile source as 選項的值不是Objective–C++,則引用此標頭檔的檔案類型都要改為.mm)
  2. 通過調用

  + (BOOL)startPay:(NSString*)tn 

mode:(NSString*)mode 

viewController:(UIViewController*)viewController 

delegate:(id<UPPayPluginDelegate>)delegate;

實現控制項的調用

  1. 處理支付結果

銀聯手機支付控制項有三個支付狀態傳回值:success、fail、cancel,分別代表:支付成功、支付失敗、使用者取消支付。這三個返回狀態值以字串的形式作為回呼函數參數(NSString*)result返回。通過在工程中添加標頭檔“UPPayPluginDelegate.h”,在處理交易結果的介面,實現UPPayPluginDelegate介面,根據該標頭檔中的回呼函數:-(void)UPPayPluginResult:(NSString*)result來實現回調方法,從而可以根據支付結果的不同進行相關的處理。

四、Android用戶端

本小節提供給那些具有一定Android編程經驗和瞭解物件導向概念的讀者使用。

  1. SDK包說明

 

SDK分為以下兩個版本:

  1. 支援純無卡交易版本,該版本主要位於upmp_android/sdknocard目錄下:

 

apk目錄下包括了通過apk方式接入的UPPayPluginEx.apk

jar目錄下包括了靜態庫整合方式所需要的jar包、so檔案(支援arm,armv7,x86和mips平台)和資源檔。

注意:

data.bin檔案為圖片資源檔,必須存放在工程的res/drawable目錄下;

UPPayPluginEx.jar為jar包形式的控制項,必須存放在工程的libs目錄下;

libentryex.so為動態庫檔案,請根據需要存放於工程的libs/xxx/目錄下,其中xxx為armeabi,armeabi-v7a,mips,x86之一。

  1. 支援純無卡交易和有卡交易的版本,有卡交易支援銀聯的迷你IC卡產品、智能SD卡產品、VIPOS產品等,該版本主要位於upmp_android/sdkPro目錄下:

 

apk目錄下包括了通過apk方式接入的UPPayPluginExPro.apk

jar目錄下包括了靜態庫整合方式所需要的jar包、so檔案(支援arm,armv7,x86和mips平台)和資源檔。

注意:

data.bin檔案為圖片資源檔,必須存放在工程的res/drawable目錄下;

UPPayPluginExPro.jar為jar包形式的控制項,必須存放在工程的libs目錄下;

libentryexpro.so為動態庫檔案,請根據需要存放於工程的libs/xxx/目錄下,其中xxx為armeabi,armeabi-v7a,mips,x86之一。

  1. 介面說明

upmp_android/UPPayAssistEx.jar包中定義了啟動支付控制項的介面,介面定義如下:

 

其它輔助介面:

 

  1. 添加SDK包

拷貝upmp_android\sdknocard\UPPayAssistEx.jar(或upmp_android\sdkPro\UPPayAssistEx.jar)到工程的libs\目錄下;

同時也可將upmp_android\sdknocard\apk\UPPayPluginEx.apk (或upmp_android\sdkPro\apk\UPPayPluginExPro.apk)複製到用戶端工程的assets目錄下,效果如:

 

   接著請按右鍵工程,選擇Build Path中的 Configure Build Path …,選中Libraries這個tab,並通過Add Jars…匯入工程libs目錄下的UPPayAssistEx.jar包。如: 

  1. 調用支付控制項
  1. 在調用支付控制項的代碼檔案中引入UPPayAssistEx類如:
  2.  
  3. 接著可以通過以下方式調用支付控制項:
  4.  

支付完成後,擷取支付控制項支付結果,並添加相應處理邏輯,只需實現調用Activity中的onActivityResult()方法即可,執行個體代碼如下:

 

 五、手機Web網站

  1. 支援瀏覽器
  • UC瀏覽器Android版本(通過方式一接入,對方式二能支援,但不檢測)
  • UC瀏覽器iOS版本(通過方式二接入)
  • QQ瀏覽器Android版本 3.6及以上(通過方式二接入)
  • 360瀏覽器Android版本2.7及以上(通過方式二接入)
  • Opera瀏覽器Android HD版本1.3及以上(通過方式二接入)
  • 系統原生瀏覽器Android版本和iOS版本(僅支援通過方式二接入)

具體資訊參考附錄一

  1. 方式一

調用支付控制項的Web頁面需要內嵌程式碼

 

其中<embed>為銀聯手機支付UC外掛程式標籤項,在UC瀏覽器中顯示為銀聯手機支付按鈕, 。其中前幾個參數,不要進行修改:

type="application/x-unionpayplugin" uc_plugin_id="unionpay" height="53" width="178"

其中,訂單資訊部分構成參考Web訂單產生。

支付控制項頁面內嵌程式碼範例(消費交易)

 

  1. 方式二

    調用銀聯手機支付控制項頁面需要內嵌程式碼

 

其中,<a>為銀聯手機支付非UC瀏覽器接入控制項採用標籤項,在非UC瀏覽器中顯示為銀聯手機支付按鈕, 。銀聯手機支付表徵圖部分指明該表徵圖的路徑。

 

支付控制項頁面內嵌程式碼範例

 

  1. Web訂單產生

展示在Web頁面上的訂單資訊產生方式如下:

  1. 將表5-1中訂單資訊中的resultURL的值採用URLEncode方式進行編碼,按表5-1的格式與其他欄位拼接出訂單資訊。
  2. 將步驟a)中產生的結果採用base64進行編碼。
  1. 將步驟b)中產生的結果採用URLEncode方式進行編碼得到最終展示的資料。

即:

paydata = urlEncode(base64(“tn=” + tn + ”, resultURL=” + urlEncode(resultURL) + ”, usetestmode=” + usetestmode))

 

Web網站訂單中的每個參數對由參數值組成,參數間“,”隔開。參數間不要有空格,格式如下:

表5-1 web訂單構成

 

 

表5-2 訂單資訊域說明

 

  1. 接入瀏覽器方案推薦
  1. 針對UC、QQ、360瀏覽器(瀏覽器伺服器上版本為最新的)直接頁面顯示對應tag就可以
  2. 針對Opera(雖然對接了,但是其伺服器上尚未提供較新版本外掛程式下載),頁面提示支援的控制項版本,並告知使用者查看控制項版本的方式和升級的地址
  3. 針對未對接的瀏覽器(主要包括原生瀏覽器),按照方式2處理
  1. 控制項

Android

http://mobile.unionpay.com/getclient?platform=android&type=securepayplugin

iOS

http://mobile.unionpay.com/getclient?platform=ios&type=securepayplugin 

六、開發人員注意事項

  1. 通過瀏覽器方式接入支付控制項時,傳入的resultURL應該可以接受參數,並且需要採用URLEncode方式進行編碼,編碼之前的url形式如:

https://example.com/example?argName=

七、常見問題總結

  1. iOS平台常見問題
  • 編譯錯誤解決

UPPayDemo工程在編譯的過程中可能會出現Undefined symbols for architecture armv6/armv7/i386的編譯錯誤。如果出現這樣的錯誤,有以下幾種解決辦法:

1)由於支付控制項使用到了C、C++和OC混編的情況,所以商戶工程引入UPPayPlugin.h標頭檔以後可能會出現連結錯誤。這個時候可以通過兩種方式解決:

① 將涉及到引用UPPayPlugin.h的源檔案的尾碼名都改為.mm;

② 如果商戶不想修改源檔案的尾碼名,可以在工程中添加一個空的繼承自NSObject的類,並將檔案.m尾碼名該改為.mm即可。方法為new file->Objective-C class->類名自取->儲存->修改尾碼名為.mm。

③ 將工程的compile source as 選項的值不是Objective–C++;

2)由於在UPPayDemo工程中添加了自訂的庫檔案libUPPayPlugin.a,當編譯Demo工程時,應該檢查工程設定Search Paths裡的Framework Search Paths、Header Search Paths、Library Search Paths的路徑設定,看設定路徑是否正確,另外還要注意裡邊是否多餘一些不確定的路徑

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.