From: Xia Kaixiang Date: Fri, 21 Jun 2019 05:16:36 +0000 (+0800) Subject: 农商行Socket请求xml拼接和返回xml解析 X-Git-Tag: 1.0.0^2~155 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=64f2169b06b96742533cf26550830c2b9e9ec1d1;p=epayment%2Ffood_payapi.git 农商行Socket请求xml拼接和返回xml解析 --- diff --git a/src/main/java/com/supwisdom/dlpay/api/bean/DlpayReq.java b/src/main/java/com/supwisdom/dlpay/api/bean/DlpayReq.java new file mode 100644 index 00000000..3678cc0f --- /dev/null +++ b/src/main/java/com/supwisdom/dlpay/api/bean/DlpayReq.java @@ -0,0 +1,48 @@ +package com.supwisdom.dlpay.api.bean; + +public class DlpayReq { + private static final String prefix = ""; + + //HEAD + private String jkdm; //接口代码 + private String jgdm; //结果代码 + private String fsdw; //发送单位 + private String jsdw; //接收单位 + private String czyh; //操作员号 + private String jyxh; //交易序号 + private String jyqd; //交易渠道 + private String yhxx; //安全用户信息 + private String klxx; //安全口令信息 + + //DATA业务参数 key值 + + + private String getPayXml() { + StringBuffer xml = new StringBuffer(); + xml.append(prefix) + .append("") + //HEAD + .append("") + .append("").append(jkdm).append("") + .append("").append("000000").append("") //发送时填充000000 + .append("").append(fsdw).append("") + .append("").append(jsdw).append("") + .append("").append(czyh).append("") + .append("").append(jyxh).append("") + .append("").append(jyqd).append("") + .append("").append(yhxx).append("") + .append("").append(klxx).append("") + .append("") + //DATA + .append("") +// .append("").append("201906211124000011").append("") + .append("") + .append(""); + return String.format("%08d", xml.toString().length()) + xml.toString(); + } + + + + + +} diff --git a/src/main/java/com/supwisdom/dlpay/util/DlpayUtil.java b/src/main/java/com/supwisdom/dlpay/util/DlpayUtil.java new file mode 100644 index 00000000..d4521d5c --- /dev/null +++ b/src/main/java/com/supwisdom/dlpay/util/DlpayUtil.java @@ -0,0 +1,76 @@ +package com.supwisdom.dlpay.util; + +import org.dom4j.Document; +import org.dom4j.Element; +import org.dom4j.io.SAXReader; + +import java.io.*; +import java.net.Socket; +import java.net.UnknownHostException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class DlpayUtil { + /** + * socket方式请求农商行 + */ + public static String send(String ip, int port, int timeout, String data) throws UnknownHostException, IOException { + Socket client = new Socket(ip, port); + client.setSoTimeout(timeout * 1000); //timeout秒 + PrintWriter printWriter = new PrintWriter(client.getOutputStream()); + // 发送消息 + printWriter.println(data); + printWriter.flush(); + + // 读取返回信息 + InputStreamReader streamReader = new InputStreamReader(client.getInputStream()); + BufferedReader reader = new BufferedReader(streamReader); + StringBuffer content = new StringBuffer(); //存返回信息 + int ch; + while ((ch = reader.read()) != -1) { + content.append((char) ch); + } + reader.close(); + client.close(); + return content.toString(); + } + + /** + * XML解析返回Map + * */ + public static Map getXMLValue(String xml, String charset) { + if (null == xml) return null; + if (null == charset) charset = "UTF-8"; //默认 UTF-8 + try { + byte[] data = xml.getBytes(charset); + ByteArrayInputStream bin = new ByteArrayInputStream(data); + SAXReader reader = new SAXReader(); + Document document = reader.read(bin); + Element root = document.getRootElement(); + List elementList = root.elements(); + Map map = new HashMap<>(0); + for (Element e : elementList) { + map.put(e.getName(), getElementValue(e)); + } + return map; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + private static Object getElementValue(Element root) { + if (null == root) return null; + if (root.elements().size() > 0) { + List elementList = root.elements(); + Map map = new HashMap<>(0); + for (Element e : elementList) { + map.put(e.getName(), getElementValue(e)); + } + return map; + } else { + return root.getText(); + } + } +}