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

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





直接運行,可以看到控制台最后一行,打印出了HTML代碼,把它復制出來,放在一個空的html文件里.
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- </head>
- <body>
- <form id="pay_form"
- action="https://101.231.204.80:5000/gateway/api/frontTransReq.do"
- method="post">
- <input type="hidden" name="txnType" id="txnType" value="01" /><input
- type="hidden" name="frontUrl" id="frontUrl"
- value="http://localhost:8080/PayOnLine/acp_front_url.do" /><input
- type="hidden" name="currencyCode" id="currencyCode" value="156" /><input
- type="hidden" name="channelType" id="channelType" value="08" /><input
- type="hidden" name="merId" id="merId" value="777290058112538" /><input
- type="hidden" name="txnSubType" id="txnSubType" value="01" /><input
- type="hidden" name="txnAmt" id="txnAmt" value="1" /><input
- type="hidden" name="version" id="version" value="5.0.0" /><input
- type="hidden" name="signMethod" id="signMethod" value="01" /><input
- type="hidden" name="backUrl" id="backUrl"
- value="http://localhost:8080/PayOnLine/acp_back_url.do" /><input
- type="hidden" name="certId" id="certId"
- value="124876885185794726986301355951670452718" /><input
- type="hidden" name="encoding" id="encoding" value="UTF-8" /><input
- type="hidden" name="bizType" id="bizType" value="000201" /><input
- type="hidden" name="signature" id="signature"
- value="qlFuEQS9ADJ0iN+DkG4z09hbAG7a7MqwZPkbQvzDcURxE9ob4N/9/wTq11iQedygOCZkSFIU49dy41pe1pVN09vDOq3uS3TTmeQh3vchh1VmvcIBV+pWeBeq4FGhkY5TudqU/r52W9Sw8syc5YjU14UvRoPUOvfZLGND23JhGsY=" /><input
- type="hidden" name="orderId" id="orderId" value="20150422172935" /><input
- type="hidden" name="accessType" id="accessType" value="0" /><input
- type="hidden" name="txnTime" id="txnTime" value="20150422172935" />
- </form>
- </body>
- <script type="text/javascript">
- document.all.pay_form.submit();
- </script>
- </html>
在IE瀏覽器里,運行后就可以看見:

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

輸入測試的參數信息,就可以完成0.01元的支付了,感覺怎么樣,就是這么簡單。
為了方便,我提供下網關支付的案例代碼鏈接,供大家下載。
測試遇到的問題





######(以下配置為測試環境:入網測試環境用,生產環境配置見下述文檔說明))#######
##簽名證書路徑
acpsdk.signCert.path=D\:\\certs\\PM_700000000000001_acp.pfx
##簽名證書密碼
acpsdk.signCert.pwd=000000
##簽名證書類型
acpsdk.signCert.type=PKCS12
上面配置的路徑里必須要有對應的證書文件。證書可以在官網上的案例代碼里下載.
2. JAVA運行后得到的HTML瀏覽器打開后提示如下錯誤:

經查官網上的應答碼說如下:
應答碼列表
【所屬系統:】 全渠道
【應答碼:】 5131008
應答碼描述:無此交易權限
解決方案 :
wap和網關支付的時候會報這個錯誤,為沒開權限。如使用的是真實商戶號,請聯系簽約的業務或者業務運營中心申請開放權限。 如果用的是自助化平台的商戶號,需要選一下要測試這個產品,方法為:右上角-我的產品-未測試,在跳轉網關支付/手機網頁支付點開始測試,點擊后10分鍾生效。
操作步驟如下:

點擊開始測試即可。