179号公文对接 上海公服示例
package net.shop.controller.admin.warehouse;
import cn.hutool.core.codec.Base64;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import net.shop.util.WebUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.apache.poi.ss.formula.functions.T;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.Assert;
import javax.net.ssl.*;
import javax.transaction.Transactional;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.net.*;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.*;
public class test {
// 公服加签地址 线上:
private String GONGFU_SIGN_URL = "https://www.shcepp.com/cepsi/ceppSignInter";
//给海关发送支付信息 线上:
private String HAIGUAN_SEND_PAY_INFO = "https://customs.chinaport.gov.cn/ceb2grab/grab/realTimeDataUpload";
@Transactional
public void operateGrapInfo(String orderNo, GrapInfo grapInfo, PayInfo payInfo) {
String method = "《海关数据中心抓取数据-定时任务-扫描未发送给数据中心的抓取信息表》";
JsonUtils jsonUtils = new JsonUtils();
//封装edata信息
HashMap<String, Object> EData = initEData(orderNo);
//封装 payExchangeInfoHead信息
HashMap<String, Object> payExchangeInfoHead = initPayExchangeInfoHead(payInfo);
ArrayList<Map<String, Object>> payExchangeInfoList = new ArrayList<>();
initPayExchangeInfoList(orderNo, payInfo, payExchangeInfoList);
HashMap<String, Object> payExInfoStr = new HashMap<>();
initPayExInfoStr(grapInfo, payExchangeInfoHead, payExchangeInfoList, payExInfoStr);
// 转换JSON
String EDataJson = jsonUtils.toJson(EData);
String payExInfoStrJson = jsonUtils.toJson(payExInfoStr);
// 编码
EDataJson = cn.hutool.core.codec.Base64.encode(EDataJson, "UTF-8");
payExInfoStrJson = Base64.encode(payExInfoStrJson, "UTF-8");
// MD5( req + key).upper()
String reqString = jsonUtils.toJson(EData);
String md5 = DigestUtils.md5Hex(reqString + "工服的秘钥 或者电子口岸的秘钥");
String SignMsg = md5.toUpperCase();
// 封装参数体
Map<String, Object> parameter = new HashMap<