海关跨境电商进口统一版信息化系统平台数据实时获取接口(试行) java版
海关总署公告:
http://www.customs.gov.cn/customs/302249/302266/302267/2134975/index.html 165号
http://www.customs.gov.cn/customs/302249/302266/302267/2155884/index.html 179号
这个接口对接已经懒得吐槽了,搞不懂一个技术文档怎么就写的这么官方!!!连个具体的sdk都没有!!!好了 我承认我有吐槽了。
现有的对接方法基本可看下网上的信息,可以了解80%
https://blog.youkuaiyun.com/u010955036/article/details/88712577
https://www.cnblogs.com/whtydn/p/10220209.html
尤其是第二个可以仔细看下 干货很多,流程也很细,唯一的缺点就是是用C#实现的报文,java的报文虽然有提及,但没有具体的实现方式,所以本文打算作一个补充说明。
- 加签验签会包含两个工具,一个html+js加签工具 主要是加密报文和获取序列号,由于给到海关需要数字证书,所以这个工具没啥用,可以略过。第二个,debug工具,非常有用,怎么用看上面第二链接文章,注意的一点,一定好在插IC卡的电脑启动工具,其次获取数字证书的时候依次打卡卡-》验证口令-》读取证书-》证书序列号就行了,***注意不需要浏览添加报文,和签名***我第一次在这个地方费了好久搞报文!!!
- 如果是C#写的可以按照第二篇文章第5步拼接报文,如果是java的就需要按照其他语言给的格式用webSocket发送报文,这也是我后面要实现的。
- 如果是java语言写的需要用到张弓写的webSocket实现类,具体可以下载:
Java 张工版下载地址: https://pan.baidu.com/s/1beifsbtA7fXmi4vJ3c2Kjw 提取码: jdev
package omni.purcotton.omni.customs.api;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.purcotton.omni.common.exception.CommonException;
import lombok.extern.java.Log;
import lombok.extern.slf4j.Slf4j;
import omni.purcotton.omni.customs.config.CustomsConfig;
import omni.purcotton.omni.customs.feign.OrderService;
import omni.purcotton.omni.customs.feign.PayService;
import omni.purcotton.omni.customs.pojo.data.OrderItemVo;
import omni.purcotton.omni.customs.pojo.data.OrderMainVo;
import omni.purcotton.omni.customs.pojo.data.PayInfoVo;
import omni.purcotton.omni.customs.pojo.data.SignReqDTO;
import omni.purcotton.omni.customs.pojo.request.GoodsInfo;
import omni.purcotton.omni.customs.pojo.request.PayExInfoStr;
import omni.purcotton.omni.customs.pojo.request.PayExchangeInfoHead;
import omni.purcotton.omni.customs.pojo.request.PayExchangeInfoList;
import omni.purcotton.omni.customs.pojo.response.RealTimeDataUploadResponse;
import omni.purcotto