|
@@ -1,17 +1,23 @@
|
|
|
package com.emato.cuspay.wx.declare;
|
|
|
|
|
|
+import com.emato.cuspay.base.merch.MerchCusService;
|
|
|
+import com.emato.cuspay.base.merch.MerchNotiService;
|
|
|
+import com.emato.cuspay.dto.merch.MerchCusCfg;
|
|
|
+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.common.contant.TablePrimaryKeyPrefix;
|
|
|
import com.emato.cuspay.common.core.db.IdWorkerAide;
|
|
|
import com.emato.cuspay.dao.mapper.merch.MerchNotiMapper;
|
|
|
-import com.emato.cuspay.dao.mapper.wx.WxCbPayDocMapper;
|
|
|
-import com.emato.cuspay.dto.WxResponseMsg;
|
|
|
+import com.emato.cuspay.wx.dto.WxResponseMsg;
|
|
|
import com.emato.cuspay.dto.merch.MerchNoti;
|
|
|
import com.emato.cuspay.dto.merch.MerchPayCfg;
|
|
|
-import com.emato.cuspay.dto.wx.WxCbPayDoc;
|
|
|
-import com.emato.cuspay.dto.wx.WxPayError;
|
|
|
+import com.emato.cuspay.wx.dao.entity.WxCbPayDoc;
|
|
|
+import com.emato.cuspay.wx.dao.entity.WxPayError;
|
|
|
import com.emato.cuspay.util.OkHttpUtils;
|
|
|
import com.emato.cuspay.util.XmlUtils;
|
|
|
+import com.emato.cuspay.wx.service.WxCbPayDocService;
|
|
|
+import com.emato.cuspay.wx.service.WxPayErrorService;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import com.google.common.collect.Maps;
|
|
|
import okhttp3.MediaType;
|
|
@@ -55,10 +61,16 @@ public class WxCusDeclare extends AbstractCusDeclare implements CusDeclare{
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
- private WxCbPayDocMapper wxCbPayDocMapper;
|
|
|
+ private WxCbPayDocService wxCbPayDocService;
|
|
|
|
|
|
@Autowired
|
|
|
- private MerchNotiMapper merchNotiMapper;
|
|
|
+ private WxPayErrorService wxPayErrorService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MerchNotiService merchNotiService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MerchCusService merchCusService;
|
|
|
|
|
|
/**
|
|
|
* 海关报关接口
|
|
@@ -67,35 +79,77 @@ public class WxCusDeclare extends AbstractCusDeclare implements CusDeclare{
|
|
|
limit = (limit != null && limit > 0) ? limit : 20;
|
|
|
count = (count != null && count > 0) ? count : 10;
|
|
|
|
|
|
- List<WxCbPayDoc> wxCbPayDocs = wxCbPayDocMapper.selectBeDeclaredData(limit);
|
|
|
+ List<WxCbPayDoc> wxCbPayDocs = wxCbPayDocService.selectBeDeclaredData(limit);
|
|
|
|
|
|
if (wxCbPayDocs == null || wxCbPayDocs.isEmpty()) {
|
|
|
logger.info("没有待申报微信推海关的支付数据");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ //更新状态申报中
|
|
|
+ wxCbPayDocs.forEach(wxCbPayDoc -> {
|
|
|
+ wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_01.getItem());
|
|
|
+ });
|
|
|
+ int wxResult = wxCbPayDocService.updateBatch(wxCbPayDocs);
|
|
|
+ if (wxResult < 0) {
|
|
|
+ logger.error("批量更新待申报的微信推海关支付数据失败size:"+wxCbPayDocs.size()+" data:"+wxCbPayDocs);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
//记录异常数据
|
|
|
- List<WxCbPayDoc> docs = Lists.newArrayList();
|
|
|
List<WxPayError> errors = Lists.newArrayList();
|
|
|
+ //待通知的用户
|
|
|
+ List<MerchNoti> merchNotis = Lists.newArrayList();
|
|
|
|
|
|
//修改数支付单状态为申报中
|
|
|
|
|
|
wxCbPayDocs.forEach(wxCbPayDoc -> {
|
|
|
+
|
|
|
//获取商户信息 从缓存中去 缓存不存在 从数据库重取
|
|
|
MerchPayCfg merchPayCfg = getMerchPayCfgCache(wxCbPayDoc.getMerchSn());
|
|
|
|
|
|
+ MerchNotiBuilder builder = new MerchNotiBuilder();
|
|
|
+
|
|
|
+ //设置支付信息
|
|
|
+ builder.wxCbPay(wxCbPayDoc);
|
|
|
+ //设置通知次数
|
|
|
+ builder.notiCount(count);
|
|
|
+
|
|
|
if (merchPayCfg == null) {
|
|
|
logger.error("商户编号为【"+wxCbPayDoc.getMerchSn()+"】的商户支付配置信息不存在");
|
|
|
+ wxCbPayDoc.setReturnCode(WxContants.ERROR_NO_INFOMATION);
|
|
|
+ wxCbPayDoc.setReturnMsg("商户编号为【"+wxCbPayDoc.getMerchSn()+"】的商户支付配置信息不存在");
|
|
|
+ wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_03.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);
|
|
|
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());
|
|
|
+ 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);
|
|
|
return;
|
|
|
}
|
|
|
+ //设置商户配置信息
|
|
|
+ builder.merchPay(merchPayCfg);
|
|
|
|
|
|
//组装xml 格式数据
|
|
|
String xml = XmlUtils.map2Xml(assemblyDeclareXml(wxCbPayDoc, merchPayCfg.getMerchWxApiKey()));
|
|
|
+ logger.info("微信支付报关请求数xml据为:"+xml);
|
|
|
|
|
|
//通过http post请求 发送xml数据
|
|
|
Request request = OkHttpUtils.buildRequest(declareURL,
|
|
@@ -110,141 +164,167 @@ public class WxCusDeclare extends AbstractCusDeclare implements CusDeclare{
|
|
|
throw new IOException("http请求["+declareURL+"]响应结果为空" );
|
|
|
}
|
|
|
///返回状态码为失败
|
|
|
- if (RETURN_CODE_FAIL.equals(wxResponseMsgDto.getReturnCode()) ||
|
|
|
- FAIL.equals(wxResponseMsgDto.getReturnCode())) {
|
|
|
+ if (WxContants.RETURN_CODE_FAIL.equals(wxResponseMsgDto.getReturnCode()) ||
|
|
|
+ WxContants.FAIL.equals(wxResponseMsgDto.getReturnCode())) {
|
|
|
|
|
|
wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_03.getItem());
|
|
|
wxCbPayDoc.setResultCode(wxResponseMsgDto.getReturnCode());
|
|
|
wxCbPayDoc.setReturnMsg(wxResponseMsgDto.getReturnMsg());
|
|
|
- wxCbPayDocMapper.insertSelective(wxCbPayDoc);
|
|
|
+ wxCbPayDocService.updateWxCbPay(wxCbPayDoc);
|
|
|
|
|
|
//通知商户
|
|
|
- MerchNoti merchNoti = assemblyMerchNoti(wxCbPayDoc, merchPayCfg);
|
|
|
- merchNoti.setCusDeclStatus(WxDict.MerchNoticeStatus.i_12.getItem());
|
|
|
- merchNoti.setCode("-1");
|
|
|
- merchNoti.setMsg(wxResponseMsgDto.getReturnMsg());
|
|
|
-
|
|
|
- merchNotiMapper.insertSelective(merchNoti);
|
|
|
-
|
|
|
+ MerchNoti merchNoti = builder.code(WxContants.ERROR_FAIL)
|
|
|
+ .msg(wxResponseMsgDto.getReturnMsg())
|
|
|
+ .cusDeclStatus(WxDict.MerchNoticeStatus.i_12.getItem())
|
|
|
+ .build();
|
|
|
+ merchNotis.add(merchNoti);
|
|
|
}
|
|
|
|
|
|
//返回这状态码为成功 业务结果成功
|
|
|
- if (SUCCESS.equals(wxResponseMsgDto.getReturnCode()) && SUCCESS.equals(wxResponseMsgDto.getResultCode())) {
|
|
|
+ if (WxContants.SUCCESS.equals(wxResponseMsgDto.getReturnCode())
|
|
|
+ && WxContants.SUCCESS.equals(wxResponseMsgDto.getResultCode())) {
|
|
|
wxCbPayDoc.setReturnCode(wxResponseMsgDto.getReturnCode());
|
|
|
wxCbPayDoc.setReturnMsg(wxResponseMsgDto.getReturnMsg());
|
|
|
wxCbPayDoc.setResultCode(wxResponseMsgDto.getResultCode());
|
|
|
|
|
|
+ //订购人与支付人校验结果
|
|
|
+ builder.certCheckResult(wxResponseMsgDto.getCertCheckResult());
|
|
|
+
|
|
|
//返回状态未申报
|
|
|
if (WxDict.ResponseMsgState.UNDECLARED.getItem().equals(wxResponseMsgDto.getState())) {
|
|
|
wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_01.getItem());
|
|
|
- wxCbPayDocMapper.updateByPrimaryKeySelective(wxCbPayDoc);
|
|
|
+ wxCbPayDocService.updateWxCbPay(wxCbPayDoc);
|
|
|
|
|
|
- MerchNoti merchNoti = assemblyMerchNoti(wxCbPayDoc, merchPayCfg);
|
|
|
- merchNoti.setCusDeclStatus(WxDict.MerchNoticeStatus.i_10.getItem()); //等待海关处理
|
|
|
- merchNotiMapper.insertSelective(merchNoti);
|
|
|
+ MerchNoti merchNoti = builder.code(WxContants.ERROR_FAIL)
|
|
|
+ .msg("未申报")
|
|
|
+ .cusDeclStatus(WxDict.MerchNoticeStatus.i_12.getItem())
|
|
|
+ .build();
|
|
|
+ merchNotis.add(merchNoti);
|
|
|
}
|
|
|
|
|
|
//申报中
|
|
|
if (WxDict.ResponseMsgState.PROCESSING.getItem().equals(wxResponseMsgDto.getState())) {
|
|
|
wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_01.getItem());
|
|
|
- wxCbPayDocMapper.updateByPrimaryKeySelective(wxCbPayDoc);
|
|
|
+ wxCbPayDocService.updateWxCbPay(wxCbPayDoc);
|
|
|
|
|
|
- MerchNoti merchNoti = assemblyMerchNoti(wxCbPayDoc, merchPayCfg);
|
|
|
- merchNoti.setCusDeclStatus(WxDict.MerchNoticeStatus.i_11.getItem());//海关处理中
|
|
|
- merchNotiMapper.insertSelective(merchNoti);
|
|
|
+ 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());
|
|
|
- wxCbPayDocMapper.updateByPrimaryKeySelective(wxCbPayDoc);
|
|
|
+ wxCbPayDocService.updateWxCbPay(wxCbPayDoc);
|
|
|
|
|
|
- MerchNoti merchNoti = assemblyMerchNoti(wxCbPayDoc, merchPayCfg);
|
|
|
- merchNoti.setCusDeclStatus(WxDict.MerchNoticeStatus.i_10.getItem());//等待海关处理
|
|
|
- merchNotiMapper.insertSelective(merchNoti);
|
|
|
+ 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());
|
|
|
- wxCbPayDocMapper.updateByPrimaryKeySelective(wxCbPayDoc);
|
|
|
+ wxCbPayDocService.updateWxCbPay(wxCbPayDoc);
|
|
|
|
|
|
- MerchNoti merchNoti = assemblyMerchNoti(wxCbPayDoc, merchPayCfg);
|
|
|
- merchNoti.setCusDeclStatus(WxDict.MerchNoticeStatus.i_13.getItem());
|
|
|
- merchNotiMapper.insertSelective(merchNoti);
|
|
|
+ MerchNoti merchNoti = builder.code(wxResponseMsgDto.getErrCode())
|
|
|
+ .msg(wxResponseMsgDto.getErrCodeDes())
|
|
|
+ .cusDeclStatus(WxDict.MerchNoticeStatus.i_13.getItem())
|
|
|
+ .build();
|
|
|
+ merchNotis.add(merchNoti);
|
|
|
}
|
|
|
//申报失败
|
|
|
if (WxDict.ResponseMsgState.FAIL.getItem().equals(wxResponseMsgDto.getState())) {
|
|
|
wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_03.getItem());
|
|
|
- wxCbPayDocMapper.updateByPrimaryKeySelective(wxCbPayDoc);
|
|
|
+ wxCbPayDocService.updateWxCbPay(wxCbPayDoc);
|
|
|
+
|
|
|
|
|
|
- MerchNoti merchNoti = assemblyMerchNoti(wxCbPayDoc, merchPayCfg);
|
|
|
- merchNoti.setCusDeclStatus(WxDict.MerchNoticeStatus.i_12.getItem());
|
|
|
- merchNotiMapper.insertSelective(merchNoti);
|
|
|
+ MerchNoti merchNoti = builder.code(WxContants.ERROR_FAIL)
|
|
|
+ .msg("海关申报失败")
|
|
|
+ .cusDeclStatus(WxDict.MerchNoticeStatus.i_12.getItem())
|
|
|
+ .build();
|
|
|
+ merchNotis.add(merchNoti);
|
|
|
}
|
|
|
//海关接口异常
|
|
|
if (WxDict.ResponseMsgState.EXCEPT.getItem().equals(wxResponseMsgDto.getState())) {
|
|
|
wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_03.getItem());
|
|
|
- wxCbPayDocMapper.updateByPrimaryKeySelective(wxCbPayDoc);
|
|
|
+ wxCbPayDocService.updateWxCbPay(wxCbPayDoc);
|
|
|
|
|
|
- MerchNoti merchNoti = assemblyMerchNoti(wxCbPayDoc, merchPayCfg);
|
|
|
- merchNoti.setCusDeclStatus(WxDict.MerchNoticeStatus.i_12.getItem());
|
|
|
- merchNotiMapper.insertSelective(merchNoti);
|
|
|
+ MerchNoti merchNoti = builder.code(WxContants.ERROR_EXCEPT)
|
|
|
+ .msg("海关接口异常")
|
|
|
+ .cusDeclStatus(WxDict.MerchNoticeStatus.i_12.getItem())
|
|
|
+ .build();
|
|
|
+ merchNotis.add(merchNoti);
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
//返回状态码为成功 业务结果失败
|
|
|
- if (SUCCESS.equals(wxResponseMsgDto.getReturnCode()) && FAIL.equals(wxResponseMsgDto.getResultCode())) {
|
|
|
+ if (WxContants.SUCCESS.equals(wxResponseMsgDto.getReturnCode())
|
|
|
+ && WxContants.FAIL.equals(wxResponseMsgDto.getResultCode())) {
|
|
|
wxCbPayDoc.setResultCode(wxResponseMsgDto.getResultCode());
|
|
|
wxCbPayDoc.setErrCode(wxResponseMsgDto.getErrCode());
|
|
|
wxCbPayDoc.setErrCodeDes(wxResponseMsgDto.getErrCodeDes());
|
|
|
wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_12.getItem());
|
|
|
- wxCbPayDocMapper.updateByPrimaryKeySelective(wxCbPayDoc);
|
|
|
-
|
|
|
- MerchNoti merchNoti = assemblyMerchNoti(wxCbPayDoc, merchPayCfg);
|
|
|
- merchNoti.setCode(wxResponseMsgDto.getErrCode());
|
|
|
- merchNoti.setMsg(wxResponseMsgDto.getErrCodeDes());
|
|
|
- merchNoti.setCusDeclStatus(WxDict.MerchNoticeStatus.i_12.getItem());
|
|
|
+ wxCbPayDocService.updateWxCbPay(wxCbPayDoc);
|
|
|
|
|
|
+ MerchNoti merchNoti = builder.code(wxResponseMsgDto.getErrCode())
|
|
|
+ .msg(wxResponseMsgDto.getErrCodeDes())
|
|
|
+ .cusDeclStatus(WxDict.MerchNoticeStatus.i_12.getItem())
|
|
|
+ .build();
|
|
|
+ merchNotis.add(merchNoti);
|
|
|
}
|
|
|
|
|
|
} catch (IOException e) {
|
|
|
- docs.add(wxCbPayDoc);
|
|
|
- WxPayError wxPayError = new WxPayError();
|
|
|
+ WxPayError wxPayError = createWxPayError(wxCbPayDoc);
|
|
|
errors.add(wxPayError);
|
|
|
}
|
|
|
});
|
|
|
|
|
|
- //存储异常记录
|
|
|
+ //持久化商户通知数据
|
|
|
+ int result = merchNotiService.insertBatch(merchNotis);
|
|
|
+ if (result < 0) {
|
|
|
+ logger.error("持久化"+result+"条商户通知数据失败data:"+merchNotis);
|
|
|
+ }
|
|
|
|
|
|
+ //存储异常记录
|
|
|
+ if (errors != null && !errors.isEmpty()) {
|
|
|
+ int errResult = wxPayErrorService.insertWxPayErrorBatch(errors);
|
|
|
+ if (errResult < 0) {
|
|
|
+ logger.error("持久化支付申报异常信息数据失败data:"+errors);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- private MerchNoti assemblyMerchNoti(WxCbPayDoc wxCbPayDoc, MerchPayCfg merchPayCfg) {
|
|
|
- MerchNoti merchNoti = new MerchNoti();
|
|
|
- merchNoti.setNotiSn(TablePrimaryKeyPrefix.merch_pay_noti_type + IdWorkerAide.nextId());
|
|
|
- merchNoti.setAllPaySn(wxCbPayDoc.getTransactionId());
|
|
|
- merchNoti.setMerchSn(wxCbPayDoc.getMerchSn());
|
|
|
- merchNoti.setMerchSn(wxCbPayDoc.getMerchName());
|
|
|
- merchNoti.setPlatSn(wxCbPayDoc.getPlatSn());
|
|
|
- merchNoti.setPlatName(wxCbPayDoc.getPlatName());
|
|
|
- merchNoti.setThirdPartyMerchCode(wxCbPayDoc.getThirdPartyMerchCode());
|
|
|
- merchNoti.setThirdPartyMerchName(wxCbPayDoc.getThirdPartyMerchName());
|
|
|
- merchNoti.setAllMerchId(wxCbPayDoc.getMchId());
|
|
|
- merchNoti.setAllOrderNo(wxCbPayDoc.getOutTradeNo());
|
|
|
- merchNoti.setAllPayNo(wxCbPayDoc.getTransactionId());
|
|
|
- merchNoti.setAllSubOrderNo(wxCbPayDoc.getSubOrderNo());
|
|
|
- merchNoti.setNotiCount(count);
|
|
|
-
|
|
|
- merchNoti.setIsStoped(WxDict.IsStopStatus.i_0.getItem());
|
|
|
- merchNoti.setNotiStatue(WxDict.NoticeStatus.i_0.getItem());
|
|
|
-
|
|
|
- merchNoti.setPayChnlFlag(merchPayCfg.getPayChnlFlag());
|
|
|
- merchNoti.setNotifyUrl(merchPayCfg.getNotifyUrl());
|
|
|
- return merchNoti;
|
|
|
+ /**
|
|
|
+ * 记录异常的支付单证信息
|
|
|
+ * @param wxCbPayDoc
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private WxPayError createWxPayError(WxCbPayDoc wxCbPayDoc) {
|
|
|
+ WxPayError wxPayError = new WxPayError();
|
|
|
+ wxPayError.setErrorSn(TablePrimaryKeyPrefix.wx_pay_error_type + IdWorkerAide.nextId());
|
|
|
+ wxPayError.setWxPaySn(wxCbPayDoc.getTransactionId());
|
|
|
+ wxPayError.setMerchSn(wxCbPayDoc.getMerchSn());
|
|
|
+ wxPayError.setMerchName(wxCbPayDoc.getMerchName());
|
|
|
+ wxPayError.setAppid(wxCbPayDoc.getAppid());
|
|
|
+ wxPayError.setMchId(wxCbPayDoc.getMchId());
|
|
|
+ wxPayError.setOutTradeNo(wxCbPayDoc.getOutTradeNo());
|
|
|
+ wxPayError.setTransactionId(wxCbPayDoc.getTransactionId());
|
|
|
+ wxPayError.setSubOrderNo(wxCbPayDoc.getSubOrderNo());
|
|
|
+ wxPayError.setCustoms(wxCbPayDoc.getCustoms());
|
|
|
+ wxPayError.setErrCode(wxCbPayDoc.getErrCode());
|
|
|
+ wxPayError.setErrMsg(wxCbPayDoc.getReturnMsg());
|
|
|
+ return wxPayError;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 组装报关所需要的报关数据
|
|
|
* @param wxCbPayDoc 微信支付数据
|
|
@@ -310,8 +390,8 @@ public class WxCusDeclare extends AbstractCusDeclare implements CusDeclare{
|
|
|
WxCbPayDoc wxCbPayDoc = new WxCbPayDoc();
|
|
|
wxCbPayDoc.setAppid("wxd678efh567hg6787");
|
|
|
wxCbPayDoc.setMchId("1501125641");
|
|
|
- wxCbPayDoc.setOutTradeNo("20150806125346");
|
|
|
- wxCbPayDoc.setTransactionId("1000320306201511078440737890");
|
|
|
+ wxCbPayDoc.setOutTradeNo("205598019850");
|
|
|
+ wxCbPayDoc.setTransactionId("401020180502000000011943");
|
|
|
wxCbPayDoc.setCustoms("SHENZHEN");
|
|
|
wxCbPayDoc.setMchCustomsNo("4403160Z3Y");//中网科技(深圳)有限公司
|
|
|
|