1. 程式人生 > >銀聯在線支付---利用測試案例代碼模擬支付應用

銀聯在線支付---利用測試案例代碼模擬支付應用

nts lin 商戶 應用 dpa eight dem 操作 eclipse

一、工程搭建

新建一個Web工程,命名為PayOnLine,把你下載好的案例代碼拷貝到你的工程下,我的代碼目錄如下: 技術分享

acp_sdk.properties配置文件需要放在類根路勁下,裏面的參數配置信息,下面是案例提供的配置提示: [java] view plain copy
  1. 0. 註意:
  2. 1)依賴包和upacp_sdk-1.0.0.jar都需加到buildpath。
  3. 2)acp_sdk.properties放到src根目錄下。另外如果用的不是eclipse/MyEclipse可能這個文件默認不會被拷貝到classes目錄下,導致加載不到這個文件,請註意修改設置或手工拷貝這個文件。
  4. 1. 修改acp_sdk.properties,
  5. 1) 證書改下自己本地路徑,證書密碼測試環境就是000000,生產自己修改。
  6. 2.1 wap/網關的消費:調用Form_6_2_FrontConsume,商戶號請改為自己的商戶號,會生成一段html,把它打印到瀏覽器即可跳轉支付頁面。比如可以寫一個servlet直接打印頁面,或者把html復制到一個記事本裏後綴改html再瀏覽器打開。
  7. 2.2 控件的消費:調用Form_6_2_AppConsume,商戶號請改為自己的商戶號,會訪問後臺獲取tn,把tn傳給你們手機app。
  8. 支付卡:
  9. 平安銀行借記卡:6216261000000000018
  10. 證件號:341126197709218366
  11. 手機號:13552535506
  12. 密碼:123456
  13. 姓名:全渠道
  14. 短信驗證碼:123456(wap/控件)111111(PC)
  15. (短信驗證碼記得點下獲取驗證碼之後再輸入)
  16. 3. Form_6_5_Query為查詢接口,商戶號請改為自己的商戶號,註意修改txnTime和orderId為被查詢交易的txnTime和orderId。
  17. 4. Form_6_3_ConsumeUndo和Form_6_4_Refund分別為消費撤銷接口、退貨接口,商戶號請改為自己的商戶號,註意修改origQryId為自己需要退款的那筆消費的queryId。
  18. 5. FrontRcvResponse和BackRcvResponse為前後臺通知接口,為2個Servlet,請註意配置web.xml,另外FrontRcvResponse會使用“其他文件/utf8_result.jsp”。交易完成會調用通知接口。
  19. 6. Form_6_6_FileTransfer為文件下載接口。
  20. 文件下載接口註意點:
  21. 1) 請使用自己的【真實商戶號】測試。開發包的商戶號、自助化測試平臺申請的商戶號都是不能測試文件下載的,會反http狀態500,內容為空。如果真實商戶號下載提示無文件但確定有交易,一般是商戶號沒有文件傳輸類交易的權限,如需要開通請聯系業務運營中心operation@unionpay.com。
  22. 2) 請先建立好文件夾並確保有文件寫入權限。
  23. 7. 如需使用gbk編碼,請自行修改代碼內寫的編碼和代碼文件本身的編碼為gbk。
  24. 8. 關於配置文件加載問題:
  25. SDKConfig.getConfig().loadPropertiesFromSrc()這句話在整個工程啟用的時候執行一次即可,其余地方都可刪除。
  26. 比如可以建立個servlet,初始化時調用,web.xml中設置成啟動時就加載這個servlet:
  27. InitServlet.java:
  28. public class InitServlet extends HttpServlet{
  29. @Override
  30. public void init() throws ServletException {
  31. SDKConfig.getConfig().loadPropertiesFromSrc();// 從classpath加載acp_sdk.properties文件
  32. super.init();
  33. }
  34. }
  35. web.xml:
  36. <servlet>
  37. <servlet-name>InitServlet</servlet-name>
  38. <servlet-class>com.unionpay.acp.demo.InitServlet</servlet-class>
  39. <load-on-startup>0</load-on-startup>
  40. </servlet>
  41. 9. 日誌文件路徑問題:
  42. 可rar打開upacp_sdk-1.0.0.jar,修改裏面log4j.properties配置的路徑。
  43. 10. 切換生產時請一定看下https://open.unionpay.com/ajweb/help/faq/listByType?faqType=prod中的問題,特別是“切換生產有哪些需要改動的地方”的這個FAQ。

到此工程搭建完畢.
Form_6_2_FrontConsume.java 就是對應的網關支付案例代碼,改動如下三行代碼就可以用了。
技術分享 技術分享 技術分享 技術分享

技術分享

直接運行,可以看到控制臺最後一行,打印出了HTML代碼,把它復制出來,放在一個空的html文件裏. [html] view plain copy
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  4. </head>
  5. <body>
  6. <form id="pay_form"
  7. action="https://101.231.204.80:5000/gateway/api/frontTransReq.do"
  8. method="post">
  9. <input type="hidden" name="txnType" id="txnType" value="01" /><input
  10. type="hidden" name="frontUrl" id="frontUrl"
  11. value="http://localhost:8080/PayOnLine/acp_front_url.do" /><input
  12. type="hidden" name="currencyCode" id="currencyCode" value="156" /><input
  13. type="hidden" name="channelType" id="channelType" value="08" /><input
  14. type="hidden" name="merId" id="merId" value="777290058112538" /><input
  15. type="hidden" name="txnSubType" id="txnSubType" value="01" /><input
  16. type="hidden" name="txnAmt" id="txnAmt" value="1" /><input
  17. type="hidden" name="version" id="version" value="5.0.0" /><input
  18. type="hidden" name="signMethod" id="signMethod" value="01" /><input
  19. type="hidden" name="backUrl" id="backUrl"
  20. value="http://localhost:8080/PayOnLine/acp_back_url.do" /><input
  21. type="hidden" name="certId" id="certId"
  22. value="124876885185794726986301355951670452718" /><input
  23. type="hidden" name="encoding" id="encoding" value="UTF-8" /><input
  24. type="hidden" name="bizType" id="bizType" value="000201" /><input
  25. type="hidden" name="signature" id="signature"
  26. value="qlFuEQS9ADJ0iN+DkG4z09hbAG7a7MqwZPkbQvzDcURxE9ob4N/9/wTq11iQedygOCZkSFIU49dy41pe1pVN09vDOq3uS3TTmeQh3vchh1VmvcIBV+pWeBeq4FGhkY5TudqU/r52W9Sw8syc5YjU14UvRoPUOvfZLGND23JhGsY=" /><input
  27. type="hidden" name="orderId" id="orderId" value="20150422172935" /><input
  28. type="hidden" name="accessType" id="accessType" value="0" /><input
  29. type="hidden" name="txnTime" id="txnTime" value="20150422172935" />
  30. </form>
  31. </body>
  32. <script type="text/javascript">
  33. document.all.pay_form.submit();
  34. </script>
  35. </html>

在IE瀏覽器裏,運行後就可以看見: 技術分享



輸入上一篇說的測試卡號,點擊下一步:
技術分享

輸入測試的參數信息,就可以完成0.01元的支付了,感覺怎麽樣,就是這麽簡單。


為了方便,我提供下網關支付的案例代碼鏈接,供大家下載。 案例代碼


測試遇到的問題

技術分享 技術分享 1.運行JAVA代碼控制臺報錯,請確認你的測試證書是否配置好了. 技術分享 技術分享 技術分享 #########################簽名證書配置 ################################
######(以下配置為測試環境:入網測試環境用,生產環境配置見下述文檔說明))#######
##簽名證書路徑
acpsdk.signCert.path=D\:\\certs\\PM_700000000000001_acp.pfx
##簽名證書密碼
acpsdk.signCert.pwd=000000
##簽名證書類型
acpsdk.signCert.type=PKCS12

上面配置的路徑裏必須要有對應的證書文件。證書可以在官網上的案例代碼裏下載.

2. JAVA運行後得到的HTML瀏覽器打開後提示如下錯誤:
技術分享

經查官網上的應答碼說如下: 應答碼列表

【所屬系統:】 全渠道

【應答碼:】 5131008

應答碼描述:無此交易權限

解決方案 :

wap和網關支付的時候會報這個錯誤,為沒開權限。如使用的是真實商戶號,請聯系簽約的業務或者業務運營中心申請開放權限。 如果用的是自助化平臺的商戶號,需要選一下要測試這個產品,方法為:右上角-我的產品-未測試,在跳轉網關支付/手機網頁支付點開始測試,點擊後10分鐘生效。



操作步驟如下: 技術分享

點擊開始測試即可。


銀聯在線支付---利用測試案例代碼模擬支付應用