zoukankan      html  css  js  c++  java
  • 银联在线支付---利用测试案例代码模拟支付应用

     一、工程搭建

              新建一个Web工程,命名为PayOnLine,把你下载好的案例代码拷贝到你的工程下,我的代码目录如下:
                 


    acp_sdk.properties配置文件需要放在类根路劲下,里面的参数配置信息,下面是案例提供的配置提示:
    1. 0. 注意:  
    2. 1)依赖包和upacp_sdk-1.0.0.jar都需加到buildpath。  
    3. 2)acp_sdk.properties放到src根目录下。另外如果用的不是eclipse/MyEclipse可能这个文件默认不会被拷贝到classes目录下,导致加载不到这个文件,请注意修改设置或手工拷贝这个文件。  
    4.   
    5. 1. 修改acp_sdk.properties,  
    6. 1) 证书改下自己本地路径,证书密码测试环境就是000000,生产自己修改。  
    7.   
    8. 2.1 wap/网关的消费:调用Form_6_2_FrontConsume,商户号请改为自己的商户号,会生成一段html,把它打印到浏览器即可跳转支付页面。比如可以写一个servlet直接打印页面,或者把html复制到一个记事本里后缀改html再浏览器打开。  
    9.   
    10. 2.2 控件的消费:调用Form_6_2_AppConsume,商户号请改为自己的商户号,会访问后台获取tn,把tn传给你们手机app。  
    11.   
    12. 支付卡:  
    13. 平安银行借记卡:6216261000000000018  
    14. 证件号:341126197709218366  
    15. 手机号:13552535506  
    16. 密码:123456  
    17. 姓名:全渠道  
    18. 短信验证码:123456(wap/控件)111111(PC)  
    19. (短信验证码记得点下获取验证码之后再输入)  
    20.   
    21. 3. Form_6_5_Query为查询接口,商户号请改为自己的商户号,注意修改txnTime和orderId为被查询交易的txnTime和orderId。  
    22.   
    23. 4. Form_6_3_ConsumeUndo和Form_6_4_Refund分别为消费撤销接口、退货接口,商户号请改为自己的商户号,注意修改origQryId为自己需要退款的那笔消费的queryId。  
    24.   
    25. 5. FrontRcvResponse和BackRcvResponse为前后台通知接口,为2个Servlet,请注意配置web.xml,另外FrontRcvResponse会使用“其他文件/utf8_result.jsp”。交易完成会调用通知接口。  
    26.   
    27. 6. Form_6_6_FileTransfer为文件下载接口。  
    28. 文件下载接口注意点:  
    29. 1) 请使用自己的【真实商户号】测试。开发包的商户号、自助化测试平台申请的商户号都是不能测试文件下载的,会反http状态500,内容为空。如果真实商户号下载提示无文件但确定有交易,一般是商户号没有文件传输类交易的权限,如需要开通请联系业务运营中心operation@unionpay.com。  
    30. 2) 请先建立好文件夹并确保有文件写入权限。  
    31.   
    32. 7. 如需使用gbk编码,请自行修改代码内写的编码和代码文件本身的编码为gbk。  
    33.   
    34. 8. 关于配置文件加载问题:  
    35. SDKConfig.getConfig().loadPropertiesFromSrc()这句话在整个工程启用的时候执行一次即可,其余地方都可删除。  
    36. 比如可以建立个servlet,初始化时调用,web.xml中设置成启动时就加载这个servlet:  
    37.   
    38. InitServlet.java:  
    39. public class InitServlet extends HttpServlet{  
    40.     @Override  
    41.     public void init() throws ServletException {  
    42.         SDKConfig.getConfig().loadPropertiesFromSrc();// 从classpath加载acp_sdk.properties文件  
    43.         super.init();  
    44.     }  
    45. }  
    46.   
    47. web.xml:  
    48.   <servlet>  
    49.     <servlet-name>InitServlet</servlet-name>  
    50.     <servlet-class>com.unionpay.acp.demo.InitServlet</servlet-class>  
    51.     <load-on-startup>0</load-on-startup>  
    52.   </servlet>  
    53.   
    54.   
    55. 9. 日志文件路径问题:  
    56. 可rar打开upacp_sdk-1.0.0.jar,修改里面log4j.properties配置的路径。  
    57.   
    58. 10. 切换生产时请一定看下https://open.unionpay.com/ajweb/help/faq/listByType?faqType=prod中的问题,特别是“切换生产有哪些需要改动的地方”的这个FAQ。  

    到此工程搭建完毕.

    Form_6_2_FrontConsume.java 就是对应的网关支付案例代码,改动如下三行代码就可以用了。




    直接运行,可以看到控制台最后一行,打印出了HTML代码,把它复制出来,放在一个空的html文件里. 
    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分钟生效。



    操作步骤如下:


    点击开始测试即可。



  • 相关阅读:
    【刷题-LeetCode】165 Compare Version Numbers
    python 22 内置模块2
    python 21 内置模块
    python 20 模块,包,及开发目录规范
    python 19
    python 18 三元,生成,递推
    定时抓取数据并存入数据库
    抓取财报数据
    金币
    交换座位
  • 原文地址:https://www.cnblogs.com/zhangtan/p/7676996.html
Copyright © 2011-2022 走看看