From 64f2169b06b96742533cf26550830c2b9e9ec1d1 Mon Sep 17 00:00:00 2001 From: Xia Kaixiang Date: Fri, 21 Jun 2019 13:16:36 +0800 Subject: [PATCH] =?utf8?q?=E5=86=9C=E5=95=86=E8=A1=8CSocket=E8=AF=B7?= =?utf8?q?=E6=B1=82xml=E6=8B=BC=E6=8E=A5=E5=92=8C=E8=BF=94=E5=9B=9Exml?= =?utf8?q?=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../supwisdom/dlpay/api/bean/DlpayReq.java | 48 ++++++++++++ .../com/supwisdom/dlpay/util/DlpayUtil.java | 76 +++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 src/main/java/com/supwisdom/dlpay/api/bean/DlpayReq.java create mode 100644 src/main/java/com/supwisdom/dlpay/util/DlpayUtil.java 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(); + } + } +} -- 2.17.1