中國銀聯股份有限公司規範性文檔php |
中國銀聯股份有限公司 發佈html |
中國銀聯全渠道系統商戶接入java 測試指引-銀聯網關支付產品web |
版本修訂信息算法
版本號windows |
完成日期api |
發佈日期數組 |
變動說明瀏覽器 |
1.0.0安全 |
2014-7-03 |
2014-7-03 |
初稿 |
1.0.1 |
2014-11-04 |
2014-11-05 |
修改文檔格式,新增測試地址與測試卡號等信息 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
目錄
網關產品主要適用於持卡人在商戶網站B2C購物支付場景,持卡經過點擊銀聯在線支付logo,並在銀聯在線支付網關完成支付信息錄入,最終完成支付。
從PC端發起的交易爲WEB網關支付交易,從移動端發起的交易爲WAP網關支付交易以及APP網關交易。
首次接入測試先了解前臺交易與後臺交易的區別,可參考第1.3章節業務術語描述,隨後可從第5章節開發步驟嚮導開始閱讀,瞭解開發過程當中的具體操做步驟,此章節中提到的簽名機制請參照第8章節。開發過程當中須要用到的測試與生產交易地址請參考第11章節配置文件。交易測試卡號請參考第3.2章節。如開發與測試過程當中遇到了解決不了的問題可在第12章節FAQ中查找解決方案,也可經過第1.4.2章節中的方法來獲取測試支持。
《中國銀聯全渠道系統商戶接入測試指引》文檔是面向具備必定的網站開發能力的網站開發、維護和管理人員。
具體交易的接口、報文規範、響應碼說明,請閱讀開發包中接口文檔。
參與方描述 |
|
商戶 |
指加入銀聯網絡,與銀聯簽定《銀聯卡無卡支付業務合做協議》等協議開展銀聯無卡支付以及行業類應用業務的商戶。 |
收單機構 |
指加入銀聯網絡,與銀聯簽定《銀聯卡無卡支付業務合做協議》開展銀聯無卡支付收單業務的境內成員機構。 |
術語 |
解釋 |
請求 |
經過 HTTP/HTTPS協議把須要傳輸的數據發送給接收方的過程。 |
應答 |
經過 HTTP/HTTPS協議把須要傳輸的數據返回給接收方的過程。 |
後臺通知 |
服務器後臺通知。中國銀聯全渠道系統根據獲得的數據處理完成後,全渠道系統主動發起通知給商戶的網站,同時攜帶處理完成的結果信息反饋給商戶網站。 |
前臺類交易 |
主要指用戶須要參與交互的支付類交易,包括消費、預受權/擔保消費交易。 |
後臺類交易 |
主要指用戶不須要參與交互,由商戶後續發起的交易,包括消費撤銷、退貨、預受權撤銷、預受權完成、預受權完成撤銷等交易。 |
全渠道系統/ACP |
中國銀聯全渠道系統,是整合了銀聯在線和銀聯移動支付功能的新交易處理系統。 |
接入網關支付產品的商戶爲選測。
注:
必測是指提交了入網申請表、必須測試經過才能投產上線的,選測是指不須要入網申請表能夠直接投產上線的,是否在測試環境測試由商戶本身決定。
必測 |
選測 |
收單機構接入 |
商戶接入(接入產品爲除無跳轉支付、後臺直接支付、代收和便民繳費之外的其餘產品) |
商戶接入(接入產品爲無跳轉支付、後臺直接支付、代收和便民繳費) |
業務問題詳見開發包中《中國銀聯全渠道系統業務運營服務指引》相關人員聯繫方式。
測試問題支持人員聯繫方式詳見下表:
必測 |
選測 |
收單機構可聯繫銀聯服務專員,而且在提交了入網申請後銀聯服務專員會主動聯繫商定窗口並提供測試支持服務 |
商戶可發送郵件到acpservice@unionpay.com郵箱(郵件標題爲:商戶號+商戶名稱+聯繫QQ),提供商戶號和聯繫QQ,銀聯測試服務專員會將商戶接口人的聯繫QQ加入到銀聯統一服務QQ中提供支持服務(商戶也能夠經過服務電話021-38929999-2049來提供本身的商戶號和聯繫QQ) |
銀聯市場服務表明在爲商戶提交了入網申請後,會有銀聯服務專員主動聯繫(通常爲QQ)商定聯調窗口並提供測試支持服務 |
注:
服務郵箱和服務電話僅供選測類商戶聯繫測試支持人員,而且郵箱和電話不直接反饋支持問題,支持服務均在銀聯統一服務QQ中提供。
商戶或收單機構全渠道系統開發包和本測試指引進行接入開發。
本步驟可選。開發完成後可經過銀聯提供的聯調測試環境進行聯機接口驗證測試,測試地址參考測第11章節配置文件說明。
在測試環境完成聯調測試後,由銀聯業務運營人員(聯繫方式參見《中國銀聯全渠道系統業務運營服務指引》)引導協助商戶完成生產交易證書的申請,商戶將接口更新部署到生產環境和銀聯生產環境完成對接。
測試地址詳見第11章節配置文件描述。
測試卡號 |
平安銀行借記卡:6216261000000000018 姓名:全渠道 |
平安銀行貸記卡:6221558812340000 姓名:互聯網 證件號:341126197709218366 有效期:1711 |
序號 |
接口名稱 |
功能說明 |
交易模式 |
1 |
消費類交易(前臺類) |
持卡人進支付時,由銀聯或髮卡行展現支付頁面,引導持卡人完成後續支付的交易。 |
前臺資金類交易 |
2 |
消費撤銷類交易 |
指因人爲緣由而撤銷已完成的消費;消費撤銷必須是撤銷CUPS當日當批的消費 |
後臺資金類交易 |
3 |
退貨類交易 |
對於已結算的消費交易,經過該交易發起退款交易。 |
後臺資金類交易 |
4 |
交易狀態查詢類交易 |
對未收到應答的或交易狀態未知的交易,可經過該交易進行查詢。 |
查詢類交易 |
5 |
文件傳輸類交易 |
聯機下載對帳文件等文件下載類交易 |
後臺非資金交易 |
6 |
預受權類交易 |
預受權交易用於受理方向持卡人的髮卡方確認交易許可。受理方將預估的消費金額做爲預受權金額,發送給持卡人的髮卡方。 |
前臺或後臺資金類交易 |
7 |
受權撤銷類交易 |
對已成功的預受權交易,在結算前使用該交易進行取消。 |
後臺資金類交易 |
8 |
受權完成類交易 |
對已批准的預受權交易,用該交易進行支付結算; |
後臺資金類交易 |
9 |
受權完成撤銷類交易 |
預受權完成撤銷交易必須是對原始預受權完成交易的全額撤銷。預受權完成撤銷後的預受權仍然有效。 |
後臺資金類交易 |
10 |
餘額查詢 |
|
後臺非資金類交易 |
11 |
電子現金非指定帳戶圈存 |
|
後臺資金類交易 |
12 |
電子現金指定帳戶圈存 |
|
後臺資金類交易 |
13 |
圈存腳本通知 |
|
後臺資金類交易 |
14 |
IC卡脫機消費通知 |
|
後臺資金類交易 |
產品介紹詳見《網關支付產品入網材料》包中的《銀聯全渠道系統網關產品.pptx》。
從技術實現方式上交易大體可劃分爲前臺類交易、後臺資金類類交易、後臺非資金類交易、查詢類交易、批量類交易。本節將描述各類交易的大體流程。
全部報文域以key/value的表單方式經過HTTP Post到銀聯全渠道系統支付平臺。對於前臺類須要持卡人交互的交易,交易經過異步跳轉的方式完成,對於涉及資金的前臺類交易,銀聯全渠道系統支付平臺可經過商戶後臺通知地址向商戶發送後臺通知。對於後臺類涉及資金清算類無需持卡人交互的交易,交易結果異步響應給商戶,商戶經過接受後臺通知或者發起交易查詢獲取交易處理結果。對於後臺類非資金類無需持卡人交互的交易,交易結果同步響應給商戶。對應交易狀態查詢類交易,交易結果同步響應給商戶。
前臺類交易是指交易請求方(如商戶、收單機構)與ACP之間的交易信息經過用戶瀏覽器進行傳遞的交易,是一種異步的、須要持卡人蔘與完成的交易類型。對於涉及金額的前臺類交易(即交易請求中有金額字段)ACP系統均會給請求方後臺通知(後臺通知報文要素同前臺應答的要素),請求方也必須實現接收後臺通知。對於交易狀態未知的交易請求方必須發起交易狀態查詢交易。
圖 1‑1
注意點:
1. 每一個交易須要的報文要素是不同的,具體每一個交易須要的要求,請參考接口文檔;
2. 圖1‑1中第8步前臺應答返回的URL爲請求報文中的「frontUrl」字段指定的URL;
3. 圖1‑1中第7步後臺應答返回的URL爲請求報文中的「backUrl」字段指定的URL;
後臺類資金類交易是指交易請求方(如商戶、收單機構),將交易信息(涉及資金清算的交易)直接經過請求方服務器發送至ACP服務器的交易方式。是一種異步的、不須要持卡人蔘與完成的交易類型。因涉及資金的清算,ACP系統均會給請求方後臺通知(後臺通知報文要素同前臺應答的要素),請求方也必須實現接收後臺通知。對於交易狀態未知的交易請求方必須發起交易狀態查詢交易。
圖 1‑3
注意: |
1. 每一個交易須要的報文要素是不同的,具體每一個交易須要的要求,請參考開發包中接口規範文檔; |
2. 圖1-3中第4步中的應答僅表明該筆後臺請求交易已經受理,不表明所有處理成功;是否處理成功,需經過接受後臺通知或者發起「交易狀態查詢交易」進行查詢; |
3. 第5步後臺應答返回的URL爲請求報文中的「backUrl」字段指定的URL。 |
後臺類非資金類交易是指交易請求方(如商戶、收單機構)將交易信息(不涉及資金清算的交易)直接經過請求方服務器發送至ACP服務器的交易方式。後臺非資金類交易均爲同步短鏈接方式,不須要持卡人蔘與完成的交易類型。若通信超時,則交易請求方能夠重複發起交易。
圖1‑4
查詢交易是指交易請求方(如商戶、收單機構)將交易查詢報文信息直接經過請求方服務器發送至ACP服務器的交易方式。查詢類交易均爲同步短鏈接方式,不須要持卡人蔘與完成的交易類型。,若通信超時,則交易請求方能夠重複發起交易。
圖 1‑5
1. 以表單的方式組裝要發送給銀聯全渠道系統的數據對象(包括IC卡交易信息域,VPC交易信息域,風控信息域等各域)。每一個域填寫方法可參考文檔開發包中接口文檔。
2. 將組裝好的數據排序好並用&鏈接後簽名,生成signature字段,可以使用插件包提供的方法「SDKUtil.sign(未簽名報文, 報文字符集);」具體簽名機制請參照第8章節。可經過調用插件包提供的簽名方法來完成簽名。
3. 把全部要發送給銀聯全渠道系統的域包括signature和signMethod,組成表單以POST方式送給銀聯全渠道系統前臺交易的地址。
4. 交易完成後,銀聯全渠道系統將把交易結果分別返回通知到商戶通的前臺應答地址和後臺應答地址上,商戶接收到交易通知後可分別調用「SDKUtil.convertResultStringToMap(應答報文);」方法進行應答報文解析,和「SDKUtil.validate(應答報文, 報文字符集)」方法進行簽名驗證。
1. 商戶按照不一樣的交易組裝報文,交易報文請參考開發包中接口規範。
2. 把組裝好的數據排序好並用&鏈接後簽名,生成signature字段,可以使用插件包提供的方法「SDKUtil.sign(未簽名報文, 報文字符集);」,具體簽名機制請參照第7章節。
3. 把全部數據,包括signature和signMethod用key=value並用&符號連接的方式組裝成字符串,經過插件包提供的方法進行發送。
4. 接收到返回報文後,經過插件包提供的方法進行驗證簽名,調用「SDKUtil.convertResultStringToMap(應答報文);」方法進行應答報文解析,和「SDKUtil.validate(應答報文, 報文字符集)」方法進行簽名驗證。
1. 商戶按照不一樣的交易組裝報文,交易報文請參考開發包中接口規範。
2. 把組裝好的數據排序好並用&鏈接後簽名,生成signature字段,可以使用插件包提供的方法「SDKUtil.sign(未簽名報文, 報文字符集);」,具體簽名機制請參照第8章節。
3. 數據,包括signature和signMethod用key=value並用&符號連接的方式組裝成字符串,經過插件包提供的方法進行發送。
4. 返回報文後,經過插件包提供的方法進行驗證簽名,調用「SDKUtil.convertResultStringToMap (應答報文);」方法進行應答報文解析,和「SDKUtil.validate (應答報文, 報文字符集)」方法進行簽名驗證。
1.照單筆查詢交易的規範組裝報文,交易報文請參考開發包中接口文檔
2.好的數據排序好並用&鏈接後簽名,生成signature字段,可以使用插件包提供的方法「SDKUtil.sign(未簽名報文, 報文字符集);」,具體簽名機制請參照第7章節。
3.數據,包括signature和signMethod用key=value並用&符號連接的方式組裝成字符串,經過SDK提供的方法進行發送。
4.返回報文後,經過插件包提供的方法進行驗證簽名,調用「SDKUtil.convertResultStringToMap(應答報文);」方法進行應答報文解析,和「SDKUtil.validate(應答報文, 報文字符集)」方法進行簽名驗證。
文件的格式,參照接口文檔,文件名,文件頭,文件,文件以inputfilepost方式提交到服務器,以文件流的方式獲取字節流信息,先須要解壓縮文件內容的byte[]數組,用SecureUtil.deflater方法,後BASE64編碼,用SecureUtil.base64Encode方法,返回,最終以字符串方式提交處處理服務器,服務器響應報文裏有filecontent字段,先用SecureUtil.base64Decode解碼,後用SecureUtil.inflater方法解壓縮,返回byte[],接下來就能夠經過文件輸出的方法,生成文件。
文件轉字符串
圖2‑1
前臺交易,商戶或機構須要提供兩個地址frontUrl和backUrl(經過報文域上送),分別接收銀聯全渠道系統的前臺應答和後臺通知。前臺應答是經過瀏覽器,用戶點擊「返回商戶」按鈕發送給商戶的,後臺通知是銀聯全渠道系統異步把交易狀態爲成功的交易通知給商戶。具體詳細關於前臺應答和後臺通知請參照接口文檔。無論收到前臺應答仍是後臺通知,商戶都須要驗籤。
在交易結束後,銀聯全渠道系統經過後臺通知將交易結果發給商戶或機構。後臺通知以標準的HTTP協議的POST方法向商戶的後臺通知URL發送,並設置一個超時計時器,一般設置爲10s。商戶在收到通知,解析後應當即返回應答報文。僅當POST返回碼爲200時,才認爲商戶已經成功收到而且能正確解析後臺通知,其餘返回碼則被認爲通知失敗。若是計時器超時,沒有收到應答報文,也被認爲通知失敗。
第一次通知失敗後,會經過退避策略進行通知重發,最多發送五次。因爲網絡等緣由,商戶會收到重複的後臺通知。
商戶或機構在接收到銀聯全渠道系統的前臺應答或後臺通知後,首先必須驗證該消息的簽名,而後根據訂單號等信息,更新相應系統中的訂單支付狀態。前臺通知因存在用戶支付完畢後直接關閉瀏覽器的狀況,而不能保證每次都送達。後臺通知由銀聯銀聯全渠道系統通知服務器主動發起,若發送失敗,銀聯全渠道系統會繼續發送,一共發送5次,若仍是發送失敗,也不繼續發送。商戶在未收到後臺應答,建議請求20分鐘後主動發起交易查詢交易來查詢交易狀態。
另外,退貨等後臺類交易(如有開發)是異步過程,銀聯全渠道系統收到後臺類交易請求後會回覆一個請求已接受的應答。在交易處理後,銀聯全渠道系統會發送後臺通知給商戶,建議商戶不管是否收到後臺通知,在請求2分鐘後主動發起交易查詢交易來查詢交易狀態。
注:銀聯全渠道系統只針對成功交易會發送後臺通知,失敗交易不發送後臺通知。所以,如未收到後臺通知,建議商戶主動發起交易查詢交易,查詢交易狀態。
另外後臺通知接收須要注意如下幾點:
1.後臺通知採用POST的方式來發送,POST的地址是商戶上送的backUrl域,backUrl域須要保證該地址的正確性。
2.後臺通知中,只要是非通訊類錯誤(如通訊超時,沒法解析域名,沒有路由等),都認爲商戶已經收到,不會進行重發。若是商戶由於非通訊類問題沒有及時收到應答(好比應用切換等狀況),或者收到應答時處理失敗(處理邏輯的驗證應該在測試環境下已經驗證經過),商戶應該對沒有及時收到應答的交易經過查詢接口來查詢該交易的狀態。
3.肯定通知成功由如下幾個要素
a) 通知URL填寫正確(商戶必需要保證URL的正確性)
b) 通訊正確(通訊失敗時必須重發)
c) 商戶可以正確驗籤(測試環境要測試經過)
所以,只要生產上可以證實通訊是正確的,便可認爲通知成功。若是商戶端由於某種特殊緣由,沒有正確處理後臺通知,能夠經過交易查詢接口來糾正交易的狀態。
1. 若是已收到後臺通知,則不須要發起查詢。
2. 在訂單發起後半小時未收到後臺通知,則須要發起查詢。
3. 具體的查詢交易開發方法可參考5.4章節。
1. 若是已收到後臺通知,則不須要發起查詢。
2. 在訂單發起後半小時未收到後臺通知,則須要發起查詢。
3. 具體的查詢交易開發方法可參見第4.5章節。
後臺交易採用同步機制,交易結果同步返回。
1. 若是已接收到明確的交易結果應答,則不須要發起查詢。
2. 前臺交易,若未接收到全渠道系統的明確交易應答時需發起單筆查詢交易,查詢明確的交易結果。
3. 後臺交易,若出現交易超時的狀況則須要發起單筆查詢交易,查詢明確的交易結果。
對於報文的簽名處理機制以下:
首先,對報文中出現簽名域(signature)以外的全部數據元採用key=value的形式按照名稱排序,而後以&做爲鏈接符拼接成待簽名串。其次,對待簽名串使用SHA-1算法作摘要,並轉成16進制,再使用銀聯頒發給商戶的商戶RSA私鑰證書對摘要作簽名操做(簽名時算法選擇SHA-1)。最後,對簽名作Base64編碼,將編碼後的簽名串放在簽名(signature)表單域裏和其餘表單域一塊兒經過HTTP Post的方式傳輸給銀聯全渠道系統支付平臺。
對於報文的驗籤處理機制以下:
首先,對報文中出現簽名域(signature)以外的全部數據元採用key=value的形式按照名稱排序,而後以&做爲鏈接符拼接成待簽名串。其次,對待簽名串使用SHA-1算法作摘要,並轉成16進制,再使用商戶入網時銀聯提供的銀聯全渠道系統支付通信RSA公鑰證書對摘要和報文中的簽名信息作簽名驗證操做。
對於持卡人密碼銀聯全渠道系統支付平臺使用RSA公鑰證書對ANSI X9.8帶主賬號格式的PIN加密並作Base64編碼後傳輸,以保障密碼的安全性。依據商戶可選配置,對於CVN二、有效期、卡號使用RSA公鑰證書分別作加密並Base64處理。
對於敏感信息銀行卡驗證信息及身份信息部份內容,採用Base64編碼後傳輸,以作數據屏蔽。
對於文件內容,使用DEFLATE壓縮算法壓縮後,Base64編碼的方式傳輸,壓縮編碼後的內容參與簽名摘要運算。
1. 商戶簽名證書:商戶接入銀聯支付後會收到兩碼,經過在CFCA網站下載pfx證書。此證書用於請求報文的簽名。測試證書隨開發包提供。
2. 商戶的密碼加密證書:商戶會收到一個密碼加密的公鑰證書,此證書用於對銀行卡密碼的加密、cvn二、有效期及卡號等的加密。測試證書隨開發包提供。
3. 商戶的交易報文驗證簽名證書:驗證銀聯支付返回的報文是否合法。測試證書隨開發包提供。
1. 登入CFCA官網網址:www.cfca.com.cn,點擊「生產系統證書下載」;
2. 在生產證書下載選項中點擊 à 證書下載;
3. 首次下載證書,請按照頁面提示安裝相應程序,以保證證書順利下載;
4. 點擊左側「用戶證書下載」,並點擊「接受此協議」;
5. 輸入CFCA提供的兩碼(用戶參考號、用戶受權碼),制證方式默認,軟件CSP默認,點擊下
6. 完成下載操做後,頁面會出現下載成功的提示。下載的證書自動存放在IE中。
1. 打開瀏覽器,點選 工具 à Internet選項 à 內容 à 證書;
2. 以商戶號:700000000000001爲例說明整個導出流程
在我的證書中找到相對應的證書,點選導出;
3.跳出證書導出嚮導對話框,點擊下一步;
4. 選擇導出私鑰(如須要在服務網站上傳證書公鑰,請選擇第二個選項如下載公鑰證書,後續操做選擇默認方式,再選擇路徑導出),點擊下一步;
5. 導出文件格式默認點擊下一步;
6. 鍵入證書私鑰,建議不要超過6位;
7. 指定導出證書的文件名,並選擇目錄存放證書,點擊下一步;
8. 點擊完成,證書導出成功。
插件包只是爲了方便商戶測試而提供的樣例代碼,商戶能夠根據本身網站的須要,按照技術文檔編寫,並不是必定要使用該代碼。代碼僅供參考
插件以JAR包的形式提供給商戶,工程名稱爲upacp_sdk_java。
1. log4j.properties:插件的日誌機制使用log4j實現,可將提供的配置文件合併到項目的log4j配置中,並根據環境須要修改日誌路徑;
2. acp_sdk.properties:測試環境參數配置文件(不含手機控件支付)
具體配置: |
###### SDK 配置文件配置文件中日誌和證書的存放路徑根據實際狀況配置,交易地址和證書根據測試環境、生產環境配套配置##### #SDK 日誌目錄配置 log.back.rootPath=d://log ##########################交易發送地址配############################# ######(如下配置爲認證環境:入網測試環境用,生產環境配置見文檔說明)####### ##前臺交易請求地址 acpsdk.frontTransUrl=https://101.231.204.80:5000/gateway/api/frontTransReq.do ## app 交易請求地址 ## acpsdk.appTransUrl=https://101.231.204.80:5000/gateway/api/appTransReq.do ##後臺交易請求地址 acpsdk.backTransUrl=https://101.231.204.80:5000/gateway/api/backTransReq.do ##後臺交易請求地址(若爲有卡交易配置該地址) #acpsdk.cardTransUrl=https://101.231.204.80:5000/gateway/api/cardTransReq.do ##單筆查詢請求地址 acpsdk.singleQueryUrl=https://101.231.204.80:5000/gateway/api/queryTrans.do ##批量交易請求地址 acpsdk.batchTransUrl=https://101.231.204.80:5000/gateway/api/batchTrans.do ##文件傳輸類交易地址 acpsdk.fileTransUrl=https://101.231.204.80:9080/ ########################簽名證書配置################################ ######(如下配置爲測試環境:入網測試環境用,生產環境配置見下述文檔說明)####### ##簽名證書路徑 acpsdk.signCert.path=d:\\certs\\700000000000001_acp.pfx ##簽名證書密碼 acpsdk.signCert.pwd=000000 ##簽名證書類型 acpsdk.signCert.type=PKCS12 ##########################加密證書配置################################ ##密碼加密證書路徑 acpsdk.encryptCert.path=d:\\certs\\encrypt.cer |
3.acp_sdk.properties:生產環境參數配置文件
具體配置: |
##########################交易發送地址配############################# ######(如下配置爲生產環境用)####### ##前臺交易請求地址 acpsdk.frontTransUrl=https://gateway.95516.com/gateway/api/frontTransReq.do ## app 交易請求地址 ## acpsdk.appTransUrl=https://gateway.95516.com /gateway/api/appTransReq.do ##後臺交易請求地址 acpsdk.backTransUrl=https://gateway.95516.com/gateway/api/backTransReq.do ##後臺交易請求地址(若爲有卡交易配置該地址) #acpsdk.cardTransUrl=https://gateway.95516.com /gateway/api/cardTransReq.do ##單筆查詢請求地址 acpsdk.singleQueryUrl=https://gateway.95516.com/gateway/api/queryTrans.do ##批量交易請求地址 acpsdk.batchTransUrl=https://gateway.95516.com/gateway/api/batchTrans.do ##文件傳輸類交易地址 acpsdk.fileTransUrl=https://filedownload.95516.com/ ########################簽名證書配置################################ ##簽名證書路徑(請拿到生產環境證書後修改簽名路徑、證書名稱、證書密碼) acpsdk.signCert.path=d:\\certs\\700000000000001_acp.pfx ##簽名證書密碼 acpsdk.signCert.pwd=123456 ##簽名證書類型 acpsdk.signCert.type=PKCS12 ##########################加密證書配置################################ ##密碼加密證書路徑 acpsdk.encryptCert.path=d:\\certs\\encrypt.cer |
主要類與方法說明 |
com.unionpay.acp.sdk.SDKConfig.java:負責讀取acp_sdk.properties及設置參數。 |
方法:public void loadPropertiesFromSrc() 從標準CLASS類路徑下LOAD配置文件。
方法:public void loadPropertiesFromPath(String rootPath) 從標準CLASS類路徑下LOAD配置文件。
方法:public void loadProperties(Properties pro) 使用傳入的Properties對象LOAD配置。 |
主要類與方法說明 |
com.unionpay.acp.sdk.SDKUtil.java:主要負責組裝報文、證書籤名、發送報文、接收報文、驗證簽名、加密解密等操做,具體請查看代碼。 |
方法:publicstatic String send(String url, Map<String, String> data, String encoding,intconnectionTimeout, intreadTimeout) 發送後臺交易。
方法:publicstaticboolean sign(Map<String, String> data, String encoding) 生成簽名。
方法:publicstaticboolean validate(Map<String, String> resData, String encoding) 驗證簽名。
方法:publicstatic String coverMap2String(Map<String, String> data) 將Map形式的表單交易數據轉換爲key1=value1&key2=value2的形式
方法:publicstatic Map<String, String> coverResultString2Map(String result) 將形如key=value&key=value的字符串轉換爲相應的Map對象
方法:publicstatic String encryptPin(String card, String pwd, String encoding) 密碼加密,輸入參數依次爲卡號、密碼、字符集。 |
主要類與方法說明 |
com.unionpay.acp.sdk.SDKConstants.java:常量類。 定義可能用到的各類常量和全部域名。 |
主要類與方法說明 |
com.unionpay.acp.sdk.CertUtil.java: 證書操做工具類,主要是導入pfx、cer等證書與獲取獲取私鑰、獲取公鑰操做。 |
主要類與方法說明 |
com.unionpay.acp.sdk.SecureUtil.java主要負責報文的簽名、驗證簽名及加密解密; 提供MD五、SHA-1以及RSA簽名的方法類。 |
主要類與方法說明 |
com.unionpay.acp.sdk.HttpClient.java 是通訊類,具體請參考代碼的說明。 提供和服務器通訊的HTTP客戶端類。 |
方法:publicint send(Map<String, String> data, String encoding) throwsException 將請求參數以HTTP表單的方式進行一次HTTP POST通訊。 |
Sample說明 |
com.unionpay.acp.sdksample.front:包下爲前臺交易demo |
方法:com.unionpay.acp.sdksample.back:包下爲後臺交易demo 具體內容見DEMO代碼中的註釋和說明。 |
配置文件加載說明 |
1) acp_sdk.properties |
i. 從classpath加載 SDKConfig.getConfig().loadPropertiesFromSrc(); ii. 從properties對象中加載 SDKConfig.getConfig().loadProperties(pro); iii. 從指定目錄下加載rootPath不包含文件名 SDKConfig.getConfig().loadPropertiesFromPath(rootPath); |
2) log4j.properties:放在工程的classpath目錄下,系統自動加載 |
插件按編碼爲gbk編寫,工程名稱爲upacp_sdk_php,供系統集成。
openssl證書需下載使用 其中的php_openssl.dll,ssleay32.dll,libeay32.dll3個文件拷到 windows/system32/文件夾下,在重啓Apache服務
1. SDKConfig.php測試環境配置文件:具體配置項和說明以下;
具體配置: |
###### SDK 配置文件配置文件中日誌和證書的存放路徑根據實際狀況配置,交易地址和證書根據測試環境、生產環境配套配置##### ##########################交易發送地址配############################# ######(如下配置爲認證環境:入網測試環境用,生產環境配置見文檔說明)####### ##前臺交易請求地址 const SDK_FRONT_TRANS_URL = 'https://101.231.204.80:5000/gateway/api/frontTransReq.do'; ##後臺交易請求地址 const SDK_BACK_TRANS_URL = 'https://101.231.204.80:5000/gateway/api/backTransReq.do'; ##後臺交易請求地址(若爲有卡交易配置該地址) constSDK_Card_Request_Url = 'https://101.231.204.80:5000/gateway/api/cardTransReq.do'; ##單筆查詢請求地址 const SDK_SINGLE_QUERY_URL = 'https://101.231.204.80:5000/gateway/api/queryTrans.do'; ##批量交易請求地址 const SDK_BATCH_TRANS_URL = 'https://101.231.204.80:5000/gateway/api/batchTrans.do'; ##文件傳輸類交易地址 const SDK_FILE_QUERY_URL = 'https://101.231.204.80:9080/'; ##APP交易地址 constSDK_App_Request_Url = 'https://101.231.204.80:5000/gateway/api/appTransReq.do'; ########################簽名證書配置################################ ######(如下配置爲測試環境:入網測試環境用,生產環境配置見下述文檔說明)####### ##簽名證書路徑 const SDK_SIGN_CERT_PATH = 'D:/certs/PM_700000000000001_acp.pfx'; ##簽名證書密碼 const SDK_SIGN_CERT_PWD = '000000'; ##簽名證書類型 acpsdk.signCert.type=PKCS12 ##驗籤 const SDK_VERIFY_CERT_PATH = 'D:/certs/verify_sign_acp.cer'; ##前臺通知地址 (商戶自行配置通知地址) const SDK_FRONT_NOTIFY_URL = 'http://127.0.0.1/upacp_sdk_php/demo/response.php'; // 後臺通知地址 (商戶自行配置通知地址) const SDK_BACK_NOTIFY_URL = 'http://127.0.0.1/upacp_sdk_php/demo/response.php'; //文件下載目錄 const SDK_FILE_DOWN_PATH = 'd:/file/'; //日誌 目錄 const SDK_LOG_FILE_PATH = 'D:/logs/'; //日誌級別 const SDK_LOG_LEVEL = 'INFO';
##########################加密證書配置################################ ##密碼加密證書路徑 const SDK_ENCRYPT_CERT_PATH = 'D:/certs/encrypt.cer'; |
2. SDKConfig.php ,生產測試環境配置文件:具體配置項和說明以下;
具體配置: |
##########################交易發送地址配############################# ######(如下配置爲生產環境用)####### ##前臺交易請求地址 const SDK_FRONT_TRANS_URL = 'https://gateway.95516.com/gateway/api/frontTransReq.do'; ##後臺交易請求地址 const SDK_BACK_TRANS_URL = 'https://gateway.95516.com/gateway/api/backTransReq.do'; ##後臺交易請求地址(若爲有卡交易配置該地址) constSDK_Card_Request_Url = 'https://gateway.95516.com/gateway/api/cardTransReq.do'; ##單筆查詢請求地址 const SDK_SINGLE_QUERY_URL = 'https://gateway.95516.com/gateway/api/queryTrans.do'; ##批量交易請求地址 const SDK_BATCH_TRANS_URL = 'https://gateway.95516.com/gateway/api/batchTrans.do'; ##文件傳輸類交易地址 const SDK_FILE_QUERY_URL = 'https://filedownload.95516.com/'; ##APP交易地址 constSDK_App_Request_Url = 'https://gateway.95516.com/gateway/api/appTransReq.do';
##前臺通知地址 (商戶自行配置通知地址) const SDK_FRONT_NOTIFY_URL = 'http://127.0.0.1/upacp_sdk_php/demo/response.php'; ##後臺通知地址 (商戶自行配置通知地址) const SDK_BACK_NOTIFY_URL = 'http://127.0.0.1/upacp_sdk_php/demo/response.php'; ##文件下載目錄 const SDK_FILE_DOWN_PATH = 'd:/file/'; ##日誌 目錄 const SDK_LOG_FILE_PATH = 'D:/logs/'; ##日誌級別 const SDK_LOG_LEVEL = 'INFO'; ########################簽名證書配置################################ ##簽名證書路徑(請拿到生產環境證書後修改簽名路徑、證書名稱、證書密碼) const SDK_SIGN_CERT_PATH = 'D:/certs/PRO_700000000000001_acp.pfx'; ##簽名證書密碼 const SDK_SIGN_CERT_PWD = '000000'; ##簽名證書類型 acpsdk.signCert.type=PKCS12 ##驗籤 const SDK_VERIFY_CERT_PATH = 'D:/certs/UPOP_VERIFY.cer'; ##驗簽證書路徑 const SDK_VERIFY_CERT_PATH = 'D:/certs/'; ##########################加密證書配置################################ ##密碼加密證書路徑 const SDK_ENCRYPT_CERT_PATH = 'D:/certs/RSA2048_PROD_index_22.cer'; |
主要類與方法說明 |
upacp_sdk_php.gbk.common.php:負責將請求報文排序後轉化爲字符串、將字符串轉爲數組 解壓、壓縮、構建自動提交表單等 |
function coverParamsToString($params) 功能: 將請求報文排序後轉化爲字符串 輸入: 請求數組 輸出: 排序後的 key1=val1&key2=val2&.... function coverStringToArray($str) 功能: 將字符串轉爲數組 輸入: key1=val1&key2=val2&.... 輸出: 數組元素 array(key1=>val1,key2=>val2...)
function deal_params(&$params) 功能: 處理返回報文 解碼客戶信息 輸入: 客戶信息 輸出: 將客戶信息組裝成customerInfo項
function deflate_file(&$params) 功能: 壓縮文件 輸入: 帶有文件上傳的請求報文 輸出: 將上傳文件壓縮後組裝進報文
function deal_file($params) 功能: 解壓縮文件 輸入: 帶有文件下載的返回報文 輸出: 處理文件內容並保存到指定目錄下
function create_html($params, $action) 功能: 構造自動提交的表單 輸入: 請求數組($params) ,請求的遠程url 輸出: 自動提交的form表單字符串
|
主要類與方法說明 |
upacp_sdk_php.gbk.httpClient.php:後臺交易 客戶端通訊等 |
httpClient.php function sendHttpRequest($params, $url) 功能: 後臺交易 HttpClient通訊 輸入: 請數據,及遠程通訊url 輸出: 後臺交易響應信息
function getRequestParamString($params) 功能: 請求數據 urlencode處理後轉爲key=val&...串 輸入: 請求數組 輸出: urlencode處理後的key=val&...串 |
主要類與方法說明 |
upacp_sdk_php.gbk.secureUtil.php:負責簽名,驗籤,加載證書,取公鑰/私鑰,加密卡號/cvn2/有效期等方法類 |
secureUtil.php function sign(&$params) 功能: 請求數據簽名 輸入: 請求數組 輸出: 帶簽名的請求數組
function verify($params) 功能: 驗籤 輸入: 返回報文 輸出: 成功/失敗
function getPulbicKeyByCertId($certId) 功能: 根據證書ID 加載 證書 輸入: 證書ID 輸出: 證書公鑰信息
function getCertId($cert_path) 功能: 取私鑰證書ID 輸入: 私鑰證書路徑 輸出: 證書ID
function getCertIdByCerPath($cert_path) 功能: 取公鑰證書ID 輸入: 公鑰證書路徑 輸出: 證書ID
function getSignCertId() 功能: 取簽名證書ID 輸入: 簽名證書路徑 輸出: 證書ID
function getPublicKey($cert_path) 功能: 獲取證書公鑰 輸入: 證書路徑 輸出: 公鑰
function getPrivateKey($cert_path) 功能: 獲取證書私鑰 輸入: 證書路徑 輸出: 私鑰
function encryptPan($pan) 功能: 加密 卡號 輸入: 卡號 輸出: 加密後卡號
function encryptPin($pan, $pwd) 功能: pin 加密 輸入: 卡號,密碼 輸出: 加密後密碼
function encryptCvn2($cvn2) 功能: cvn2 加密 輸入: cvn2 輸出: 加密後cvn2
function encryptDate($certDate) 功能: 有效期 加密 輸入: 有效期 輸出: 加密後有效期
|
主要類與方法說明 |
upacp_sdk_php.gbk.PublicEncrypte.php:密碼加密 |
upacp_sdk_php.gbk.PinBlock.php:密碼轉pin |
upacp_sdk_php.gbk.log.class.php:日誌類 |
插件.net Framework4.0環境以上編寫,ICSharpCode.SharpZipLib手動添加,引用工程名稱爲upacp_sdk_php,供系統集成。
1. Web.config:入網測試環境參數配置文件
具體配置: |
###### SDK 配置文件配置文件中日誌和證書的存放路徑根據實際狀況配置,交易地址和證書根據測試環境、生產環境配套配置##### ##########################交易發送地址配############################# ######(如下配置爲認證環境:入網測試環境用,生產環境配置見文檔說明)####### ##前臺交易請求地址 <add key="sdk.frontTransUrl" value="https://101.231.204.80:5000/gateway/api/frontTransReq.do" /> ##後臺交易請求地址 <add key="sdk.backTransUrl" value="https://101.231.204.80:5000/gateway/api/backTransReq.do" /> ##後臺交易請求地址(若爲有卡交易配置該地址) <add key="sdk.cardRequestUrl" value="https://101.231.204.80:5000/gateway/api/cardTransReq.do" /> ##批量交易請求地址 <add key="sdk.batTransUrl" value="https://101.231.204.80:5000/gateway/api/batchTrans.do" /> ##查詢地址 <add key="sdk.singleQueryUrl" value="https://101.231.204.80:5000/gateway/api/queryTrans.do" /> ##文件傳輸類交易地址 <add key="sdk.fileTransUrl" value="https://101.231.204.80:9080/" /> ##APP交易地址 <add key="sdk.appRequestUrl" value="https://101.231.204.80:5000/gateway/api/appTransReq.do" /> ########################簽名證書配置################################ ######(如下配置爲測試環境:入網測試環境用,生產環境配置見下述文檔說明)####### ##簽名證書路徑 <add key="sdk.signCert.path" value="d:\certs\PM_700000000000001_acp.pfx" /> ##簽名證書密碼 <add key="sdk.signCert.pwd" value="000000" /> ##簽名證書類型 <add key="sdk.signCert.type" value="PKCS12" /> ##驗籤 <add key="sdk.validateCert.dir" value="d:\certs\" /> ##########################加密證書配置################################ ##密碼加密證書路徑 <add key="sdk.encryptCert.path" value="d:\certs\encrypt.cer" /> |
2. Web.config: 生產環境參數配置文件
具體配置: |
##########################交易發送地址配############################# ######(如下配置爲生產環境用)####### ##前臺交易請求地址 <add key="sdk.frontTransUrl" value="https://gateway.95516.com/gateway/api/frontTransReq.do" /> ##後臺交易請求地址 <add key="sdk.backTransUrl" value="https://gateway.95516.com/gateway/api/backTransReq.do" /> ##後臺交易請求地址(若爲有卡交易配置該地址) <add key="sdk.cardRequestUrl" value="https://gateway.95516.com/gateway/api/cardTransReq.do" /> ##單筆查詢請求地址 <add key="sdk.singleQueryUrl" value="https://gateway.95516.com/gateway/api/queryTrans.do" /> ##批量交易請求地址 <add key="sdk.batTransUrl" value="https://gateway.95516.com/gateway/api/batchTrans.do" /> ##文件傳輸類交易地址 <add key="sdk.fileTransUrl" value="https://filedownload.95516.com/" /> ##APP交易地址 <add key="sdk.appRequestUrl" value="https://gateway.95516.com/gateway/api/appTransReq.do" /> ########################簽名證書配置################################ ##簽名證書路徑(請拿到生產環境證書後修改簽名路徑、證書名稱、證書密碼) <add key="sdk.signCert.path" value="d:\certs\PRO_700000000000001_acp.pfx" /> ##簽名證書密碼 <add key="sdk.signCert.pwd" value="000000" /> ##簽名證書類型 acpsdk.signCert.type=PKCS12 ##驗籤 <add key="sdk.validateCert.dir" value="d:\certs\" /> ##########################加密證書配置################################ ##密碼加密證書路徑 <add key="sdk.encryptCert.path" value="d:\certs\RSA2048_PROD_index_22.cer" /> |
主要類與方法說明 |
com.unionpay.acp.sdk.SDKConfig.cs:負責讀取web.config |
//功能:讀取配置文件獲取簽名證書路徑 private static string signCertPath = config.AppSettings.Settings["sdk.signCert.path"].Value; //功能:讀取配置文件獲取簽名證書密碼 private static string signCertPwd = config.AppSettings.Settings["sdk.signCert.pwd"].Value; //功能:讀取配置文件獲取驗籤目錄 private static string validateCertDir = config.AppSettings.Settings["sdk.validateCert.dir"].Value; //功能:加密公鑰證書路徑 private static string encryptCert = config.AppSettings.Settings["sdk.encryptCert.path"].Value; //功能:有卡交易路徑; private static string cardRequestUrl = config.AppSettings.Settings["sdk.cardRequestUrl"].Value; //功能:app交易路徑; private static string appRequestUrl = config.AppSettings.Settings["sdk.appRequestUrl"].Value; //功能:讀取配置文件獲取交易查詢地址 private static string singleQueryUrl = config.AppSettings.Settings["sdk.singleQueryUrl"].Value; //功能:讀取配置文件獲取文件傳輸類交易地址 private static string fileTransUrl = config.AppSettings.Settings["sdk.fileTransUrl"].Value; 功能:讀取配置文件獲取前臺交易地址 private static string frontTransUrl = config.AppSettings.Settings["sdk.frontTransUrl"].Value; 功能:讀取配置文件獲取後臺交易地址 private static string backTransUrl = config.AppSettings.Settings["sdk.backTransUrl"].Value; //功能:讀取配批量交易地址 private static string batTransUrl = config.AppSettings.Settings["sdk.batTransUrl"].Value;
|
主要類與方法說明 |
com.unionpay.acp.sdk.SDKUtil.cs:主要負責組裝報文、證書籤名、發送報文、接收報文、驗證簽名、加密解密等操做,具體請查看代碼。 |
獲取簽名。 public static bool Sign(Dictionary<string, string> data, Encoding encoder) |
驗證簽名 public static bool Validate(Dictionary<string, string> data, Encoding encoder) |
組裝報文 public static string CreateAutoSubmitForm(string url, Dictionary<string, string> data, Encoding encoder) |
將Dictionary內容排序後輸出爲鍵值對字符串,供打印報文使用 public static string PrintDictionaryToString(Dictionary<string, string> data) |
將形如key=value&key=value的字符串轉換爲相應的Dictionary對象 public static Dictionary<string, string> CoverstringToDictionary(string data) |
pinblock 16進制計算 public static string printHexString(byte[] b) |
密碼加密,輸入參數依次爲卡號、密碼、字符集 Publicstatic string encryptPin(string card, string pwd, string encoding) |
數據加密,輸入參數依次爲數據、字符集 Publicstatic string encryptData(string data,string encoding) |
主要類與方法說明 |
com.unionpay.acp.sdk.CertUtil.cs: 證書操做工具類,主要是導入pfx證書與獲取獲取私鑰操做。 |
獲取簽名證書私鑰 public static RSACryptoServiceProvider GetSignProviderFromPfx() |
獲取簽名證書的證書序列號 public static string GetSignCertId() |
經過證書id,獲取驗證簽名的證書 public static RSACryptoServiceProvider GetValidateProviderFromPath(string certId) |
主要類與方法說明 |
com.unionpay.acp.sdk.SecureUtil.cs主要負責報文的軟簽名、驗證簽名、加密; 壓縮、解壓、Base64編碼/解碼,pinblock計算等提供SHA-1及RSA的方法類。 |
摘要計算 |
public static byte[] Sha1X16(string dataStr, Encoding encoding) |
軟簽名 public static byte[] SignBySoft(RSACryptoServiceProvider provider, byte[] data) |
驗證簽名 public static bool ValidateBySoft(RSACryptoServiceProvider provider, byte[] base64DecodingSignStr, byte[] srcByte) |
Base64編碼 public static string EncodeBase64(Encoding encode, string source) |
Base64解碼 public static string DecodeBase64(Encoding encode, string result) |
Inflater解壓縮 public static byte[] inflater(byte[] inputByte) |
deflater壓縮 public static byte[] deflater(byte[] inputByte) |
密碼計算 private static byte[] pin2PinBlock(string aPin) |
獲取卡號密碼pinblock計算 public static byte[] pin2PinBlockWithCardNO(string aPin, string aCardNO) |
卡號計算 private static byte[] formatPan(string aPan) |
加密 public static byte[] encryptedData(byte[] encData) |
主要類與方法說明 |
com.unionpay.acp.sdk.HttpClient.cs 是通訊類,具體請參考代碼的說明。 提供和服務器通訊的HTTP客戶端類。 |
將請求參數以HTTP表單的方式進行一次HTTP POST通訊。 Publicint Send(Dictionary<string, string>sParaTemp, Encoding encoding) |
Q:如何獲取測試商戶號與測試證書?
A:測試環境申請測試用戶後點擊「個人測試>測試參數」中查看商戶號,並點擊下載測試證書,註冊地址:https://open.unionpay.com/ajweb/register,生產環境請聯繫業務部門,具體聯繫方式以下:
發送郵件至: operation@unionpay.com進行業務申請和諮詢,銀聯有專門的人員進行處理。
其餘專項服務:請見《業務運營服務指引(商戶) 》平常業務運營服務。
Q:如何簽名?
A:對報文中出現簽名域(signature)以外的全部數據元採用key=value的形式按照名稱排序,而後以&做爲鏈接符拼接成待簽名串。其次,對待簽名串使用SHA-1算法作摘要,並轉成16進制,再使用銀聯頒發給商戶的商戶RSA私鑰證書對摘要作簽名操做(簽名時算法選擇SHA-1)。最後,對簽名作Base64編碼,將編碼後的簽名串放在簽名(signature)表單域裏和其餘表單域一塊兒經過HTTP Post的方式傳輸給銀聯全渠道系統支付平臺。
Q:報文域中frontUrl和backUrl要填什麼?
A:frontUrl和backUrl爲報文上送要素,銀聯繫統將前臺通知報文返回到報文中的frontUrl地址,將後臺通知報文返回到報文中的backUrl地址。
Q:如何獲取與配置銀聯入網測試環境地址?
A : 可參見11章節測試環境參數配置,配置文件可在開發包中找到(開發包獲取地址:https://open.unionpay.com/ajweb/help/file/)。具體接入地址以下:
銀聯入網測試環境地址: |
|
前臺交易請求地址 |
https://101.231.204.80:5000/gateway/api/frontTransReq.do |
後臺交易請求地址(無卡) |
https://101.231.204.80:5000/gateway/api/backTransReq.do |
後臺交易請求地址(有卡) |
https://101.231.204.80:5000/gateway/api/cardTransReq.do |
單筆查詢請求地址 |
https://101.231.204.80:5000/gateway/api/queryTrans.do |
批量交易請求地址 |
https://101.231.204.80:5000/gateway/api/batchTrans.do |
文件傳輸類交易地址 |
https://101.231.204.80:9080/ |
APP交易請求地址 |
https://101.231.204.80:5000/gateway/api/appTransReq.do |
Q:銀聯全渠道系統商戶接入生產環境地址?
A : 可參見11章節生產環境參數配置,配置文件可在開發包中找到(開發包獲取地址:https://open.unionpay.com/ajweb/help/file/)。將配置文件中測試地址修改成以下地址:
銀聯入網測試環境地址: |
|
前臺交易請求地址 |
https://gateway.95516.com/gateway/api/frontTransReq.do |
後臺交易請求地址(無卡) |
https://gateway.95516.com/gateway/api/backTransReq.do |
後臺交易請求地址(有卡) |
https://gateway.95516.com/gateway/api/cardTransReq.do |
單筆查詢請求地址 |
https://gateway.95516.com/gateway/api/queryTrans.do |
批量交易請求地址 |
https://gateway.95516.com/gateway/api/batchTrans.do |
文件傳輸類交易地址 |
https://filedownload.95516.com/ |
APP交易請求地址 |
https://gateway.95516.com /gateway/api/appTransReq.do |
Q:商戶接收到銀聯的前臺通知和後臺通知,以哪一個爲準?
A:交易狀態請之後臺通知結果爲準。銀聯繫統會將後臺通知結果以post的方式發送到報文中backUrl後臺通知地址上,如商戶未收到通知,系統會持續發送,如發送成功則再也不發送,5次通知失敗則再也不發送,失敗交易則不發送。
後臺通知中,只要是非通訊類錯誤(如通訊超時,沒法解析域名,沒有路由等),都認爲商戶已經收到,不會進行重發。若是商戶由於非通訊類問題沒有及時收到應答(好比應用切換等狀況),或者收到應答時處理失敗(處理邏輯的驗證應該在測試環境下已經驗證經過),商戶應該對沒有及時收到應答的交易經過查詢接口來查詢該交易的狀態。具體參見第6章節。
Q:上午作的交易,下午作撤銷會報非當日交易不能撤銷?
A:測試環境的日切時間在下午1點半,早上的交易會歸爲前一日,下午的交易纔是當日交易。
Q:若是調用數次查詢接口後,一直獲得處理中狀態,該怎麼辦?
A:對於網銀支付模式與非網銀支付模式描述以下:
網銀支付模式:跳轉到銀行後,訂單狀態爲正在處理中。查詢的結果爲正在處理中。等銀行有響應的時候,銀聯全渠道系統會根據銀行的應答,修改訂單狀態爲成功或失敗。如用戶在網銀頁面直接關閉瀏覽器,查詢的結果則一直爲處理中。若超過1小時,查詢結果狀態仍爲處理中,通常可認爲是用戶關閉了瀏覽器,可看成失敗處理。若產生單邊帳,能夠次日經過對帳退還金額給用戶。
非網銀支付模式:銀聯全渠道系統會控制超時時間,通常用戶支付2分鐘後會有明確的狀態,查詢的結果不是成功就是失敗,失敗的交易容許用戶從新支付,即如用戶1點支付的時候失敗,1點05分再次支付成功,則商戶若是1點03分查詢的時候結果爲交易失敗,1點06分查詢的時候結果爲成功。
Q:消費撤銷和退貨有何不一樣?
A:當天的交易能夠執行消費撤銷,消費撤銷只能全額。
當天或隔天的交易均可以作退貨,退貨能夠進行屢次退貨,每次金額小於原始金額,訂單退款總金額不能大於此訂單原始金額。
Q:標準網關支付跳轉銀聯頁面HTTP400報錯是什麼緣由?
A:銀聯全渠道系統對報文校驗較爲嚴格,對未定義的報文域會提示http400報錯,請覈對產品接口規範文檔(https://open.unionpay.com/ajweb/help?id=74&level=0&from=1)中的報文域。
Q:什麼是全渠道支付平臺?
A:全渠道支付平臺是中國銀聯全渠道接入支付平臺的簡稱,支持移動、互聯網等渠道的收單業務,包含互聯網支付產品(銀聯在線支付、預受權支付、B2B對公支付、跨境支付、無跳轉支付)、移動終端渠道產品(手機安全支付控件、WAP頁面支付、平板電腦(iPad)網關支付、預受權支付、跨境支付、無跳轉支付(手機端暫無))、後臺模式產品( 訂購、 代收、代付)。
Q:銀聯全渠道入網測試的帳號(卡號)是什麼?
A:接入銀聯全渠道入網測試環境須要使用銀聯提供的測試卡進行交易,當前僅提供兩張可供測試的卡片,一張B2B企業網銀的虛擬卡片,具體帳號信息以下:
測試卡號 |
平安銀行借記卡:6216261000000000018 姓名:全渠道 |
平安銀行貸記卡:6221558812340000 姓名:互聯網 證件號:341126197709218366 有效期:1711 |
B2B企業網銀農行虛擬卡 卡號:123456789001 密碼:789001 |
Q:銀聯全渠道相關接口文檔在哪裏獲取?
A:由銀聯提供的全渠道相關文檔可在商戶服務網站下載(https://merchant.unionpay.com/portal/pages/login/download.jsp?locale=zh_CN),也能夠在自助化測試平臺首頁 > 幫助中心 >下載(https://open.unionpay.com/ajweb/help/file)中獲取。