农商行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 0000000..3678cc0
--- /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 = "<?xml version=\"1.0\" encoding=\"GBK\"?>";
+
+ //HEAD
+ private String jkdm; //<JKDM>接口代码</JKDM>
+ private String jgdm; //<JGDM>结果代码</JGDM>
+ private String fsdw; //<FSDW>发送单位</FSDW>
+ private String jsdw; //<JSDW>接收单位</JSDW>
+ private String czyh; //<CZYH>操作员号</CZYH>
+ private String jyxh; //<JYXH>交易序号</JYXH>
+ private String jyqd; //<JYQD>交易渠道</JYQD>
+ private String yhxx; //<YHXX>安全用户信息</YHXX>
+ private String klxx; //<KLXX>安全口令信息</KLXX>
+
+ //DATA业务参数 <KEY>key值</KEY>
+
+
+ private String getPayXml() {
+ StringBuffer xml = new StringBuffer();
+ xml.append(prefix)
+ .append("<FORMDATA>")
+ //HEAD
+ .append("<HEAD>")
+ .append("<JKDM>").append(jkdm).append("</JKDM>")
+ .append("<JGDM>").append("000000").append("</JGDM>") //发送时填充000000
+ .append("<FSDW>").append(fsdw).append("</FSDW>")
+ .append("<JSDW>").append(jsdw).append("</JSDW>")
+ .append("<CZYH>").append(czyh).append("</CZYH>")
+ .append("<JYXH>").append(jyxh).append("</JYXH>")
+ .append("<JYQD>").append(jyqd).append("</JYQD>")
+ .append("<YHXX>").append(yhxx).append("</YHXX>")
+ .append("<KLXX>").append(klxx).append("</KLXX>")
+ .append("</HEAD>")
+ //DATA
+ .append("<DATA>")
+// .append("<REFNO>").append("201906211124000011").append("</REFNO>")
+ .append("</DATA>")
+ .append("</FORMDATA>");
+ 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 0000000..d4521d5
--- /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<String, Object> 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<Element> elementList = root.elements();
+ Map<String, Object> 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<Element> elementList = root.elements();
+ Map<String, Object> map = new HashMap<>(0);
+ for (Element e : elementList) {
+ map.put(e.getName(), getElementValue(e));
+ }
+ return map;
+ } else {
+ return root.getText();
+ }
+ }
+}