【支付-华夏银行】对接前置机Socket核心类-java

    技术2022-07-17  78

    1.通讯流程

    1.直联客户的软件程序(简称ERP)发送报文到直联前置机 2.前置机将接收的到的报文签名整合,再转发到银行服务器 3.返回报文到前置机,最终返回到ERP 4.注意:使用gbk编码

    2.核心类(java):

    package com.ziniu.pay.util; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.io.*; import java.net.Socket; @Slf4j @Component public class SocketClient { private static String IP; private static int PORT; @Value("${socket.ip}") public void setIP(String IP) { SocketClient.IP = IP.trim(); } @Value("${socket.port}") public void setPORT(int PORT) { SocketClient.PORT = PORT; } /** * 示例:String str = "Xhj1001#1153285#201310230099112#10250001002171482#1#1#对私#1|6226310510420134|135067|500|J|#@@@@"; * * @param str * @return */ public static String send(String str) { log.info("connect:{}:{}", IP, PORT); try ( // 和服务器创建连接 Socket socket = new Socket(IP, PORT); // 要发送给服务器的信息 OutputStream os = socket.getOutputStream(); OutputStreamWriter pw = new OutputStreamWriter(os,"gbk"); // 从服务器接收的信息 InputStream is = socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is,"gbk")); ) { // str = DealStringUtils.toGbk(str); log.info("send: " + str); pw.write(str); pw.flush(); socket.shutdownOutput(); String info = null; while ((info = br.readLine()) != null) { log.info("receive:" + info); return info; } } catch (Exception e) { e.printStackTrace(); } return null; } public static void main(String[] args) { IP = "223.72.175.122"; PORT = 8008; String str = "Xhj1001#1153285#201310230099112#10250001002171482#1#1#对私#1|6226310510420134|135067|500|J|#@@@@"; String send = send(str); } }
    Processed: 0.009, SQL: 9