代码借鉴海关179对接API.(如有侵权马上删除)
步骤
- 拿到ukey(运营或产品哪里应该会有)
- 获取开发文档179号开发文档
- 开发接收海关请求接口(按文档要求不能有端口号)
- 组装数据进行加签
- 拼接加签数据上报
- 完成
以上文档等不多介绍主要是开发(身为CV工程师直接上代码)
接收海关请求
接收海关请求并存储请求(因为加签需要在本地而接收请求要在开放服务器所以使用mq传输数据)
@PostMapping(value = "/platDataOpen")
@ResponseBody
public JSONObject platDataOpen(@RequestParam String openReq){
//解析获取数据
openReq = StringUtils.replace(openReq, """, "\"");
JSONObject jsonObject = JSONObject.parseObject(openReq);
String orderNo = jsonObject.getString("orderNo");
String sessionID = jsonObject.getString("sessionID");
Long serviceTime = jsonObject.getLong("serviceTime");
System.out.println(orderNo+sessionID+serviceTime);
//查询是否有订单
String source = customsService.insertCustoms(orderNo,sessionID,serviceTime);
JSONObject result = new JSONObject();
if (source.equals("10000")){
result.put("code", "10000");
result.put("message", "");
}else{
result.put("code", "205");
result.put("message", "没有此订单");
}
result.put("serviceTime", System.currentTimeMillis());
return result;
}
@Resource
RabbitTemplate rabbitTemplate;
/**
* 添加请求数据
* @param orderNo
* @param sessionID
* @param serviceTime
* @return
*/
@Override
public String insertCustoms(String orderNo, String sessionID, Long serviceTime) {
logger.info("海关抽查订单"+orderNo);
OmsOrderExample omsOrderExample = new OmsOrderExample();
omsOrderExample.createCriteria().andOrderSnEqualTo(orderNo);
List<OmsOrder> omsOrders = omsOrderMapper.selectByExample(omsOrderExample);
//判断是否有指定订单
if(omsOrders.size()>0){
//查询是否存在订单号
PaycheckExample example = new PaycheckExample();
example.createCriteria().andOrderNoEqualTo(orderNo);
List<Paycheck> paychecks = paycheckMapper.selectByExample(example);
if(paychecks.size()>0){
paychecks.get(0).setSessionId(sessionID);
int num = paycheckMapper.updateByPrimaryKey(paychecks.get(0));
if(num>0){
System.out.println("修改成功");
}
}else{
Paycheck paycheck = new Paycheck();
paycheck.setOrderNo(orderNo);
paycheck.setSessionId(sessionID);
paycheck.setAddTime(new Date());
paycheck.setStatus((byte) 0);
paycheck.setBackTime(new Date());
int num = paycheckMapper.insert(paycheck);
if (num>0){
System.out.println("添加成功");
}
}
logger.info("发送消息到CUSTOMS_EXPORT_QUEUE");
rabbitTemplate.convertAndSend(DirectRabbitConfig.CUSTOMS_EXPORT_EXCHANGE,DirectRabbitConfig.CUSTOMS_EXPORT_ROUTING,orderId);
//webscoketTest(orderNo);
return "10000";
}
return "205";
}
创建实体类存放数据
import lombok.Data;
import java.util.List;
/**
* @author qjy
* @Explanation
* @create 2021-11-07 18:30
*/
@Data
@JSONType(orders={
"sessionID","payExchangeInfoHead","payExchangeInfoLists","serviceTime","certNo","signValue"})
public class HaiguanVO {
//@JSONType很重要作用就是JSON化的时候数据的排序
//@JSONType(orders={"sessionID","payExchangeInfoHead","payExchangeInfoLists","serviceTime","certNo","signValue"})
/** 海关发起请求时,平台接收的会话ID */
public String sessionID;
public PayExchangeInfoHead payExchangeInfoHead;
public List<PayExchangeInfoLists> payExchangeInfoLists;