公司是跨境电商,在阿里马马的速卖通平台上开有店铺,并且基于速卖通开放平台,自主研发了ERP系统,居今已有3年多的时间了,一直很稳定。

今年初,速卖通AE开放平台改版,并入淘宝开放平台中,我们的麻烦就开始了。。。从最初始的申请资格开始,一步一步的研究、自测。到最近才小有成就。下面就把一路走来填的坑分享下,希望给新人指点吧

使用速卖通AE新版开放平台,我们先看看需要哪些条件

1,要有一个企业级别的支付宝帐号,注:必须是企业级别。

2,要有软著,就是软件著作权证书

这2个都有了,才能去申请。

申请类型有2种

1,商用授权,适合专门的软件公司

2,自研授权,适合电商公司有独立研发团队

我们公司申请的是自研类型

1,创建应用

这个环节用于获取AppKey和Secret,后面获取令牌用的。这里要说下和老版的区别

1、新版本没有Refresh和Access令牌的区别,只有Access令牌。正式发布后,这个令牌的期限是一年(相比老版本24小时的时限,时间延长了好久,给个赞)

2、我们使用SDK的时候,有的方法中,参数名称是SessionKey,其实就是这个令牌(官方文档从来不说,就是不告诉你)

2,授权报备

这里是要绑定一个速卖通的店铺,你会得到一个cn前缀的字符串,记住这个字符串,后面会很有用

3,下载SDK。这是淘宝官方提供的,各版本都有。我们使用的是Net版本。

注:这里最后下载源码加载至项目中,方便调试。因为后面有个坑,你不进入源码调试,到死都不知道怎么回事?!(官方就是不说)

注1:SDK我们是可以随时编译下载的

注2:如果我们使用自定义场景,创建成功若干API的话,重新编译下载SDK,会发现输入输出参数,已经帮我们定义好类了。我们还是像官方场景那样,直接使用即可

4,托管服务器

这里可能也不需要,我是直接托管的

5,设置白名单

一般设置3个IP地址就可以了

106.11.,没错,就是*.*,这个IP是奇门要求的

106.14.,这个是聚石塔里的

注:聚石塔里的数据,输入输出都要经过奇门,所有只要你想用AE平台,先申请聚石塔吧

115.233,这个是我们自己的服务器IP。如果你还没有买聚石塔的服务器,平台可以给你3天的塔外测试。就是这个IP地址

6,绑定测试帐号

这个帐号就是之前申请的速卖通店铺帐号,直接用这个帐号测试就可以。只有3天时间,但过期了可以延长的

7,设置回调地址

必须要设置的环节。用于获取AccessToken令牌

好了,通过上面的几步,准备工作算是完成了。下面,我们正式写代码,还是一步一步来

注:以aliexpress.logistics.listlogisticsservice,获取物流服务列表的API为例

1,调用AE平台的API。这是我们的关键业务,建议直接使用官方提供的SDK即可,简单方便。

其中

AliApiUrlPrefix是AE开放平台的调用地址:http://gw.api.taobao.com/router/rest。

AppKey和AppSecret是之前申请应用时得到的

这步一般是都可以调通的。注:此时还没有塔和奇门

2,下面就开始搭塔了,就是聚石塔。

聚石塔可以理解为阿里云,即一个独立的操作系统,你上面写好的程序要部署的吧,你必须要部署在聚石塔里才可以(别问我为什么,官方说的)

2.1,部署好以后,直接调用塔里的程序,还是通的。有人会问,即然通了,还要奇门干啥

现在通了,是我们申请的塔外测试的原因。正式发布的程序,还是要通过奇门才能调用塔里的数据

2.2,塔里部署成功后,达到能访问返回正确数据即可

3,下面就要讲重头戏了:奇门

什么是奇门?奇门就是外部程序和聚石塔必须要经过的一道桥梁。没有奇门,你就没门进去,根本访问不了聚石塔里的应用

3.1,奇门的位置

云工作台->业务系统构建&集成

3.2,场景选择

场景包含2种:自定义场景和官方场景。个人建议先选择官方场景,因为它内置了传入和传出的参数格式。

我们肯定会自定义场景(因为官方场景只提供的30%的API)

3.3,官方场景API列表

场景由API组成,每个方法都需要配置和发布(发布前要自测通过+验签)

3.4,官方场景API配置(划重点了,这里有个大坑)

3.4.1,配置请求映射

这个坑,研究了2小时,得出结论

这个地址是聚石塔里,你程序的部署地址

注1:是到方法名称级别

注2:Net版本,可以部署成WebAPI程序(推理得出:WebService也可以,Handler也可以)

3.4.2,请求参数

记住这个格式,后面肯定会用到

3.4.3,请求Demo

这是标准的参数格式,含输入和输出。也要记住,后面会用到

3.4.4,响应参数(即输出参数)

记住+1

3.4.5,请求和响应demo

这个最开始没有注意,导致后面开发耽误了时间。划重点了

注意验签Demo的返回格式

3.4.6,自测API

到这个环节,就可以开始测试了。

注1:返回格式有2种:XML和Json。一般选择Json

注2:Query id,这个参数是cn的那个字符串,但在这里没有影响,传啥都可以

注2.1:这个参数我认为在发布后相当有关系。一个AppKey可能同时关联多个店铺,这是用来区分店铺信息的。知道是哪个店铺,才能获取对应店铺的令牌(令牌就是AccessToken,就是SDK中的SessionKey)

注3:有的API方法,参数有个param1的参数。这个怎么理解呢?这个可以理解成方法需要的其他参数内容,都放到这里,Json格式传入。特别说明:它是有格式要求的,就是前面的输入参数格式

到这时,你会发现各种调试失败。。。但官方给出的错误码并没有什么卵用。下面重新讲一遍正确的姿势,小板凳搬好

3.5,正确做法

3.5.1,先定义返回Model基类,按照3.4.4,响应参数定义即可(还有验签的格式)。相当于每个方法都会返回这些属性值

这个类,同时还参照了奇门的输出参数定

3.5.2,修改Service层的方法。

主要修改输出参数,改成什么格式呢?就是我之前提到的,验签Demo的那个格式。相当于方法必须返回验签Demo格式才行。否则,打死都通不过

看到木有?无论能否返回正确的数据,它要的验签格式。你必须返回。

而且你发现木有,验签的格式不光属性,属性值也要求完全一致。

3.5.3,Controller层方法(继续划重点,又一个大坑)

注1:这里先解释下什么是验签,作者之前也理解错误,现在更正下:验签就是平台给塔里程序发个错误的请求,平台要接收到它认为正确的数据,验签就通过了,其实就是这么简单)正确的数据就是上图的数据,即是验签Demo的格式(属性值也相同)

注2:再看看Net版本的验签,你会发现它的一个参数是System.Web.HttpRequest。我找了好久也没找到在哪里传进去,百思不得其解。后来才发现它不是在Service层的,是在WebAPI的Controller层

看,这就是验签。是不是有种恍然大悟的感觉。而且这是Controller层完整的方法。包括验签+调用Service层+返回格式

3.5.4,外部程序调用?

验签通过以后,就可以发布了。发布成功,意味着外部程序可以直接使用了。注意:不是直接调用塔里的程序,塔的所有数据,都要通过奇门

这里根据奇门SDK写的方法,外部程序最后调用的是这个方法。不是前面我们写的那些

3.6,自定义场景

昨天也把自定义场景调试通过了。它和官方场景有什么区别呢?如下所示

a,方法名称自行定义

b,输入参数自行定义

c,输出参数自行定义

d,验签格式不可定义(必须按照官方的格式)

其他的没有什么坑,验签通过就可以发布(有个审核的操作,基本都通过的)

3.7,安全扫描

整个应用发布前,会有一个安全扫描的过程,官方说是3小时(实际要超出这个时间,都问题不大)

最后总结下

1,官方的文档要认真看,每句话都有它的含义(为毛他们不明说呢,非要我们自己猜)

2,所有的环节都是互相关联的,一步配置不对,就都有影响

3,申请令牌的程序是可以部署在塔外的

4,官方场景或自定义场景中,每个方法的验签返回格式不是都相同的。要注意,必须和验签格式完成相同才可以

5,多店铺时,关于SessionKey(即AccessToken)如何使用?每个店铺都有id(就是cn123456)的字符串,这是可以通过参数传进去的。这样可以在塔里部署一个txt文件,定义好id和令牌的关系。这样就可以根据Id获取令牌了

附:

作者创建一个QQ群:558905448。用于分享和交流Net开发经验,欢迎加入.进群请标明:程序员

速卖通AE平台+聚石塔+奇门 完整教程V2的更多相关文章

  1. 使用速卖通开放平台云API调用菜鸟组件实现云打印

    公司是跨境电商,使用速卖通平台卖玩具,我们自己研发的ERP是基于速卖通开放平台API,实现订单的发货提交,打印面单等功能 近期公司要求使用菜鸟组件云打印,去平台里看下,有这个API,如下图所示 实现也 ...

  2. 速卖通API开发步骤

    http://gw.api.alibaba.com/dev/doc/intl/sys_auth.htm?ns=aliexpress.open#concept 关键字段说明 1.appKey和appSe ...

  3. 速卖通api--获取商品信息

    <? $productId    = 'xxxx';//你的产品id    $access_token = 'xxxxx';//你的授权码    $appSecret    = 'xxxx';/ ...

  4. 速卖通api--发起授权

    <? $reqURL_onLine = "https://gw.api.alibaba.com/openapi/http/1/system.oauth2/getToken/494739 ...

  5. Java 集成 速卖通开发.

    一.申请成为开发者 申请入口:http://isvhz.aliexpress.com/isv/index.htm 说明文档:http://activities.aliexpress.com/open/ ...

  6. Java 集成速卖通开发.

    一.申请成为开发者 申请入口:http://isvhz.aliexpress.com/isv/index.htm 说明文档:http://activities.aliexpress.com/open/ ...

  7. 外贸开发,用java调用速卖通api第一步,token的获取。

     第一步 定义速卖通api的常量  public String client_id;  public String client_key;  public String site;   第二步 获取登 ...

  8. 速卖通---发布商品aeopAeProductPropertys这个字段值报07004013的错误

    由于文档的说明很少,导致里面改填写那些值都是靠自己推敲出来,当然可以根据他们的错误提示了研究,他们的错误提示也给出了相关的帮助了, 例如通过categoryid的200000001获取到"i ...

  9. Linux加载DTS设备节点的过程(以高通8974平台为例)

    DTS是Device Tree Source的缩写,用来描述设备的硬件细节.在过去的ARM Linux中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码, ...

随机推荐

  1. jquery mobile-按钮控件

    jQuery Mobile 中的按钮会自动获得样式,这增强了他们在移动设备上的交互性和可用性.我们推荐您使用 data-role="button" 的 <a> 元素来创 ...

  2. UE4/Unity3D中同时捕获多高清摄像头的高效插件

    本文主要讲实现过程的一些坑. 先说下要实现的目标,主要功能在UE4/Unity中都要用,能同时捕获多个摄像头,并且捕获的图片要达到1080p25桢上,并且需要经过复杂的图片处理后丢给UE4/Unity ...

  3. MyCat 启蒙:分布式系统的数据库架构演变

    文章首发于[博客园-陈树义],点击跳转到原文<MyCat 启蒙:分布式系统的数据库架构演变> 单数据库架构 一个项目在初期的时候,为了尽可能快地验证市场,其对业务系统的最大要求是快速实现. ...

  4. PID算法

    所谓PID就是比例-积分-微分的英文缩写,但并不是必须同时具备这三种算法,也可以是 PD, PI,甚至只有 P算法控制,下面分别介绍每个参数的含义:首先需要明确一个事实就是,要实现PID算法,必须在硬 ...

  5. java8大基本数据类型

    基本类型 字节数 位数 最大值 最小值 byte 1byte 8bit 2^7 - 1 -2^7 short 2byte 16bit 2^15 - 1 -2^15 int 4byte 32bit 2^ ...

  6. junit源码解析--测试驱动运行阶段

    前面的博客里面我们已经整理了junit的初始化阶段,接下来就是junit的测试驱动运行阶段,也就是运行所有的testXXX方法.OK,现在我们开始吧. 前面初始化junit之后,开始执行doRun方法 ...

  7. 《剑指offer》数组中出现次数超过数组长度一半的数字

    题目: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2.如 ...

  8. java判断网页的编码格式

    在爬取内容时,遇到乱码问题.故需对网页内容编码格式做判断,方式大体分为三种:一.从header标签中获取Content-Type=#Charset:二.从meta标签中获取Content-Type=# ...

  9. zabbix监控的基础概念、工作原理及架构

    一.什么是zabbix及优缺点(对比cacti和nagios) Zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题.是一个基于WE ...

  10. 获取当前进程(程序)主窗体句柄并设置wpf的父窗体为此句柄

    有时候在c++调用wpf控件的时候,wpf控件想自己显示窗体,但需要设置owner属性.迂回解决办法是设置wpf的window窗体的父窗体为进程的句柄. 1.获取当前进程id int id = Pro ...