海关 及时数据 企业联调接口 开辟步调与提要_玖


玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。

写这个文章前, 先叫嚣几声, 一吐心中不快, 诺大的中国海关, 连个指点都没有, 写的文档与demo, 100小我有99.9小我不懂, 另有0.1小我一次能懂的都算是神童, 

 

起首, 中国海关数据中心, 经由这个接口的完成, 我觉得到当局的技术落后,不要说芯片, 就连最简朴的1 1=2的顺序在当局部门都写庞杂又难题, 主要还没写一个周全完美运用的文档, 实在是可悲。

 

若是能骂人的, 我接着写, 不外照样首倡文化, 就不吐了。

 

正题啦:

第一步:

看二个通知布告

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上面直接装置, 终究写出最简朴的清楚明了获得加签返回值

 

using System;
using System.Text;
using WebSocket4Net;
using SuperSocket.ClientEngine;

namespace ConsoleApp
{
    public class Program
    {
        static WebSocket websocket = new WebSocket("ws://127.0.0.1:61232");

        public static void Main(string[] args)
        {
            try
            {                
                websocket.Opened  = new EventHandler(websocket_Opened);
                websocket.Error  = new EventHandler<ErrorEventArgs>(websocket_Error);
                websocket.Closed  = new EventHandler(websocket_Closed);
                websocket.MessageReceived  = new EventHandler<MessageReceivedEventArgs>(websocket_MessageReceived);
                websocket.Open();                

                Console.WriteLine("");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            Console.ReadLine();
        }

        private static void websocket_Opened(object sender, EventArgs e)
        {
            Console.WriteLine("websocket opened!"   DateTime.Now.ToString());
        }

        private static void websocket_Error(object sender, ErrorEventArgs e)
        {
            Console.WriteLine("websocket error!");
            Console.WriteLine("Error:"   e.Exception.Message.ToString());
        }

        private static void websocket_Closed(object sender, EventArgs e)
        {
            Console.WriteLine("websocket closed!"   DateTime.Now.ToString());
        }

        private static void websocket_MessageReceived(object sender, MessageReceivedEventArgs e)
        {
            Console.WriteLine("websocket message received!");
            string strMessaged = e.Message.ToString().Trim();
            if (strMessaged.Contains("握手胜利"))
            {
                StringBuilder PostJson = new StringBuilder();
                PostJson.Append(""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"");

                string strJson = PostJson.ToString();

                string strSendData0 = "{"_method":"cus-sec_SpcSignDataAsPEM","_id":1,"args":{"inData":""   strJson.Replace(""","\"")   "","passwd":"66666666"}}";
                //string strSendData1 = "{"_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":"66666666"}}";
                //string strSendData2 = "";
                
                //Console.WriteLine(strSendData0);
                //Console.WriteLine("------------------------------------------");
                //Console.WriteLine(strSendData1);
                websocket.Send(strSendData0);
            }
            else
            {
                Console.WriteLine(strMessaged);
            }
            websocket.Close();
        }
    }
}
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获得的证书与编号发给他们, 然后请他们资助你设置海关测试情况。 

 

 

末了说一下, 自己十几年开辟事情也经由N次万万级的体系开辟与构架, 每秒都是几百几千要求,  面临这小小的不成文不成档的新鲜接口, 也曾生机频频, 写这个文章重如果给后人能简朴些, 削减折腾, 愿望这文章对人人有效! 

同时也发起, 列位开辟工程师, 若是本身有接口对外的, 愿望能仔细写写细致的文档, 由于本身做的器械能够觉得很简朴, 外人看来照样有庞杂度的, 像这个接口, 明显触及硬件软件, 他文档里一句不提, 最主要的signvalue得来, 竟然没细致的要领, 直接用123来替代,糟蹋开辟者的时候, 万望列位开辟工程师引认为介, 从人人做起, 不要让简朴的事庞杂起来。 

 

-玖富娱乐是一家为代理招商,直属主管信息发布为主的资讯网站,同时也兼顾玖富娱乐代理注册登录地址。