中國銀聯全渠道系統商戶接入 測試指引-銀聯閘道器支付產品
中國銀聯股份有限公司規範性文件 |
中國銀聯股份有限公司 釋出 |
中國銀聯全渠道系統商戶接入 測試指引-銀聯閘道器支付產品 |
版本修訂資訊
版本號 |
完成日期 |
釋出日期 |
變更說明 |
1.0.0 |
2014-7-03 |
2014-7-03 |
初稿 |
1.0.1 |
2014-11-04 |
2014-11-05 |
修改文件格式,新增測試地址與測試卡號等資訊 |
目錄
1 文件說明
1.1 導讀
閘道器產品主要適用於持卡人在商戶網站B2C購物支付場景,持卡通過點選銀聯線上支付logo,並在銀聯線上支付閘道器完成支付資訊錄入,最終完成支付。
從PC端發起的交易為WEB閘道器支付交易,從移動端發起的交易為WAP閘道器支付交易以及APP閘道器交易。
首次接入測試先了解前臺交易與後臺交易的區別,可參考第1.3章節業務術語描述,隨後可從第5章節開發步驟嚮導開始閱讀,瞭解開發過程中的具體操作步驟,此章節中提到的簽名機制請參照第8章節。開發過程中需要用到的測試與生產交易地址請參考第11章節配置檔案。交易測試卡號請參考第3.2章節。如開發與測試過程中遇到了解決不了的問題可在第12章節FAQ中查詢解決方案,也可通過第1.4.2章節中的方法來獲取測試支援。
《中國銀聯全渠道系統商戶接入測試指引》文件是面向具有一定的網站開發能力的網站開發、維護和管理人員。
具體交易的介面、報文規範、響應碼說明,請閱讀開發包中介面文件。
參與方描述 |
|
商戶 |
指加入銀聯網路,與銀聯簽訂《銀聯卡無卡支付業務合作協議》等協議開展銀聯無卡支付以及行業類應用業務的商戶。 |
收單機構 |
指加入銀聯網路,與銀聯簽訂《銀聯卡無卡支付業務合作協議》開展銀聯無卡支付收單業務的境內成員機構。 |
1.3 業務術語
術語 |
解釋 |
請求 |
通過 HTTP/HTTPS協議把需要傳輸的資料傳送給接收方的過程。 |
應答 |
通過 HTTP/HTTPS協議把需要傳輸的資料返回給接收方的過程。 |
後臺通知 |
伺服器後臺通知。中國銀聯全渠道系統根據得到的資料處理完成後,全渠道系統主動發起通知給商戶的網站,同時攜帶處理完成的結果資訊反饋給商戶網站。 |
前臺類交易 |
主要指使用者需要參與互動的支付類交易,包括消費、預授權/擔保消費交易。 |
後臺類交易 |
主要指使用者不需要參與互動,由商戶後續發起的交易,包括消費撤銷、退貨、預授權撤銷、預授權完成、預授權完成撤銷等交易。 |
全渠道系統/ACP |
中國銀聯全渠道系統,是整合了銀聯線上和銀聯移動支付功能的新交易處理系統。 |
接入閘道器支付產品的商戶為選測。
注:
必測是指提交了入網申請表、必須測試通過才能投產上線的,選測是指不需要入網申請表可以直接投產上線的,是否在測試環境測試由商戶自己決定。
必測 |
選測 |
收單機構接入 |
商戶接入(接入產品為除無跳轉支付、後臺直接支付、代收和便民繳費以外的其他產品) |
商戶接入(接入產品為無跳轉支付、後臺直接支付、代收和便民繳費) |
1.4.2 支援獲取途徑
業務問題詳見開發包中《中國銀聯全渠道系統業務運營服務指引》相關人員聯絡方式。
測試問題支援人員聯絡方式詳見下表:
必測 |
選測 |
收單機構可聯絡銀聯服務專員,並且在提交了入網申請後銀聯服務專員會主動聯絡商定視窗並提供測試支援服務 |
商戶可傳送郵件到[email protected]郵箱(郵件標題為:商戶號+商戶名稱+聯絡QQ),提供商戶號和聯絡QQ,銀聯測試服務專員會將商戶介面人的聯絡QQ加入到銀聯統一服務QQ中提供支援服務(商戶也可以通過服務電話021-38929999-2049來提供自己的商戶號和聯絡QQ) |
銀聯市場服務代表在為商戶提交了入網申請後,會有銀聯服務專員主動聯絡(一般為QQ)商定聯調視窗並提供測試支援服務 |
注:
服務郵箱和服務電話僅供選測類商戶聯絡測試支援人員,並且郵箱和電話不直接反饋支援問題,支援服務均在銀聯統一服務QQ中提供。
2 聯調步驟嚮導
商戶或收單機構全渠道系統開發包和本測試指引進行接入開發。
本步驟可選。開發完成後可通過銀聯提供的聯調測試環境進行聯機介面驗證測試,測試地址參考測第11章節配置檔案說明。
在測試環境完成聯調測試後,由銀聯業務運營人員(聯絡方式參見《中國銀聯全渠道系統業務運營服務指引》)引導協助商戶完成生產交易證書的申請,商戶將介面更新部署到生產環境和銀聯生產環境完成對接。
測試地址詳見第11章節配置檔案描述。
3.2 測試卡號
測試卡號 |
平安銀行借記卡: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
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 (應答報文, 報文字符集)”方法進行簽名驗證。
5.4 單筆查詢交易介面開發步驟
1.照單筆查詢交易的規範組裝報文,交易報文請參考開發包中介面文件
2.好的資料排序好並用&連線後簽名,生成signature欄位,可使用外掛包提供的方法“SDKUtil.sign(未簽名報文, 報文字符集);”,具體簽名機制請參照第7章節。
3.資料,包括signature和signMethod用key=value並用&符號連結的方式組裝成字串,通過SDK提供的方法進行傳送。
4.返回報文後,通過外掛包提供的方法進行驗證簽名,呼叫“SDKUtil.convertResultStringToMap(應答報文);”方法進行應答報文解析,和“SDKUtil.validate(應答報文, 報文字符集)”方法進行簽名驗證。
5.5 檔案傳輸類交流開發步驟
檔案的格式,參照介面文件,檔名,檔案頭,檔案,檔案以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) 商戶能夠正確驗籤(測試環境要測試通過)
因此,只要生產上能夠證明通訊是正確的,即可認為通知成功。如果商戶端因為某種特殊原因,沒有正確處理後臺通知,可以通過交易查詢介面來糾正交易的狀態。
7 查詢介面說明
1. 如果已收到後臺通知,則不需要發起查詢。
2. 在訂單發起後半小時未收到後臺通知,則需要發起查詢。
3. 具體的查詢交易開發方法可參考5.4章節。
1. 如果已收到後臺通知,則不需要發起查詢。
2. 在訂單發起後半小時未收到後臺通知,則需要發起查詢。
3. 具體的查詢交易開發方法可參見第4.5章節。
後臺交易採用同步機制,交易結果同步返回。
1. 如果已接收到明確的交易結果應答,則不需要發起查詢。
2. 前臺交易,若未接收到全渠道系統的明確交易應答時需發起單筆查詢交易,查詢明確的交易結果。
3. 後臺交易,若出現交易超時的情況則需要發起單筆查詢交易,查詢明確的交易結果。
8 簽名機制
對於報文的簽名處理機制如下:
首先,對報文中出現簽名域(signature)之外的所有資料元採用key=value的形式按照名稱排序,然後以&作為連線符拼接成待簽名串。其次,對待簽名串使用SHA-1演算法做摘要,並轉成16進位制,再使用銀聯頒發給商戶的商戶RSA私鑰證書對摘要做簽名操作(簽名時演算法選擇SHA-1)。最後,對簽名做Base64編碼,將編碼後的簽名串放在簽名(signature)表單域裡和其他表單域一起通過HTTP Post的方式傳輸給銀聯全渠道系統支付平臺。
對於報文的驗籤處理機制如下:
首先,對報文中出現簽名域(signature)之外的所有資料元採用key=value的形式按照名稱排序,然後以&作為連線符拼接成待簽名串。其次,對待簽名串使用SHA-1演算法做摘要,並轉成16進位制,再使用商戶入網時銀聯提供的銀聯全渠道系統支付通訊RSA公鑰證書對摘要和報文中的簽名信息做簽名驗證操作。
9 加密機制
對於持卡人密碼銀聯全渠道系統支付平臺使用RSA公鑰證書對ANSI X9.8帶主帳號格式的PIN加密並做Base64編碼後傳輸,以保障密碼的安全性。依據商戶可選配置,對於CVN2、有效期、卡號使用RSA公鑰證書分別做加密並Base64處理。
對於敏感資訊銀行卡驗證資訊及身份資訊部分內容,採用Base64編碼後傳輸,以做資料遮蔽。
對於檔案內容,使用DEFLATE壓縮演算法壓縮後,Base64編碼的方式傳輸,壓縮編碼後的內容參與簽名摘要運算。
1. 商戶簽名證書:商戶接入銀聯支付後會收到兩碼,通過在CFCA網站下載pfx證書。此證書用於請求報文的簽名。測試證書隨開發包提供。
2. 商戶的密碼加密證書:商戶會收到一個密碼加密的公鑰證書,此證書用於對銀行卡密碼的加密、cvn2、有效期及卡號等的加密。測試證書隨開發包提供。
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. 點選完成,證書匯出成功。
11 開發包外掛使用
外掛包只是為了方便商戶測試而提供的樣例程式碼,商戶可以根據自己網站的需要,按照技術文件編寫,並非一定要使用該程式碼。程式碼僅供參考
外掛以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主要負責報文的簽名、驗證簽名及加密解密; 提供MD5、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 配置檔案配置檔案中日誌和證書的存放路徑根據實際情況配置,交易地址和證書根據測試環境、生產環境配套配置##### < |