|
@@ -8,10 +8,12 @@ import com.emato.cuspay.entity.merch.MerchNoti;
|
|
|
import com.emato.cuspay.entity.merch.MerchPayCfg;
|
|
|
import com.emato.cuspay.service.MerchNotiService;
|
|
|
import com.emato.cuspay.util.OkHttpUtils;
|
|
|
+import com.emato.cuspay.util.ReaderXmlForDOM4J;
|
|
|
import com.emato.cuspay.util.XmlUtils;
|
|
|
import com.emato.cuspay.wx.common.MerchNotiBuilder;
|
|
|
import com.emato.cuspay.wx.common.WxContants;
|
|
|
import com.emato.cuspay.wx.common.WxDict;
|
|
|
+import com.emato.cuspay.wx.dto.WxQueryResponseMsg;
|
|
|
import com.emato.cuspay.wx.dto.WxResponseMsg;
|
|
|
import com.emato.cuspay.wx.entity.WxCbPayDoc;
|
|
|
import com.emato.cuspay.wx.entity.WxPayError;
|
|
@@ -23,20 +25,30 @@ import okhttp3.MediaType;
|
|
|
import okhttp3.Request;
|
|
|
import okhttp3.RequestBody;
|
|
|
import org.apache.commons.codec.digest.DigestUtils;
|
|
|
+import org.dom4j.DocumentHelper;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
-
|
|
|
+import org.springframework.util.StringUtils;
|
|
|
+import org.w3c.dom.Node;
|
|
|
+import org.w3c.dom.NodeList;
|
|
|
+import org.xml.sax.InputSource;
|
|
|
+import org.xml.sax.SAXException;
|
|
|
+import org.xml.sax.helpers.DefaultHandler;
|
|
|
+
|
|
|
+import javax.swing.text.Document;
|
|
|
+import javax.xml.bind.Element;
|
|
|
import javax.xml.bind.JAXB;
|
|
|
+import javax.xml.parsers.DocumentBuilder;
|
|
|
+import javax.xml.parsers.DocumentBuilderFactory;
|
|
|
+import javax.xml.parsers.SAXParser;
|
|
|
+import javax.xml.parsers.SAXParserFactory;
|
|
|
import java.io.IOException;
|
|
|
import java.io.StringReader;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.SortedMap;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* 微信海关申报
|
|
@@ -53,7 +65,7 @@ public class WxCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
|
|
|
@Value("${db.wx.declare.limit}")
|
|
|
private Integer limit;
|
|
|
|
|
|
- @Value("${db.merch.notice.count}")
|
|
|
+ @Value("${db.wx.declare.count}")
|
|
|
private Integer count;
|
|
|
|
|
|
@Value("${wx.payment.declare.url}")
|
|
@@ -121,32 +133,20 @@ public class WxCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
|
|
|
builder.notiCount(count);
|
|
|
|
|
|
if (merchPayCfg == null) {
|
|
|
- logger.error("商户编号为【"+wxCbPayDoc.getMerchSn()+"】的商户支付配置信息不存在");
|
|
|
- wxCbPayDoc.setReturnCode(WxContants.ERROR_NO_INFOMATION);
|
|
|
+ wxCbPayDoc.setReturnCode("FAIL");
|
|
|
wxCbPayDoc.setReturnMsg("商户编号为【"+wxCbPayDoc.getMerchSn()+"】的商户支付配置信息不存在");
|
|
|
- wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_03.getItem());
|
|
|
+ wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_13.getItem());
|
|
|
wxCbPayDocService.updateWxCbPay(wxCbPayDoc);
|
|
|
-
|
|
|
- MerchNoti merchNoti = builder.code(WxContants.ERROR_NO_INFOMATION)
|
|
|
- .msg("商户编号为【"+wxCbPayDoc.getMerchSn()+"】的商户支付配置信息不存在")
|
|
|
- .cusDeclStatus(WxDict.MerchNoticeStatus.i_12.getItem())
|
|
|
- .build();
|
|
|
- merchNotis.add(merchNoti);
|
|
|
+ logger.error("商户编号为【"+wxCbPayDoc.getMerchSn()+"】的商户支付配置信息不存在");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
if (merchPayCfg.getMerchWxApiKey() == null) {
|
|
|
- logger.error("商户编号为【"+wxCbPayDoc.getMerchSn()+"】的商户支付信息api密钥为空");
|
|
|
wxCbPayDoc.setReturnCode(WxContants.ERROR_NO_INFOMATION);
|
|
|
- wxCbPayDoc.setReturnMsg("商户编号为【"+wxCbPayDoc.getMerchSn()+"】的商户支付配置信息不存在");
|
|
|
- wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_03.getItem());
|
|
|
+ wxCbPayDoc.setReturnMsg("商户编号为【"+wxCbPayDoc.getMerchSn()+"】的商户支付信息api密钥为空");
|
|
|
+ wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_13.getItem());
|
|
|
wxCbPayDocService.updateWxCbPay(wxCbPayDoc);
|
|
|
-
|
|
|
- MerchNoti merchNoti = builder.code(WxContants.ERROR_NO_API_KEY)
|
|
|
- .msg("商户编号为【"+wxCbPayDoc.getMerchSn()+"】的商户支付信息api密钥为空")
|
|
|
- .cusDeclStatus(WxDict.MerchNoticeStatus.i_12.getItem())
|
|
|
- .build();
|
|
|
- merchNotis.add(merchNoti);
|
|
|
+ logger.error("商户编号为【"+wxCbPayDoc.getMerchSn()+"】的商户支付信息api密钥为空");
|
|
|
return;
|
|
|
}
|
|
|
//设置商户配置信息
|
|
@@ -179,114 +179,94 @@ public class WxCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
|
|
|
wxCbPayDoc.setResultCode(wxResponseMsgDto.getResultCode());
|
|
|
wxCbPayDoc.setReturnCode(wxResponseMsgDto.getReturnCode());
|
|
|
wxCbPayDoc.setReturnMsg(wxResponseMsgDto.getReturnMsg());
|
|
|
- ///返回状态码为失败
|
|
|
- if (WxContants.RETURN_CODE_FAIL.equals(wxResponseMsgDto.getReturnCode()) ||
|
|
|
- WxContants.FAIL.equals(wxResponseMsgDto.getReturnCode())) {
|
|
|
- wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_03.getItem());
|
|
|
-
|
|
|
- wxCbPayDocService.updateWxCbPay(wxCbPayDoc);
|
|
|
-
|
|
|
- //通知商户
|
|
|
- MerchNoti merchNoti = builder.code(WxContants.ERROR_FAIL)
|
|
|
- .msg(wxResponseMsgDto.getReturnMsg())
|
|
|
- .cusDeclStatus(WxDict.MerchNoticeStatus.i_13.getItem())
|
|
|
- .build();
|
|
|
- merchNotis.add(merchNoti);
|
|
|
- }
|
|
|
|
|
|
//返回这状态码为成功 业务结果成功
|
|
|
- if (WxContants.SUCCESS.equals(wxResponseMsgDto.getReturnCode())
|
|
|
- && WxContants.SUCCESS.equals(wxResponseMsgDto.getResultCode())) {
|
|
|
-
|
|
|
- //订购人与支付人校验结果
|
|
|
- if (wxResponseMsgDto.getCertCheckResult() != null) {
|
|
|
- if ("UNCHECKED".equals(wxResponseMsgDto.getCertCheckResult())) { //未知
|
|
|
- builder.certCheckResult(MerchNoticeDict.BuyerPayerCheckStatus.i_0.getItem());
|
|
|
- }
|
|
|
- if ("SAME".equals(wxResponseMsgDto.getCertCheckResult())) {//一致
|
|
|
- builder.certCheckResult(MerchNoticeDict.BuyerPayerCheckStatus.i_1.getItem());
|
|
|
+ if (WxContants.SUCCESS.equals(wxResponseMsgDto.getReturnCode())) {
|
|
|
+ if (WxContants.SUCCESS.equals(wxResponseMsgDto.getResultCode())) {
|
|
|
+ //订购人与支付人校验结果
|
|
|
+ if (wxResponseMsgDto.getCertCheckResult() != null) {
|
|
|
+ if ("UNCHECKED".equals(wxResponseMsgDto.getCertCheckResult())) { //未知
|
|
|
+ builder.certCheckResult(MerchNoticeDict.BuyerPayerCheckStatus.i_0.getItem());
|
|
|
+ wxCbPayDoc.setBuyerPayerCheck(MerchNoticeDict.BuyerPayerCheckStatus.i_0.getItem());
|
|
|
+ }
|
|
|
+ if ("SAME".equals(wxResponseMsgDto.getCertCheckResult())) {//一致
|
|
|
+ builder.certCheckResult(MerchNoticeDict.BuyerPayerCheckStatus.i_1.getItem());
|
|
|
+ wxCbPayDoc.setBuyerPayerCheck(MerchNoticeDict.BuyerPayerCheckStatus.i_1.getItem());
|
|
|
+ }
|
|
|
+ if ("DIFFERENT".equals(wxResponseMsgDto.getCertCheckResult())) {//不一致
|
|
|
+ builder.certCheckResult(MerchNoticeDict.BuyerPayerCheckStatus.i_2.getItem());
|
|
|
+ wxCbPayDoc.setBuyerPayerCheck(MerchNoticeDict.BuyerPayerCheckStatus.i_2.getItem());
|
|
|
+ }
|
|
|
+ if(StringUtils.isEmpty(wxResponseMsgDto.getCertCheckResult())){//校验异常
|
|
|
+ builder.certCheckResult(MerchNoticeDict.BuyerPayerCheckStatus.i_3.getItem());
|
|
|
+ wxCbPayDoc.setBuyerPayerCheck(MerchNoticeDict.BuyerPayerCheckStatus.i_3.getItem());
|
|
|
+ }
|
|
|
}
|
|
|
- if ("DIFFERENT".equals(wxResponseMsgDto.getCertCheckResult())) {//不一致
|
|
|
- builder.certCheckResult(MerchNoticeDict.BuyerPayerCheckStatus.i_2.getItem());
|
|
|
+ MerchNoti merchNoti = new MerchNoti();
|
|
|
+ //返回状态未申报
|
|
|
+ if (WxDict.ResponseMsgState.UNDECLARED.getItem().equals(wxResponseMsgDto.getState())) {
|
|
|
+ wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_10.getItem());
|
|
|
+ merchNoti = builder.code(wxResponseMsgDto.getErrCode())
|
|
|
+ .msg(WxDict.ResponseMsgState.UNDECLARED.getItemName())
|
|
|
+ .cusDeclStatus(WxDict.MerchNoticeStatus.i_10.getItem())
|
|
|
+ .build();
|
|
|
+ } else if (WxDict.ResponseMsgState.PROCESSING.getItem().equals(wxResponseMsgDto.getState())) {//申报中
|
|
|
+ wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_11.getItem());
|
|
|
+ merchNoti = builder.code(wxResponseMsgDto.getErrCode())
|
|
|
+ .msg(WxDict.ResponseMsgState.PROCESSING.getItemName())
|
|
|
+ .cusDeclStatus(WxDict.MerchNoticeStatus.i_11.getItem())
|
|
|
+ .build();
|
|
|
+ } else if (WxDict.ResponseMsgState.SUBMITTED.getItem().equals(wxResponseMsgDto.getState())) {//申报已提交
|
|
|
+ wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_10.getItem());
|
|
|
+ merchNoti = builder.code(wxResponseMsgDto.getErrCode())
|
|
|
+ .msg(WxDict.ResponseMsgState.SUBMITTED.getItemName())
|
|
|
+ .cusDeclStatus(WxDict.MerchNoticeStatus.i_11.getItem())
|
|
|
+ .build();
|
|
|
+
|
|
|
+ } else if (WxDict.ResponseMsgState.SUCCESS.getItem().equals(wxResponseMsgDto.getState())) {//申报成功
|
|
|
+ wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_12.getItem());
|
|
|
+ merchNoti = builder.code(wxResponseMsgDto.getErrCode())
|
|
|
+ .msg(wxResponseMsgDto.getErrCodeDes())
|
|
|
+ .cusDeclStatus(WxDict.MerchNoticeStatus.i_12.getItem())
|
|
|
+ .build();
|
|
|
+ } else if (WxDict.ResponseMsgState.FAIL.getItem().equals(wxResponseMsgDto.getState())) {//申报失败
|
|
|
+ wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_03.getItem());
|
|
|
+ merchNoti = builder.code(wxResponseMsgDto.getErrCode())
|
|
|
+ .msg(WxDict.ResponseMsgState.FAIL.getItemName())
|
|
|
+ .cusDeclStatus(WxDict.MerchNoticeStatus.i_13.getItem())
|
|
|
+ .build();
|
|
|
+ } else if (WxDict.ResponseMsgState.EXCEPT.getItem().equals(wxResponseMsgDto.getState())) {//海关接口异常
|
|
|
+ wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_03.getItem());
|
|
|
+ merchNoti = builder.code(wxResponseMsgDto.getErrCode())
|
|
|
+ .msg(WxDict.ResponseMsgState.EXCEPT.getItemName())
|
|
|
+ .cusDeclStatus(WxDict.MerchNoticeStatus.i_13.getItem())
|
|
|
+ .build();
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- //返回状态未申报
|
|
|
- if (WxDict.ResponseMsgState.UNDECLARED.getItem().equals(wxResponseMsgDto.getState())) {
|
|
|
- wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_01.getItem());
|
|
|
-
|
|
|
- MerchNoti merchNoti = builder.code(WxContants.ERROR_FAIL)
|
|
|
- .msg("未申报")
|
|
|
- .cusDeclStatus(WxDict.MerchNoticeStatus.i_10.getItem())
|
|
|
- .build();
|
|
|
merchNotis.add(merchNoti);
|
|
|
- }
|
|
|
-
|
|
|
- //申报中
|
|
|
- if (WxDict.ResponseMsgState.PROCESSING.getItem().equals(wxResponseMsgDto.getState())) {
|
|
|
- wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_01.getItem());
|
|
|
+ wxCbPayDocService.updateWxCbPay(wxCbPayDoc);
|
|
|
+ } else {//返回状态码为成功 业务结果失败
|
|
|
+ wxCbPayDoc.setErrCode(wxResponseMsgDto.getErrCode());
|
|
|
+ wxCbPayDoc.setErrCodeDes(wxResponseMsgDto.getErrCodeDes());
|
|
|
+ wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_13.getItem());
|
|
|
+ wxCbPayDocService.updateWxCbPay(wxCbPayDoc);
|
|
|
|
|
|
MerchNoti merchNoti = builder.code(wxResponseMsgDto.getErrCode())
|
|
|
.msg(wxResponseMsgDto.getErrCodeDes())
|
|
|
- .cusDeclStatus(WxDict.MerchNoticeStatus.i_11.getItem())
|
|
|
- .build();
|
|
|
- merchNotis.add(merchNoti);
|
|
|
- }
|
|
|
-
|
|
|
- //申报已提交
|
|
|
- if (WxDict.ResponseMsgState.SUBMITTED.getItem().equals(wxResponseMsgDto.getState())) {
|
|
|
- wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_10.getItem());
|
|
|
-
|
|
|
- MerchNoti merchNoti = builder.code(wxResponseMsgDto.getErrCode())
|
|
|
- .msg(wxResponseMsgDto.getErrCodeDes())
|
|
|
- .cusDeclStatus(WxDict.MerchNoticeStatus.i_11.getItem())
|
|
|
- .build();
|
|
|
- merchNotis.add(merchNoti);
|
|
|
-
|
|
|
- }
|
|
|
- //申报成功
|
|
|
- if (WxDict.ResponseMsgState.SUCCESS.getItem().equals(wxResponseMsgDto.getState())) {
|
|
|
- wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_11.getItem());
|
|
|
-
|
|
|
- MerchNoti merchNoti = builder.code(wxResponseMsgDto.getErrCode())
|
|
|
- .msg(wxResponseMsgDto.getErrCodeDes())
|
|
|
- .cusDeclStatus(WxDict.MerchNoticeStatus.i_12.getItem())
|
|
|
- .build();
|
|
|
- merchNotis.add(merchNoti);
|
|
|
- }
|
|
|
- //申报失败
|
|
|
- if (WxDict.ResponseMsgState.FAIL.getItem().equals(wxResponseMsgDto.getState())) {
|
|
|
- wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_03.getItem());
|
|
|
-
|
|
|
- MerchNoti merchNoti = builder.code(WxContants.ERROR_FAIL)
|
|
|
- .msg("海关申报失败")
|
|
|
- .cusDeclStatus(WxDict.MerchNoticeStatus.i_13.getItem())
|
|
|
- .build();
|
|
|
- merchNotis.add(merchNoti);
|
|
|
- }
|
|
|
- //海关接口异常
|
|
|
- if (WxDict.ResponseMsgState.EXCEPT.getItem().equals(wxResponseMsgDto.getState())) {
|
|
|
- wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_03.getItem());
|
|
|
-
|
|
|
- MerchNoti merchNoti = builder.code(WxContants.ERROR_EXCEPT)
|
|
|
- .msg("海关接口异常")
|
|
|
.cusDeclStatus(WxDict.MerchNoticeStatus.i_13.getItem())
|
|
|
.build();
|
|
|
merchNotis.add(merchNoti);
|
|
|
}
|
|
|
- wxCbPayDocService.updateWxCbPay(wxCbPayDoc);
|
|
|
}
|
|
|
+ ///返回状态码为失败
|
|
|
+ if (WxContants.RETURN_CODE_FAIL.equals(wxResponseMsgDto.getReturnCode()) ||
|
|
|
+ WxContants.FAIL.equals(wxResponseMsgDto.getReturnCode())) {
|
|
|
+ wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_03.getItem());
|
|
|
|
|
|
- //返回状态码为成功 业务结果失败
|
|
|
- if (WxContants.SUCCESS.equals(wxResponseMsgDto.getReturnCode())
|
|
|
- && WxContants.FAIL.equals(wxResponseMsgDto.getResultCode())) {
|
|
|
- wxCbPayDoc.setErrCode(wxResponseMsgDto.getErrCode());
|
|
|
- wxCbPayDoc.setErrCodeDes(wxResponseMsgDto.getErrCodeDes());
|
|
|
- wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_12.getItem());
|
|
|
wxCbPayDocService.updateWxCbPay(wxCbPayDoc);
|
|
|
|
|
|
- MerchNoti merchNoti = builder.code(wxResponseMsgDto.getErrCode())
|
|
|
- .msg(wxResponseMsgDto.getErrCodeDes())
|
|
|
+ //通知商户
|
|
|
+ MerchNoti merchNoti = builder.code(WxContants.ERROR_FAIL)
|
|
|
+ .msg(wxResponseMsgDto.getReturnMsg())
|
|
|
.cusDeclStatus(WxDict.MerchNoticeStatus.i_13.getItem())
|
|
|
.build();
|
|
|
merchNotis.add(merchNoti);
|
|
@@ -301,7 +281,7 @@ public class WxCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
|
|
|
//持久化商户通知数据
|
|
|
try {
|
|
|
int result = merchNotiService.insertBatch(merchNotis);
|
|
|
- if (result < 0) {
|
|
|
+ if (result == 0) {
|
|
|
logger.error("持久化" + result + "条商户通知数据失败data:" + merchNotis);
|
|
|
throw new Exception("持久化" + result + "条商户通知数据失败data:" + merchNotis);
|
|
|
}
|
|
@@ -313,7 +293,7 @@ public class WxCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
|
|
|
try {
|
|
|
if (errors != null && !errors.isEmpty()) {
|
|
|
int errResult = wxPayErrorService.insertWxPayErrorBatch(errors);
|
|
|
- if (errResult < 0) {
|
|
|
+ if (errResult == 0) {
|
|
|
logger.error("持久化支付申报异常信息数据失败data:" + errors);
|
|
|
throw new Exception("持久化支付申报异常信息数据失败data:" + errors);
|
|
|
}
|
|
@@ -356,8 +336,6 @@ public class WxCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
|
|
|
* @return
|
|
|
*/
|
|
|
protected Map<String, String> assemblyDeclareXml(WxCbPayDoc wxCbPayDoc, String key) {
|
|
|
-
|
|
|
-
|
|
|
//1.选择报关数据,排序
|
|
|
SortedMap<String, String> sorted = Maps.newTreeMap();
|
|
|
sorted.put("appid", wxCbPayDoc.getAppid());
|
|
@@ -414,10 +392,10 @@ public class WxCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
|
|
|
|
|
|
String queryURL = "https://api.mch.weixin.qq.com/cgi-bin/mch/customs/customdeclarequery";
|
|
|
WxCbPayDoc wxCbPayDoc = new WxCbPayDoc();
|
|
|
- wxCbPayDoc.setAppid("wx24013b34e349db3c");
|
|
|
+ wxCbPayDoc.setAppid("125453");
|
|
|
wxCbPayDoc.setMchId("1501125641");
|
|
|
- wxCbPayDoc.setOutTradeNo("670219011050");
|
|
|
- wxCbPayDoc.setTransactionId("4200000137201805171532382342");
|
|
|
+ wxCbPayDoc.setOutTradeNo("701415011050");
|
|
|
+ wxCbPayDoc.setTransactionId("4200000114201805234418784392");
|
|
|
wxCbPayDoc.setCustoms("SHENZHEN");
|
|
|
wxCbPayDoc.setMchCustomsNo("4403160Z3Y");//中网科技(深圳)有限公司
|
|
|
|
|
@@ -428,11 +406,11 @@ public class WxCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
|
|
|
sorted.put("out_trade_no", wxCbPayDoc.getOutTradeNo());
|
|
|
sorted.put("transaction_id", wxCbPayDoc.getTransactionId());
|
|
|
sorted.put("customs", wxCbPayDoc.getCustoms());
|
|
|
- sorted.put("mch_customs_no", wxCbPayDoc.getMchCustomsNo());
|
|
|
+// sorted.put("mch_customs_no", wxCbPayDoc.getMchCustomsNo());
|
|
|
//sorted.put("action_type", "MODIFY ");
|
|
|
- sorted.put("cert_type", "IDCARD");
|
|
|
- sorted.put("cert_id", "440301198012261939");
|
|
|
- sorted.put("name", "司晓峰");
|
|
|
+// sorted.put("cert_type", "IDCARD");
|
|
|
+// sorted.put("cert_id", "440301198012261939");
|
|
|
+// sorted.put("name", "司晓峰");
|
|
|
|
|
|
|
|
|
//2.生成签名
|
|
@@ -451,7 +429,7 @@ public class WxCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
|
|
|
System.out.println("xml:"+xml);
|
|
|
|
|
|
//通过http post请求 发送xml数据
|
|
|
- Request request = OkHttpUtils.buildRequest("https://api.mch.weixin.qq.com/cgi-bin/mch/customs/customdeclareorder",
|
|
|
+ Request request = OkHttpUtils.buildRequest(queryURL,
|
|
|
RequestBody.create(MediaType.parse("application/xml; charset=utf-8"), xml));
|
|
|
String result = null;
|
|
|
try {
|
|
@@ -462,10 +440,14 @@ public class WxCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
|
|
|
|
|
|
|
|
|
|
|
|
- StringReader reader = new StringReader(result);
|
|
|
+ System.out.println(result);
|
|
|
+ System.out.println(ReaderXmlForDOM4J.parse(result,1));
|
|
|
|
|
|
- WxResponseMsg wxResponseMsg = JAXB.unmarshal(reader, WxResponseMsg.class);
|
|
|
+ StringReader reader = new StringReader(result);
|
|
|
+ WxQueryResponseMsg wxResponseMsg = JAXB.unmarshal(reader, WxQueryResponseMsg.class);
|
|
|
|
|
|
System.out.println(wxResponseMsg);
|
|
|
+
|
|
|
}
|
|
|
+
|
|
|
}
|