小弟最近一个项目需要用到这个接口。做的是一个c2c网站,支持在线网银交易。想使用工行的接口。但是怎么搞都搞不定。网上也没有具体完整的。请各位有实际经验的大哥大姐们指点。先前看的是1.0.0.0版,现在使用.3版本。文档2个都看过,但是没明白有些概念。这个项目是参加电子商务竞赛的,所以我第一想法是尽量不牵涉银行方面。如果一定需要,请各位明示。 研究了2天,稍微有点头绪。首先需要对tranDate的xml明文进行Base64编码。这里面有比较多的参数,多数是基础的,或者是不用改动的,比如版本号等。但有些参数比如orderDate自行产生。
public static String tranDate(String orderDate){ StringBuffer s=new StringBuffer(); s.append("<?xml version='1.0' encoding='GBK' standalone='no'?>"); s.append("<B2CReq>"); s.append("<interfaceName>ICBC_PERBANK_B2C</interfaceName>"); s.append("<interfaceVersion>1.0.0.3</interfaceVersion>"); s.append("<orderInfo>"); s.append("<orderDate>"+orderDate+"</orderDate>"); s.append("<orderid>20070725105014-2134062548</orderid>"); s.append("<amount>1</amount>"); s.append("<curType>001</curType>"); s.append("<merID>0200EC20000875</merID>"); s.append("<merAcct>0200020409015029130</merAcct>"); s.append("</orderInfo>"); s.append("<custom>"); s.append("<verifyJoinFlag>0</verifyJoinFlag>"); s.append("<Language>ZH_CN</Language>"); s.append("</custom>"); s.append("<message>"); s.append("<goodsID></goodsID>"); s.append("<goodsName></goodsName>"); s.append("<goodsNum></goodsNum>"); s.append("<carriageAmt></carriageAmt>"); s.append("<merHint></merHint>"); s.append("<remark1></remark1>"); s.append("<remark2></remark2>"); s.append("<merURL>http://localhost:8080/ICBC/ICBCDemo.html</merURL>"); s.append("<merVAR></merVAR>"); s.append("</message>"); s.append("</B2CReq>"); return s.toString(); } public String getTranData() { SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss"); String orderDate = formatter.format(new Date());// 14位时间戳 String encoded = Base64.encode(tranDate(orderDate), "UTF-8"); return encoded; }
在表单部分:
<form name="order" method="post" action="https://mybank.icbc.com.cn/servlet/ICBCINBSEBusinessServlet"> <input name="interfaceName" type="text" value="ICBC_PERBANK_B2C" > <input name="interfaceVersion" type="text" value="1.0.0.3"> <input name="tranData" type="text" value="<%=t.getTranData()%>"/> <input name="merSignMsg" type="text" value="DEIdSLqGvBJAcJFzg0BuhuM3gVVofOahFRFAOJ//kcjvZqUJ0GWcY3C/4qufgK+qsqbmQWV2rFdHwzvgJXg0AXpzPPlJ7JesO2iXCGXCWMchr7KaoVe10w20TojcyJxLbVciuA3C2YPoyY7/+jv6lsnhS5GcR6GDe6vm86MZmv8="> <input name="merCert" type="text" value="MIICUTCCAbqgAwIBAgIKI9fKEDP6AAAXtjANBgkqhkiG9w0BAQUFADA0MRgwFgYDVQQDEw9wYmouaWNiYy5jb20uY24xGDAWBgNVBAoTD3Biai5pY2JjLmNvbS5jbjAeFw0xNzAzMTAwNzI0MTdaFw0xODAzMTAwNzI0MTdaMD4xEzARBgNVBAMTCnBhbi5lLjAyMDAxDTALBgNVBAsTBDAyMDAxGDAWBgNVBAoTD3Biai5pY2JjLmNvbS5jbjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAqBdQrbNWE61+forNFMGI/MmXxKY58P39YO4vzLpHCTHNGRwJKIwILMEOND88vh7cXTBY8kbt3vt0N+4pJY3iwKQA0GfuLfv5EjrsstyUohhogoxNAwxdbOLUTnn1ejNjwelZch4GqdkgmRzu6uTywRGW//foiUNgR/yL7Q2FcV0CAwEAAaNgMF4wSwYDVR0fBEQwQjBAoD6gPKQ6MDgxDjAMBgNVBAMTBWNybDIxMQwwCgYDVQQLEwNjcmwxGDAWBgNVBAoTD3Biai5pY2JjLmNvbS5jbjAPBgNVHWMECAMGAP8AAAAAMA0GCSqGSIb3DQEBBQUAA4GBAOImQhTOiQxHABUefFShrD1u3N2GhVP6JnyNUOAfI40WqxszjyfmRmhYPQUQc+8fMf52mcYXiVaEM4BVuRLPkCaybBwI0ykS+xBNMhy72naQPCeR+NNyZ4xduv/E5UE+INJrjnOHR7UWRBzdxX9bjsFB16beUVir7+S+adaXyQFT"/> <input type="submit" value=" 提 交 订 单 " > </form>
接下来就是我的疑问。希望各位指点。
1.在表单部分有merSignMsg和merCert这个是根据什么来得到的呢?应该是动态的吧?就像tranData的获取一样。
文档中说
后2个参数的概念非常模糊,如何获取呢?merSignMsg的注意部分写的什么意思?这个参数到底是如何计算出来的呢?merCert也是很模糊。
请有开发过的大哥大姐指点谢谢。
这是工行报的错误: