浦发银行 调用的一些技巧

阅读: 评论:0

浦发银行 调用的一些技巧

浦发银行 调用的一些技巧

浦发银行前置机配置很像工商银行。

来回请求的XML居然要加密和解密。。。。。太不人性,太啰嗦了。


调试了一下,终于OK了。


记录几个过程:

    //浦发银行签名及解签名public static InputStream send_sign(byte[] content,//<body>String contentType,//INFOSEC_SIGN/1.0String url//ip:port)throws IOException {URL urll = new URL(url);HttpURLConnection con1 = (HttpURLConnection) urll.openConnection();con1.setDoInput(true);con1.setDoOutput(true);con1.setRequestMethod("POST");con1.setRequestProperty("Content-Type", contentType);con1.setRequestProperty("Content-Length",String.valueOf(content.length));t();OutputStream().write(content);OutputStream().flush();InputStream in = InputStream();return in;}

乱码转换,注意GB2312

    //InputStream 转为Stringpublic String convertStreamToString(InputStream is) throws Exception {BufferedReader reader = new BufferedReader(new InputStreamReader(is,"GB2312"));StringBuilder sb = new StringBuilder();String line = null;try {while ((line = adLine()) != null) {
//                sb.append(line + "/n");sb.append(line );}} catch (IOException e) {e.printStackTrace();} finally {try {is.close();} catch (IOException e) {e.printStackTrace();}}String();}

字符串前面补0,或者后面补空格

         String xml_send = String.format("%-6s%s", xml_real.length()+6, xml_real);//3508  <?xml version="1.0" 右侧补充空格
//        String xml_send1 = String.format("%6s%s", xml_request.length()+6, xml_request);//  3508<?xml version="1.0"
//        String xml_send2 = String.format("%06d%s", Bytes().length+6, xml_request);//003508<?xml version= //文档这个方式不对!!!

JAVA对象转为XML对象:

    //拼接完整请求XML 以取余额为例,测试前置机private  String getxml(String tcode,String xml_body) {SimpleDateFormat format_date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String str_date = format_date.format(new Date());SimpleDateFormat format_date1 = new SimpleDateFormat("yyyy-MM-dd");String str_d = format_date1.format(new Date()).replace("-","");SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss:SSS");String str_t = format.format(new Date()).replace(":","");System.out.println("Time is:"+str_date);String packetID = (str_d+str_t).substring(0,16);//System.out.println("packetID is:"+packetID);String masterID = "2000040752";//企业号String accno = "952A9997220008092";//Blow 请求形成XML 测试    Req_Balance_4402 实际未来需要修改,并抽象,body部分不同,其他head都一致String transCode = "4402";Req_Balance_4402 req = new Req_Balance_4402();Req_Balance_4402.Head head = new Req_Balance_4402.Head();head.setTransCode(transCode);head.setSignFlag(1);head.setMasterID(masterID);head.setPacketID(packetID);head.setTimeStamp(str_date);req.setHead(head);Req_Balance_4402.Rq rq = new Req_Balance_4402.Rq();Req_Balance_4402.ALists lists = new Req_Balance_4402.ALists();List<String> acntNo = new ArrayList();acntNo.add(accno);Req_Balance_4402.AList list = new Req_Balance_4402.AList(acntNo);lists.setList(list);rq.setLists(lists);req.setRq(rq);XStreamUtil xStreamUtil = new XStreamUtil();XStream xs = xStreamUtil.buildCOMBHINAXStream();Map aliases = new HashMap();aliases.put("packet", Req_Balance_4402.class);XStreamMarshaller unmarshaller = xStreamUtil.buildXStreamMarshaller();unmarshaller.setAliases(aliases);String xml_test = "<?xml version='1.0' encoding='GB2312'?>" + xs.toXML(req);  //System.out.println(xml_test);//按照单个功能代码的说明,形成如下格式,实际上是不能用的!!!!//因为实际上要先形成body内容,而后body去签名,取得sign字段,再形成发送格式的XML 放到signature字段
//        <?xml version='1.0' encoding='GB2312'?><packet>
//        <head>
//        <transCode>4402</transCode>
//        <signFlag>1</signFlag>
//        <packetID>2018011517255396</packetID>
//        <masterID>2000040752</masterID>
//        <timeStamp>2018-01-15 17:25:53</timeStamp>
//        </head>
//        <body>
//        <lists name="acctList">
//        <list>
//        <acctNo>952A9997220008092</acctNo>
//        </list>
//        </lists>
//        </body>
//        </packet>//Up 请求形成XML 测试//BLow 修改后的,JAVA对象转XMLReq_sign_in re = new Req_sign_in();Req_sign_in.Head he = new Req_sign_in.Head();he.setTransCode(tcode);he.setSignFlag(1);he.setMasterID(masterID);he.setPacketID(packetID);he.setTimeStamp(str_date);re.setHead(he);Req_sign_in.Body bo = new Req_sign_in.Body();bo.setSignature(xml_body);re.setBody(bo);XStreamUtil xStrUtil = new XStreamUtil();XStream xst = xStrUtil.buildXStream();Map alis = new HashMap();aliases.put("packet", Req_sign_in.class);XStreamMarshaller unmarshaller1 = xStrUtil.buildXStreamMarshaller();unmarshaller1.setAliases(alis);String xml_temp = XML(re);xml_temp = place("n","");xml_temp = place(" ","");String xml_real = "<?xml version='1.0' encoding='GB2312'?>" + xml_temp;  //System.out.println(xml_real);//Up  修改后的,JAVA对象转XML//BLow 旧测试
//        String xml_request = "<?xml version='1.0' encoding='GB2312'?>" +
//                "<packet>" +
//                "<head>" +
//                "<transCode>"+tcode+"</transCode>" +
//                "<signFlag>1</signFlag>" +
//                "<masterID>"+masterID+"</masterID>" +
//                "<packetID>"+packetID+"</packetID>" +
//                "<timeStamp>"+str_date+"</timeStamp>" +
//                "</head>" +
//                "<body><signature>" +
//                 xml_body +
//                "</signature></body>"+
//                "</packet>";//Up 旧测试String xml_send = String.format("%-6s%s", xml_real.length()+6, xml_real);//3508  <?xml version="1.0" 右侧补充空格
//        String xml_send1 = String.format("%6s%s", xml_request.length()+6, xml_request);//  3508<?xml version="1.0"
//        String xml_send2 = String.format("%06d%s", Bytes().length+6, xml_request);//003508<?xml version= //文档这个方式不对!!!return xml_send;}

利用jsoup 解析HTML 到变量

           //Step3.解签名 XML除去前面6位,然后用jsoup解析return_code为6个A时,读取signature;发送去解签postResult = postResult.substring(6);//去除前6个字符Document doc_result = Jsoup.parse(postResult);Element e_return_code = doc_result.select("returnCode").first();//返回结果String return_code = e_();if(!return_code.equals("AAAAAAA")){System.out.println("调用失败!");return;}Element e_sign = doc_result.select("signature").first();//查找第一个a元素String str_sign_re = ();byte[] srtbyte_result = str_Bytes();Integer postResult_len = srtbyte_result.length;String conType = "INFOSEC_VERIFY_SIGN/1.0; Content-Length/"+String()+";";InputStream in_result = send_sign(srtbyte_result,conType,http_sign_url);String xml_request_result =  convertStreamToString(in_result);System.out.println("*****************************2:服务器解析结果******************************n");System.out.println(xml_request_result);System.out.println("*****************************3:中文乱码处理结果******************************n");String newStr1 = new String(xml_Bytes("GB2312"), "GB2312");System.out.println(newStr1);
//            String newStr2 = String(entity1 , "GBK").trim();//Step4.解析html结果//            Document doc_real = Jsoup.parse(xml_request_result,"utf-8");Document doc_real = Jsoup.parse(xml_request_result,"GB2312");
//                System.out.println(doc_real.body());Elements elementList = ElementsByTag("list");
//               System.out.println(elementList.size());if(ztype==2){Elements ele_totalCount = ElementsByTag("totalCount");Integer totalCount = 0;//总记录数totalCount = Integer.parseInt(ele_totalCount.select("totalCount").first().text().toString());//System.out.println("总记录数:"&#String());}for (Element element : elementList) {if(ztype==1){//4402余额结果//            <sic>//            <body>//            <lists name="acctBalanceList">//            <list>//            <acctNo>952A9997220008092</acctNo>//            <masterID>2489675304</masterID>//            <reserveBalance>0.00</reserveBalance>//            <freezeBalance>0.00</freezeBalance>//            <cortrolBalance>0.00</cortrolBalance>//            <canUseBalance>22259150.38</canUseBalance>//            <overdraftBalance>0.00</overdraftBalance>//            <balance>22259150.38</balance>//            </list>//            </lists>//            </body>//            </sic>String acctNo = "";String balance = "";String canUseBalance = "";//可用余额acctNo = element.select("acctNo").first().text().toString();//balance = element.select("balance").first().text().toString();//canUseBalance = element.select("canUseBalance").first().text().toString();//System.out.println("acctNo:"+acctNo+" balance :"+balance+" ");System.out.println("acctNo:"+acctNo+" canUseBalance :"+canUseBalance+" ");}else if(ztype==2){
//                    <lists name="HistoryList">
//                    <list>
//                    <voucherNo></voucherNo>
//                    <seqNo>999701700001</seqNo>
//                    <txAmount>2.13</txAmount>
//                    <balance>51827714.57</balance>
//                    <tranFlag>0</tranFlag>
//                    <transDate>20180102</transDate>
//                    <transTime>165952</transTime>
//                    <note>KM����0102170005</note>
//                    <remark>֧�����루���ʣ�</remark>
//                    <payeeBankNo>9520</payeeBankNo>
//                    <payeeBankName>�ַ����ݷ���Ӫҵ��</payeeBankName>
//                    <payeeAcctNo>952A9997220008349</payeeAcctNo>
//                    <payeeName>�ַ�2878487587</payeeName>
//                    <transCode>8801</transCode>
//                    <branchId>9520</branchId>
//                    <customerAcctNo></customerAcctNo>
//                    <payeeAcctType></payeeAcctType>
//                    <transCounter>99970170</transCounter>
//                    <authCounter></authCounter>
//                    <otherChar10></otherChar10>
//                    <otherChar40></otherChar40>
//                    <seqNum>1</seqNum>
//                    <revFlag>0</revFlag>
//                    </list>
//                    <list>
//                    <voucherNo></voucherNo>
//                    <seqNo>999701000001</seqNo>String seqNo = "";//唯一标识IDInteger tranFlag = 0;//借贷标志 0借 1贷Double txAmount = 0.00;//交易金额seqNo = element.select("seqNo").first().text().toString();//tranFlag=Integer.parseInt(element.select("tranFlag").first().text().toString());//txAmount = Double.parseDouble(element.select("txAmount").first().text().toString());System.out.println("seqNo:"+seqNo+" tranFlag :"&#String()+" txAmount: "&#String());}}} catch (Exception e) {e.printStackTrace();}}


本文发布于:2024-02-04 15:30:30,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170710576356713.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:技巧   浦发银
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23