海关 实时数据 企业联调接口 开发步骤与概要 | 火星博客
当前位置: 首页 > 淘宝 > 正文

海关 实时数据 企业联调接口 开发步骤与概要




  为做好海关总署2018年165号公告执行工作,现就海关实时获取跨境电子商务平台企业支付相关原始数据企业接入有关事宜:

  一、支付相关原始数据的接口文档及接入方式参见《海关跨境电商进口统一版信息化系统平台数据实时获取接口(试行)》(详见附件)。有关接口如有变更将通过“互联网+海关”一体化网上办事服务平台“文档资料”栏目及时发布。

 下面我们看看具体对接流程

第一步:

看二个公告

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号

第二步:

下载179号公告文档, 文档包括下面

第三步:

打开“海关跨境电商进口版统一信息化系统平台数据实时获取接口(试行)”, 请看1.6.1.1 这里得知, 需要写一个接口, 让海关请求带三个参数OrderNo, sessionID,serviceTime,  把这三个参数存放起来,  可以是消息队列, 可以是数据库, 总之你能再次找得到就行。

第四步: 

既然在第三步接收到海关请求的内容也存放起来了, 总得处理并把他们想要的数据返回给海关, 这里就介绍怎得到需要返回的数据, 最关键的一步, 请看1.6.2.2, 订单,商品,支付这些数据, 可能通过OrderNo在你们电商平台得到, 最麻烦的就是CertNo, signValue这二个参数,

官方文档把最难得到的参数用123来代替, 我感觉到无奈。

4.1 得去公司找到一个海关登录的IC卡,有一个读卡器, 一般有二个卡(法人卡,操作员卡),记得把操作员卡接到读卡器里, 不能是法人卡,这个十分注意。

4.2 下载海关控件安装包, 打开这个网址 http://ceb1.chinaport.gov.cn/  , 点 跨境电商进口版, 认真查找“首次登录 需要下载控件”, 点击下载 EportClientSetup_V1.5.5.exe, 请看清楚下载的文件名是不是这个, 这也是十分重要, 如果你千百次对比没错后, 请安装它, 安装完成电脑屏幕右下角会有一个控件启动提醒, 桌面也有一个快捷方式“中国电子口岸客户端控件 重新启动”。 

4.3 把4.1步里面找到的读卡器接上电脑, 记得这个电脑要安装了海关控件的, 千万不要搞成, A电脑装了控件, 把这读卡器接B电脑上。 如果读卡器出现绿灯, 说明读卡器与卡都没问题, 如果是灯不亮或红灯, 不好意思, 你的卡与读卡器可能有问题了,得找另一个卡与读卡器再试。

4.4 当环境设置好了, 就需要取CertNo, 证书这些, 下载这个读取编号与证书的工具: https://pan.baidu.com/s/1xo0AcZZ4QZDeAu2DHOEQjg   提取码: cfpp , 解压打开SignTool.exe

点击步骤:打开卡, 如果出现打开卡成功, 恭喜你, 又前进一步,在验证口令后面的文本框输入设置的密码, 这个密码得问一下你们公司掌管卡的人,如果录入后点击 验证口令 提示 验证口令成功, 又恭喜你前进一步, 点击“获取证书”, 成功的会得到后面文本框里的一串文字, 注意这个文字好长好长, 得小心从文本框里最上方拉到最下方, 很多人没拉到底, 造成证书错误, 当你选择全部后复制出来, 用记事本原封不动的保存, 改后缀名为.cer, 这样就成他们口中所说的证书了, 再点击证书序列号,会得到一个证书编号。

发给海关的丁鑫, 并登记企业名称, 企业联系人等信息, 总之找他就行了, 怎找呢, 看文章最后一个图。

到这里, 只差一个signValue这个千奇百怪的东西了。

第五步:

誓取signValue这个海关奇怪设计失败货, 一千种方法都可以简单得到, 他们设计出一个最麻烦最不稳定的取得方法, 真的拿他们没办法, 满脸的无奈。

5.1 首先你要看那个”海关跨境电商进口版统一信息化系统平台数据实时获取接口(试行)”文档, 通过OrderNo把你订单信息,商品信息,支付信息拼成这样的Json, 你也可以用这个来测试, 测试通了, 再取订单来拼接, 如果后面发送得到数据格式有误, 你就得一个字符一个字符的去对, 是否一模一样。

复制代码
"sessionID":"fe2374-8fnejf97-55616242"||"payExchangeInfoHead":"{"guid":"9D55BA71-55DE-41F4-8B50-C36C83B3B419","initalRequest":"https://openapi.alipay.com/gateway.do?timestamp=2013-01-0108:08:08&method=alipay.trade.pay&app_id=13580&sign_type=RSA2&sign=ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE&version=1.0&charset=GBK","initalResponse":"ok","ebpCode":"3301963K69","payCode":"312226T001","payTransactionId":"2018121222001354081010726129","totalAmount":100,"currency":"142","verDept":"3","payType":"1","tradingTime":"20181212041803","note":"批量订单,测试订单优化,生成多个so订单"}"||"payExchangeInfoLists":"[{"orderNo":"SO1710301150602574003","goodsInfo":[{"gname":"lhy-gnsku3","itemLink":"http://m.yunjiweidian.com/yunjibuyer/static/vue-buyer/idc/index.html#/detail?itemId=999761&shopId=453"},{"gname":"lhy-gnsku2","itemLink":"http://m.yunjiweidian.com/yunjibuyer/static/vue-buyer/idc/index.html#/detail?itemId=999760&shopId=453"}],"recpAccount":"OSA571908863132601","recpCode":"","recpName":"YUNJIHONGKONGLIMITED"}]"||"serviceTime":"1544519952469"
复制代码

得到了这段拼接字符, 就是为了得到signValue, 所以一个字符也不能出错, 不然取不到正确的加签返回值。

5.2 这里最主要的就是通过websocket取得加签结果

我这里写的是C#版的, Java版的我是向一位善心的张工程师那得到的,在这里十分感谢张工, 并感谢他的大无畏精神,

Java 张工版下载地址: https://pan.baidu.com/s/1beifsbtA7fXmi4vJ3c2Kjw 提取码: jdev  

记得一个前提, websocket的地址就是你装有控件,插有卡的那个电脑的IP地址, 例如:ws://127.0.0.1:61232, 这是我在开发时, 在我自己的电脑上装有控件插有卡, 得来的websocket地址。

C# 版, 现在大家多用win7, win7不支持ClientWebSocket, 所以我使用了第三方包,WebSocket4Net, 在VS2015 NuGet上面直接安装, 最终写出最简单的明了取得加签返回值

注意: 看代码里面查找到  \”passwd\”:\”66666666\”              66666666要改为你公司IC卡的密码, 这个是我随机设置的

 View Code

得到的返回值是如图,data就是加签的signValue, 起快把奇怪货关起来, 我在海关微信群里面, 无数工程师为了得到这个, 花上好几天还没有头绪。 

用其它语言来写也行的, 只是要把websocket send的内容改为json,  但发送的内容得一模一样, 这段是张工发给我的发送给websocket加签的内容。 看清楚必须格式一模一样, 提示\\\sessionID\\\, 看清楚这个。

复制代码
"{\"_method\":\"cus-sec_SpcSignDataAsPEM\",\"_id\":1,\"args\":{\"inData\":\"\\\"sessionID\\\":\\\"1dd44ea3-202a-43e7-87a5-6d82ca3fce4f\\\"||\\\"payExchangeInfoHead\\\":\\\"{\\\"guid\\\":\\\"9D55BA71-55DE-41F4-8B50-C36C83B3B419\\\",\\\"initalRequest\\\":\\\"https://openapi.alipay.com/gateway.do?timestamp=2013-01-0108:08:08&method=alipay.trade.pay&app_id=13580&sign_type=RSA2&sign=ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE&version=1.0&charset=GBK\\\",\\\"initalResponse\\\":\\\"ok\\\",\\\"ebpCode\\\":\\\"xxxxxxxx\\\",\\\"payCode\\\":\\\"312226T001\\\",\\\"payTransactionId\\\":\\\"2018121222001354081010726129\\\",\\\"totalAmount\\\":100,\\\"currency\\\":\\\"142\\\",\\\"verDept\\\":\\\"3\\\",\\\"payType\\\":\\\"1\\\",\\\"tradingTime\\\":\\\"20181212041803\\\",\\\"note\\\":\\\"批量订单,测试订单优化,生成多个so订单\\\"}\\\"||\\\"payExchangeInfoLists\\\":\\\"[{\\\"orderNo\\\":\\\"SO1710301150602574003\\\",\\\"goodsInfo\\\":[{\\\"gname\\\":\\\"lhy-gnsku3\\\",\\\"itemLink\\\":\\\"http://m.yunjiweidian.com/yunjibuyer/static/vue-buyer/idc/index.html#/detail?itemId=999761&shopId=453\\\"},{\\\"gname\\\":\\\"lhy-gnsku2\\\",\\\"itemLink\\\":\\\"http://m.yunjiweidian.com/yunjibuyer/static/vue-buyer/idc/index.html#/detail?itemId=999760&shopId=453\\\"}],\\\"recpAccount\\\":\\\"OSA571908863132601\\\",\\\"recpCode\\\":\\\"\\\",\\\"recpName\\\":\\\"YUNJIHONGKONGLIMITED\\\"}]\\\"||\\\"serviceTime\\\":\\\"1544519952469\\\"\",\"passwd\":\"11111111\"}}"
复制代码

这里取得了加签的内容, 就可以拼凑成返回海关的报文。 记得这里只是拼接报文成功, 你还得联系海关二位员工, 张丁二将, 把上面4.4得到的证书与编号发给他们, 然后请他们帮助你设置海关测试环境。 



数据抓取联调过程和常见问题

正式环境服务地址已经上线了,注册地址ceb1.chinaport.gov.cn 企业自行注册
审核的时候系统随机抽查企业三天内的通关清单订单号,发送给企业,企业接收到返回10000为审核通过.
跨境企业类型为电商平台才能注册,企业可以去企管科查询自己的企业类型
审核不通过的原因:企业收到调用返回的不是10000,企业三天内没有订单数据,端口需要80,是否配置白名单,需要卡介质登陆
测试环境注册是丁鑫注册,企业自己注册的是正式环境
证书编号需要小写!!
从请求中获取openReq参数的值,该参数值是一个符合json标准的字符串,由于海关提交的请求是post方式(x-www-form-urlencoded),所以在url中是没有参数的,必须要从表单中获取该参数。



联调流程
1、服务注册
由于企业无法看到联调的注册页面,需要将证书(加签设备的签名证书),证书编号(证书的序列号),电商平台代码(海关十位编码)提交给对接人员完成注册
联调需要企业提供的:
1、 证书
2、 证书编号
3、 电商平台代码
4、 电商企业名称
5、 联系人
6、 联系人电话
2、企业在联调环境中测试上传数据
企业在联调环境中根据所提供样例,由对接人员协助完成上传,返回“上传成功”,为正确上传状态,通过联调企业返回实时数据接口地址上传请求(1. 将数据内容所有数据一级节点使用||分割符拼接为连续字符串,使用IC卡、Ukey、服务类密码设备进行加签,将certNo(证书编号)、signValue(加签结果)补充入请求中。)
3、企业模拟请求测试接口连通性
通过样模拟样例中海关实时数据获取请求,按返回格式正确返回正常调用值。在相应时间内上传支付相关原始数据。
4、线上注册,将证书和接口地址在注册页面上传注册,注册地址ceb1.chinaport.gov.cn 企业自行注册
5、注册完成需要审核,审核的时候系统随机抽查企业三天内的通关清单订单号,发送给企业,企业接收到返回10000为审核通过.
审核不通过的原因:企业收到调用返回的不是10000,企业三天内没有订单数据,端口需要80,是否配置白名单,需要卡介质登陆
6、审核通过后企业启用审核通过的地址,确保上传数据在收到请求后两分钟内完成。
7、保持接口连通。对接完成
1、企业先进行联调测试,165和179公告有测试接口,和报文样例
2、企业将证书编号和证书和电商平台代码(海关备案十位)发给群里-丁鑫
3、服务注册正式环境已经上线,注意联调环境需要提交给我们注册(联调环境企业看不到,企业可以自己注册的是正式环境)
4、企业上传过程中提示:”企业实时数据获取验签证书未在服务系统注册的“,证书和证书编号未提供。提供过的还提示未注册,检查上传报文内ebpcode和certno有没有修改为提供的电商平台代码和证书编号。证书编号小写.要避免sessionid重复。
5、上传失败的检查:1,上传数据方式有问题,建议可以先把payExchangeInfoHead里的initalRequest和initalResponse先改成简单的字符串试试2、
验签前json解析失败 注意:json字符串格式 (看公告样例) 3、如果带特殊字符,payInfostr的value 需要做下urlencode (使用多次就会出现汉字乱码%什么的)
6、验签失败:
1、原文不匹配(注意格式 字段顺序 二级字段顺序 必须和固定格式一致 表头表体和时间的value必须添加双引号 totalAmount不带引号)
2、证书问题(证书如果带—–BEGIN CERTIFICATE与—–END CERTIFICATE独占一行 别跟在后面,影响验签结果。) 3、加签方式不对(js加签如果证书原文没问题一定可以过,不可以用法人卡要用操作员卡)
一般原文不匹配几率大 仔 细检查
7、数据中心请求你们的Content-Type: application/x-www-form-urlencoded,端口默认 80 从请求中获取openReq参数的值,该参数值是一个符合json标准的字符串,由于海关提交的请求是post方式(x-www-form-urlencoded),所以在url中是没有参数的,必须要从表单中获取该参数。。
8、企业服务地址端口测试环境需要为80。
9、不知道如何获取证书和证书编号的咨询群内联调成功企业
10、上传失败入库失败:检查sessionid是否重复,验证字段必填项与长度,详细看公告文档。
11、审核不通过的几种情况:
1、接口不通 企业收不到调取信息。
2、企业收到调用返回的不是10000
3、企业三天内没有订单数据
4、端口不是80,是否配置白名单
报文固定样例
验签拼接的原文:
“sessionID”:”fe2374-8fnejf97-55616242″||”payExchangeInfoHead”:”{“guid”:”9D55BA71-55DE-41F4-8B50-C36C83B3B419″,”initalRequest”:”https://openapi.alipay.com/gateway.do?timestamp=2013-01-0108:08:08&method=alipay.trade.pay&app_id=13580&sign_type=RSA2&sign=ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE&version=1.0&charset=GBK”,”initalResponse”:”ok”,”ebpCode”:”3301963K69″,”payCode”:”312226T001″,”payTransactionId”:”2018121222001354081010726129″,”totalAmount”:100,”currency”:”142″,”verDept”:”3″,”payType”:”1″,”tradingTime”:”20181212041803″,”note”:”批量订单,测试订单优化,生成多个so订单”}”||”payExchangeInfoLists”:”[{“orderNo”:”SO1710301150602574003″,”goodsInfo”:[{“gname”:”lhy-gnsku3″,”itemLink”:”http://m.yunjiweidian.com/yunjibuyer/static/vue-buyer/idc/index.html#/detail?itemId=999761&shopId=453″},{“gname”:”lhy-gnsku2″,”itemLink”:”http://m.yunjiweidian.com/yunjibuyer/static/vue-buyer/idc/index.html#/detail?itemId=999760&shopId=453″}],”recpAccount”:”OSA571908863132601″,”recpCode”:””,”recpName”:”YUNJIHONGKONGLIMITED”}]”||”serviceTime”:”1544519952469″
进行加签之前的报文
“sessionID”:”fe2374-8fnejf97-55616242″||”payExchangeInfoHead”:”{“guid”:”9D55BA71-55DE-41F4-8B50-C36C83B3B419″,”initalRequest”:”https://openapi.alipay.com/gateway.do?timestamp=2013-01-0108:08:08&method=alipay.trade.pay&app_id=13580&sign_type=RSA2&sign=ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE&version=1.0&charset=GBK”,”initalResponse”:”ok”,”ebpCode”:”3301963K69″,”payCode”:”312226T001″,”payTransactionId”:”2018121222001354081010726129″,”totalAmount”:100,”currency”:”142″,”verDept”:”3″,”payType”:”1″,”tradingTime”:”20181212041803″,”note”:”批量订单,测试订单优化,生成多个so订单”}”||”payExchangeInfoLists”:”[{“orderNo”:”SO1710301150602574003″,”goodsInfo”:[{“gname”:”lhy-gnsku3″,”itemLink”:”http://m.yunjiweidian.com/yunjibuyer/static/vue-buyer/idc/index.html#/detail?itemId=999761&shopId=453″},{“gname”:”lhy-gnsku2″,”itemLink”:”http://m.yunjiweidian.com/yunjibuyer/static/vue-buyer/idc/index.html#/detail?itemId=999760&shopId=453″}],”recpAccount”:”OSA571908863132601″,”recpCode”:””,”recpName”:”YUNJIHONGKONGLIMITED”}]”||”serviceTime”:”1544519952469″
加签之后的
J1shnr986MzgvwOBIMD0QMpkTTTARsGgwM9RkRAAmZOWA1ZAi8KNR+h5WtqXy6qdiW9KTfLyx9kgseWX/udghOOMVJrYlGelhwg26L7bq5gj72AU40zXq69bNoOgH/ccSQzHFRvbGug2gJ4Pv8dSNVVY8rFzX+8AMNnHTdIWo74=
上传给海关的报文
{“sessionID”:”fe2374-8fnejf97-55616242″,”payExchangeInfoHead”:{“guid”:”9D55BA71-55DE-41F4-8B50-C36C83B3B419″,”initalRequest”:”https://openapi.alipay.com/gateway.do?timestamp=2013-01-0108:08:08&method=alipay.trade.pay&app_id=13580&sign_type=RSA2&sign=ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE&version=1.0&charset=GBK”,”initalResponse”:”ok”,”ebpCode”:”3301963K69″,”payCode”:”312226T001″,”payTransactionId”:”2018121222001354081010726129″,”totalAmount”:100,”currency”:”142″,”verDept”:”3″,”payType”:”1″,”tradingTime”:”20181212041803″,”note”:”批量订单,测试订单优化,生成多个so订单”},”payExchangeInfoLists”:[{“orderNo”:”SO1710301150602574003″,”goodsInfo”:[{“gname”:”lhy-gnsku3″,”itemLink”:”http://m.yunjiweidian.com/yunjibuyer/static/vue-buyer/idc/index.html#/detail?itemId=999761&shopId=453″},{“gname”:”lhy-gnsku2″,”itemLink”:”http://m.yunjiweidian.com/yunjibuyer/static/vue-buyer/idc/index.html#/detail?itemId=999760&shopId=453″}],”recpAccount”:”OSA571908863132601″,”recpCode”:””,”recpName”:”YUNJIHONGKONGLIMITED”}],”serviceTime”:”1544519952469″,”certNo”:”01010000000019f1″,”signValue”:”J1shnr986MzgvwOBIMD0QMpkTTTARsGgwM9RkRAAmZOWA1ZAi8KNR+h5WtqXy6qdiW9KTfLyx9kgseWX/udghOOMVJrYlGelhwg26L7bq5gj72AU40zXq69bNoOgH/ccSQzHFRvbGug2gJ4Pv8dSNVVY8rFzX+8AMNnHTdIWo74=”}


文中附件地址下载:链接: https://pan.baidu.com/s/193t0oIWJh2PuUj37AYo4DA 提取码: ju7m

本文固定链接: http://www.eoowo.com/?p=711 | 火星博客

该日志由 Rainer 于2019年03月22日发表在 淘宝 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 海关 实时数据 企业联调接口 开发步骤与概要 | 火星博客

海关 实时数据 企业联调接口 开发步骤与概要:等您坐沙发呢!

发表评论

快捷键:Ctrl+Enter