fengketrade/doc/调用通讯接口可参考词demo1.java

155 lines
8.5 KiB
Java
Raw Normal View History

2025-10-20 15:29:15 +08:00
package com.example.filedemo.util.fuwufang;
import com.example.filedemo.util.MD5Util;
import com.example.filedemo.util.RSAUtil;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class Tx {
public static void main(String[] args) throws Exception {
// 公钥
String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCDTQjKgrHLJ6bHlkC/Z1yLBCkXf1xPlGqE5Y4OzyD0ltGpOtEEKGgS1dqRVIL4KB2ZcJ4YNeinK1OIF1VXQN89JRdp9RILpXmCR3I62oPFbLllYBWxOWQrybLDIiMLortHSQuEDihXfoCPIqJmpLruDYOqinc+ERh/1Ovy2j4JHwIDAQAB";
// 私钥
String privateKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALoeWEJKePYPWAQtJn4A+aI59/CfZtAfFZYnkF47v7j+JskM6aUoGkLixrbL6+hRgXw29PvndjthaoMw01SHwicipqfNxZHBYubaI9j9V+x+TUdlMuLPTnDJ8hn4G/gSjbHVNv7fxzKz9LABqiirElPgZnXuaOMckbTqr9JVTGaXAgMBAAECgYBIpQd1+HN2N073clgP3nmRZGbuOIl8umVGknK7FT8kCa9B0hRwLlLxwGondzjBGO8deKXunM19J+zW//u8hrC0wud/wKbxEaf4hjBADuLqTyh2XyEEWgtm+8+AdiuDUlt3VS5RHjBzam5+/XJUjxo7gtYmvN8R3kp4Ey1cILuGQQJBAOsYC7oofAr8/ZWMZApW5fPShCoapdigRJOfGlaAB5ppmc3U4/xl7KqpDaR76eWiAXRNaBB6L6T1VsMoTe7XQykCQQDKq12WFq6+/pGT7QVuRURUFt6JSCkoUlSm08bFKDvo11ZFYApZqBzlNUhVj73GsRs/m0KZD3/QMldfZg7Y81O/AkBlHpGkv9ci7tCwK5O4Msp0Bp+ccJvXQpBcorm0bRtYGoXyV9i8bqbOfSqGDlp70CQp/0V8mOG3ZWOtS7/BtMuJAkAnErDBTfA0vGmeplSktM/+kkYnG3Vr46uUWkH5Is+iDVoBmAmGzYV8nzAp5sOEugJx2eIWFkni/sGfj9KO+yKLAkEAvBGuPTz8yqUX8pAkB4qJQ1/pvnVPOt/r+cT1k+tuVoPtjGxbaLd1D/wNWsVdUFq6vrRYEioFnA9iGqjmCed7Lg==";
/**
* 加密及获取签名
*/
//源报文(未加密)
// String msg = "{\n" +
// " \"CLD_HEADER\":{\n" +
// " \"CLD_TX_CHNL\":\"YS44000007000524\",\n" +
// " \"CLD_TX_TIME\":\"20191112145911\",\n" +
// " \"CLD_TX_CODE\":\"svc_occMebOrderPush\",\n" +
// " \"CLD_TX_SEQ\":\"\"\n" +
// " },\n" +
// " \"CLD_BODY\":{\n" +
// " \"USR_TEL\":\"18242028306\",\n" +
// " \"DCCP_AVY_ID\":\"00001\",\n" +
// " \"DCCP_BSC_INF_SN\":\"00001\",\n" +
// " }\n" +
// "}";
// msg = "{\n" +
// "\"CLD_HEADER\":{\n" +
// "\"CLD_TX_CHNL\":\"YS44000007000524\",\n" +
// "\"CLD_TX_TIME\":\"20191112145911\",\n" +
// "\"CLD_TX_CODE\":\"svc_occMebOrderPush\",\n" +
// "\"CLD_TX_SEQ\":\"\"\n" +
// "},\n" +
// "\"CLD_BODY\":{\n" +
// "\"USR_TEL\":\"18242028306\",\n" +
// "\"DCCP_AVY_ID\":\"00001\",\n" +
// "\"DCCP_BSC_INF_SN\":\"00001\",\n" +
// "}\n" +
// "}";
// msg = "{" +
// "\"CLD_HEADER\":{" +
// "\"CLD_TX_CHNL\":\"YS44000007000524\"," +
// "\"CLD_TX_TIME\":\"20191112145911\"," +
// "\"CLD_TX_CODE\":\"svc_occMebOrderPush\"," +
// "\"CLD_TX_SEQ\":\"\"" +
// "}," +
// "\"CLD_BODY\":{" +
// "\"USR_TEL\":\"18242028306\"," +
// "\"DCCP_AVY_ID\":\"00001\"," +
// "\"DCCP_BSC_INF_SN\":\"00001\"," +
// "}" +
// "}";
// msg = "{\n" +
// "\"CLD_HEADER\":{\n" +
// "\"CLD_TX_CHNL\":\"YS44000007000524\",\n" +
// "\"CLD_TX_TIME\":\"20191112145911\",\n" +
// "\"CLD_TX_CODE\":\"svc_occMebOrderPush\",\n" +
// "\"CLD_TX_SEQ\":\"\"\n" +
// "},\n" +
// "\"CLD_BODY\":{\n" +
// "\"USER_ID\":\"0001\",\n" +
// "\"ORDER_ID\":\"1231\",\n" +
// "\"ORDER_DT\":\"20220427120000\",\n" +
// "}\n" +
// "}";
String msg = "{\n" +
" \"CLD_HEADER\":{\n" +
" \"CLD_TX_CHNL\":\"YS44000009000327\",\n" +
" \"CLD_TX_TIME\":\"20191112145911\",\n" +
" \"CLD_TX_CODE\":\"svc_occMebOrderPush\",\n" +
" \"CLD_TX_SEQ\":\"\"\n" +
" },\n" +
" \"CLD_BODY\":{\n" +
" \"USER_ID\":\"0001\",\n" +
" \"ORDER_ID\":\"1231\",\n" +
" \"ORDER_DT\":\"20220427120000\",\n" +
" }\n" +
"}";
msg = "{\"CLD_HEADER\":{\"CLD_TX_CHNL\":\"YS44000009000327\",\"CLD_TX_TIME\":\"20220809173259\",\"CLD_TX_CODE\":\"svc_occMebOrderPush\",\"CLD_TX_SEQ\":\"202208091732596048392\"},\"CLD_BODY\":{\"USER_ID\":\"ZF0055975697X\",\"ORDER_ID\":\"202208091732596048392\",\"ORDER_DT\":\"20220809173259\",\"TOTAL_AMT\":\"0.01\",\"PAY_AMT\":\"0.00\",\"DISCOUNT_AMT\":\"0.00\",\"ORDER_STATUS\":\"0\",\"REFUND_STATUS\":\"0\",\"MCT_NM\":\"院线通\"}}";
// msg = "{\n" +
// " \"CLD_HEADER\":{\n" +
// " \"CLD_TX_CHNL\":\"YS44000009000327\",\n" +
// " \"CLD_TX_TIME\":\"20191112145911\",\n" +
// " \"CLD_TX_CODE\":\"svc_occWhiteListUpdate\",\n" +
// " \"CLD_TX_SEQ\":\"\"\n" +
// " },\n" +
// " \"CLD_BODY\":{\n" +
// " \"UWL_ID\":\"18242028306\",\n" +
// " \"UWL_STATUS\":\"1000000000000000\"\n" +
// " }\n" +
// "}";
//String msg = "{\"CLD_BODY\":{\"BRANCHID\":\"\",\"CUSTOMERID\":\"\",\"EDDT_TM\":\"\",\"MSGRP_JRNL_NO\":\"810000719394\",\"ONLN_PY_TXN_ORDR_ID\":\"WAP2022012415285709902\",\"PAGE\":1,\"POS_CODE\":\"\",\"POS_ID\":\"\",\"SCN_IDR\":\"\",\"STDT_TM\":\"\",\"TXN_PRD_TPCD\":\"06\",\"TXN_STATUS\":\"00\",\"TX_TYPE\":\"0\"},\"CLD_HEADER\":{\"CLD_TX_CHNL\":\"YS44000009000547\",\"CLD_TX_CODE\":\"svc_occPlatOrderQry\",\"CLD_TX_SEQ\":\"YSTEST0120220412094349000000\",\"CLD_TX_TIME\":\"20220412094349\"}}";
//msg = "{\"CLD_HEADER\":{\"CLD_TX_CHNL\":\"YS44000008000559\",\"CLD_TX_TIME\":\"20220524155153\",\"CLD_TX_CODE\":\"svc_occMebOrderPush\",\"CLD_TX_SEQ\":\"d114f967-f4cb-4331-8f40-6e396d6680ef\"},\"CLD_BODY\":{\"USER_ID\":\"123\",\"ORDER_ID\":\"371944\",\"ORDER_DT\":\"20220524155153\",\"TOTAL_AMT\":\"0.01\",\"ORDER_STATUS\":\"1\",\"REFUND_STATUS\":\"0\",\"MCT_NM\":\"宁波方太营销有限公司\"}}";
// msg = "{\"CLD_BODY\":\n" +
// "{\"ONLN_PY_TXN_ORDR_ID\":\"1563461616486464648\",\n" +
// "\"PAGE\":\"1\",\n" +
// "\"TXN_PRD_TPCD\":\"06\",\n" +
// "\"TXN_STATUS\":\"02\",\n" +
// "\"TX_TYPE\":\"0\"\n" +
// "},\n" +
// "\"CLD_HEADER\":{\n" +
// "\"CLD_TX_CHNL\":\"YS44000008000605\",\n" +
// "\"CLD_TX_CODE\":\"svc_occPlatOrderQry\",\n" +
// "\"CLD_TX_TIME\":\"20220530091747\",\n" +
// "\"CLD_TX_SEQ\":\"\"}\n" +
// "}";
// 公钥加密得到密文并使用base64处理
String enc_msg = RSAUtil.encrypt(msg, publicKey);
BASE64Encoder encoder = new BASE64Encoder();
enc_msg = encoder.encode(enc_msg.getBytes("UTF-8"));
enc_msg = enc_msg.replaceAll("\r\n", "").replaceAll("\r", "").replaceAll("\n", "");
System.out.println("公钥加密得到密文并使用base64处理(cnt):");
System.out.println(enc_msg);
// 根据源报文+私钥获得MD5签名
String mac_info = MD5Util.getMD5(msg + privateKey);
System.out.println("根据源报文+私钥获得MD5签名(mac):");
System.out.println(mac_info);
/**
* 解密及验签
*/
// base64逆处理并用私钥解密
BASE64Decoder decoder = new BASE64Decoder();
//enc_msg = "blM2REE0RUdYazlVaDN1RWRQamNOUmFUUE5aUkNsN2xieVZYNjNZWFZKUlRLc1JIbjlEWVdmUzZuSi93TUFTSmZwaHhvWjRyZ1FubwpQQmtQZWJXSzQzWFZnb3RqdkhYL2I2eWhtOWt3S0dsSTFmQzJVczZ4SWpLTHU1Zm1rT3RVZUFkSDIxMDdMbENxK3JmRklqVkVpZTBMCnA3NmdEVnUwbDVUV1R1STJ0UVFxRDJwT3BkR0J6c1NESGhRdlBVN2tOaWlKTTdkQzFXaG5Sc3ZRUEpFcUw0eVVhNFQ0REFPSWRFVEIKSy92WWtIY1ZWbjUrcXZFb0krQmZwYXdaTzExQmdYVTcya1FXRFBTYkZBaWlXakZWeVRmM2dXbTMxVXVCWjN3S2tWOHcwZVFCMzB2cApSdTlqWTNqZSs2WEdVNXRPT0Vhcndhak0yN1B3NjRxVjdRU0diUT09Cg==";
enc_msg = new String(decoder.decodeBuffer(enc_msg),"UTF-8");
String dec_msg = RSAUtil.decrypt(enc_msg, privateKey);
System.out.println("base64逆处理并用私钥解密:");
System.out.println(dec_msg);
// 验签
String dec_mac = MD5Util.getMD5(dec_msg + privateKey);
if (mac_info.equals(dec_mac)) {
System.out.println("验签通过");
} else {
System.out.println("验签失败");
}
}
}