2025年Cdiscount平台对接总结(辛酸史)

Cdiscount平台对接总结(辛酸史)这段时间做了 Cdiscount 平台的对接 当前只是做到了抓取账号订单 在此做一个总结 备忘 同时也算是一把辛酸史 供后来人嘲笑 1 API 说明地址 https dev cdiscount com marketplace 2 API 对接步骤 后台添加 API 账号 密码 gt 获取 Token

大家好,我是讯享网,很高兴认识大家。

       这段时间做了Cdiscount平台的对接,当前只是做到了抓取账号订单。在此做一个总结,备忘。同时也算是一把辛酸史,供后来人嘲笑。

       1.API说明地址:https://dev.cdiscount.com/marketplace

        关于对接时的详细步骤和涉及到的接口等详细信息,API说明中已经包含,不做累述。这里主要说一下这次对接时我踩过的一些坑。

       1.Cdiscount账号申请后后台会同时自动创建一个对应的api账号。比如后台登陆账号是:liu1314,那对应会有一个liu1314-api的api账号,当我们要对接API时,只需要先在后台设置该api账号的密码,然后就可以通过api账号和密码去获取token。获取到token后才能使用token调用接口方法。

         这里要吐槽的是,密码一定要绝对严格按照平台的密码规则要求去设置。注意,我说的是绝对严格按照!一开始我一直获取不到token,改了好几次密码都不行,来来回回开了不少的case。 最终获取成功的时候,只是把密码里的特殊字符改成了规则里提到的@符号...... (不知道是必须这么要求的还是那边在后台做了什么处理,总之来来回回半个月总算才获取到了token.) 

       token的有效期是48小时。

       2.本以为获取到token以后,接下来就一路通畅了,事实证明我还是太年轻了。         

         再次提醒,调用接口方法时,入参请严格参考API说明中的实例。如果想多尝试,也请先严格使用API说明中的参数,然后再做减法。

         抓取订单调的GetOrderList方法。通常抓取订单时,会分别用创建时间区间和修改时间区间各抓取一次。

         我开始入参只使用了时间参数,但是每次返回的都是所有的订单,而不是传入的时间区间内的数据。尝试了多次依旧不行!挠头,继续开case.....  等来平台的回复是,他们那边调用没有问题,然后附上request和response的文件了事.....

         摸不着头脑。某一瞬间,回想到获取token时的遭遇,于是传入参数完全按照case里的request,结果果然获取到了期望的时间段内的订单数据。-_-    所以原因是什么呢?API不会告诉你,case回复也不会告诉你!经过不断的尝试,最终我得出的结论是,传入参数必须包含具体的订单状态,时间参数才会起作用!!我???


讯享网

         然而,坑到这里还没完。当我用创建时间区间抓取订单的时候,发现漏单了。作为抓单的程序,漏单这种事情是绝不能存在的!可核实后发现,漏掉的单创建时间都是在该时间区间里面,那为什么会抓不到呢?这完全不科学啊!凡事总有原因,尤其“搬砖”这件事情。于是继续各种姿势不停尝试......

         最后终于终于找到了正确的路,原来传创建时间区间的时候,必须得同时传入修改时间区间的参数!!我?????

         同理可得,按订单修改时间区间抓取订单的时候,创建时间区间也必须要赋值,只是,传个无关紧要的创建时间区间即可。

         目前为止,自己也已经对接过好几个国外的电商平台,但Cdiscount这次依旧实实在在的给我上了一课!

         祝各位后来者同行好运........

 

    附获取token的代码(C#):    
        private string UpdateToken()
        {

            string url = ConfigurationManager.AppSettings["GetTokenUrl"];
            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
            request.ContentType = "application/json";
            request.Method = "GET";
            string base64Credentials = GetEncodedCredentials();
            request.Headers.Add("Authorization", "Basic " + base64Credentials);
            HttpWebResponse response = request.GetResponse() as HttpWebResponse;
            string result = string.Empty;
            using (StreamReader reader = new StreamReader(response.GetResponseStream()))
            {
                result = reader.ReadToEnd();
            }

            if (!string.IsNullOrEmpty(result))
            {

                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(result);
                result = xmlDoc.InnerText;
            }
            else
            {
                Console.WriteLine("Token获取异常。未获取到返回值。");
                throw new Exception("Token获取异常。未获取到返回值。");
            }

       }
        private string GetEncodedCredentials()
        {
            string m_Username = ConfigurationManager.AppSettings["cUserName"];
            string m_Password = ConfigurationManager.AppSettings["cPassword"];
            string mergedCredentials = string.Format("{0}:{1}", m_Username, m_Password);
            byte[] byteCredentials = UTF8Encoding.UTF8.GetBytes(mergedCredentials);
            return Convert.ToBase64String(byteCredentials);
        }

小讯
上一篇 2025-03-16 22:05
下一篇 2025-02-26 13:26

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/46399.html