1.前言

Walmart平台近几年在中国的大卖家招商力度在持续增加,2017年开始Walmart关闭了自助注册的入口,而是采用邀请制招揽中国卖家,所以他们对卖家的合规和卖家的供应链能力都会有一个审查。很多大卖家正在使用Walmart API来运营店铺以及一些跨境电商行业内的第三方服务商(比如 erp 跨境收款 跨境物流等)也需要对接Walmart API来提供自己的服务给跨境卖家。那么API使用的第一步就是授权,本文主要说明解析Walmart API的授权方案及流程。

2.方案

  • 1.Walmart API授权采用基于OAuth token的授权模式,不是OAuth2.0的授权模式。
    (OAuth2.0和OAuth的区别这里就不讲了,大家自己去查)
  • 2.这种授权模式是使用凭证授权的方式,也就是卖家在Walmart开发者后台生成一套凭证,凭证信息包括Client ID 和Client Secret。
  • 3.生成凭证有两种模式: 第一种是卖家授权给自己运营店铺使用,叫做My API Key(下图中的 My API Key),这个是用户自己才能使用的,walmart严格要求卖家不能共享这个给其他第三方。(我看到有些erp服务商直接要求客户给这个凭证给他们,这里面有一定的风险)。第二种是:当卖家需要把店铺API获取数据的权限给到其他第三方时,在生成的时候,选择channel后生成的,当然channel的可选项是walmart在经过认证后,将一些合作的第三方服务商添加进去的(下图中的 ShipStation)。比如walmart和ShipStation等合作,客户就可以选择channel=ShipStation做授权生成凭证。而且这个凭证只能给ShipStation用,如果客户给了其他服务商,也是违反规定的。
  • 4.第3点列举的是walmart us站点的授权方式,walmart ca站点的稍有不同,CA站点是在卖家中心的General Settings那里点击API跳转到页面去获取Consumer ID、Channel Type、Private Key。Consumer ID等同于US站点的Client ID,Private Key等同于Client Secret。Channel Type就是请求头参数中的WM_CONSUMER.CHANNEL.TYPE
  • 5.根据Client ID和Client Secret 请求Token API 获得accessToken
  • 6.Walmart还提供了Token Detail接口查询授权的权限等
  • 7.在请求业务API时,将accessToken赋值到请求头参数 WM_SEC.ACCESS_TOKEN中

3.参考链接

  • 1.API文档地址:https://developer.walmart.com/doc/us/us-mp
  • 2.授权引导:
    https://developer.walmart.com/doc/us/us-mp/us-mp-auth/
  • 3.测试联调页面:
    https://developer.walmart.com/tryout/us/mp/auth
  • 4.访问次数限制
    https://developer.walmart.com/doc/us/mp/us-mp-throttling/
  • 5.错误码解释:
    https://developer.walmart.com/doc/us/mp/us-mp-errors/

4.请求头参数

  • 1)WM_SVC.NAME Walmart Service Name 必填 例如:Walmart Marketplace
  • 2)WM_QOS.CORRELATION_ID 每个请求的唯一Id 必填 例如: UUID
  • 3)Authorization 用Client ID and Client Secret组合生成的Base64 encodes 必填 例如:Basic YzcyOTFjNmItNzI5MC0
  • 4)WM_CONSUMER.CHANNEL.TYPE 如我”方案“里面说的第3点,如果凭证是卖家自己用的,这个值为空。如果是第三方服务商调用API,这个值需要第三方服务商从Walmart那里通过商务合作获得,这个参数是用于Walmart识别是哪个第三方在调用API的
  • 5)WM_SEC.ACCESS_TOKEN 必填,通过用Client ID and Client Secret 请求Token API 获取的access_token,有效期为15分钟

5.请求Token API例子

  • 1.第一个测试例子:client ID正确,clientsecret错误
curl -X POST "https://marketplace.walmartapis.com/v3/token" -H  "accept: application/json" -H  "Authorization: Basic NWVkNTkyNDctM2QyYi00Y2ViLTk5MjQtY2M2Zjc2ZTg5MTM1OjZ3ZHMzMzIxLTNkMmItNGNlYi05OTI0LWNjNmY3NmU4OTEzNQ==" -H  "WM_CONSUMER.CHANNEL.TYPE: 12311114141" -H  "WM_QOS.CORRELATION_ID: b3261d2d-028a-4ef7-8602-633c23200af6" -H  "WM_SVC.NAME: Walmart Service Name" -H  "Content-Type: application/x-www-form-urlencoded" -d "grant_type=client_credentials"

返回

{"error": [{"code": "UNAUTHORIZED.GMP_GATEWAY_API", "field": "UNAUTHORIZED", "description": "Unauthorized", "info": "Unauthorized token or incorrect authorization header. Please verify correct format: \"Authorization: Basic Base64Encode(clientId:clientSecret)\" For more information, see https://developer.walmart.com/#/apicenter/marketPlace/latest#apiAuthentication.", "severity": "ERROR", "category": "DATA", "causes": [ ], "errorIdentifiers": { }}]
}

这种情况根据code 包含 UNAUTHORIZED就可以判别出来, 并且基本可以估算出是秘钥出错了。

  • 2.第二个测试例子:Client ID错误,Client Secret错误
`curl -X POST "https://marketplace.walmartapis.com/v3/token" -H  "accept: application/json" -H  "Authorization: Basic Y2M2Zjc2ZTg5MTM1OjZ3ZHMzMzIx" -H  "WM_CONSUMER.CHANNEL.TYPE: 12311114141" -H  "WM_QOS.CORRELATION_ID: b3261d2d-028a-4ef7-8602-633c23200af6" -H  "WM_SVC.NAME: Walmart Service Name" -H  "Content-Type: application/x-www-form-urlencoded" -d "grant_type=client_credentials"`

返回

{"error": [{"code": "INVALID_REQUEST_HEADER.GMP_GATEWAY_API", "field": "Authorization", "description": "Incorrect Authorization header", "info": "One or more request headers are invalid.", "severity": "ERROR", "category": "DATA", "causes": [ ], "errorIdentifiers": { }}]
}

这种情况根据code 包含 INVALID_REQUEST_HEADER 且 field=Authorization就可以判别出来, 并且基本可以估算出clientId及ClientSecret都错了

  • 第三个 如果WM_CONSUMER.CHANNEL.TYPE 里的信息和clientId及clientSecret不对应,会有什么错误?(也就是比如客户授权给A服务商的凭证,他确将凭证给了B服务商,而且B服务拿这些凭证和自己的CHANNEL去请求Token detail API)
{"expire_at": "1627328713000","issued_at": "1627327813000","is_valid": true,"is_channel_match": false,"scopes": {"reports": "full_access","item": "full_access","shipping": "full_access","price": "full_access","lagtime": "full_access","feeds": "full_access","returns": "full_access","orders": "full_access","rules": "full_access","fulfillment": "full_access","inventory": "full_access","content": "full_access"}
}

可以用is_channel_match来判别错误,如果false,就是channel不匹配

5.其他事项

  • 1.有人问我怎么成为walmart的开发者(solution provider) 请点击以下链接去查看:
    https://sellerhelp.walmart.com/s/guide?article=000009413
  • 2.walmart官方的开发者列表:
    https://sellerhelp.walmart.com/s/guide?article=000007885

Walmart API 授权流程解析相关推荐

  1. spring cloud+.net core搭建微服务架构:Api授权认证(六)

    前言 这篇文章拖太久了,因为最近实在太忙了,加上这篇文章也非常长,所以花了不少时间,给大家说句抱歉.好,进入正题.目前的项目基本都是前后端分离了,前端分Web,Ios,Android...,后端也基本 ...

  2. 12306之余票查询流程解析

    前言 本套教程共分3章: 12306之登录流程解析 12306之余票查询解析 12306之下单流程解析 本套内容主要用于分析12306购票流程,意在编写一套自动购票小程序.12306接口 api 经常 ...

  3. Google Open API授权认证体系

    http://blog.csdn.net/hereweare2009/article/details/4002537 Google Open API授权认证体系 Google Open API授权认证 ...

  4. SSL/TLS算法流程解析

    SSL/TLS 早已不是陌生的词汇,然而其原理及细则却不是太容易记住.本文将试图通过一些简单图示呈现其流程原理,希望读者有所收获. 一.相关版本 Version Source Description ...

  5. HBase - 数据写入流程解析

    本文由  网易云 发布. 作者:范欣欣 本篇文章仅限内部分享,如需转载,请联系网易获取授权. 众所周知,HBase默认适用于写多读少的应用,正是依赖于它相当出色的写入性能:一个100台RS的集群可以轻 ...

  6. 基于神策用户画像,在线教育企业线索标签体系搭建及培育全流程解析

    作者介绍:TigerHu,环球网校大数据营销产品 leader,主导数据产品线和营销 CRM 产品线. 本文内容均从作者真实实践过程出发,结合作者公司与神策数据合作真实场景,从神策用户画像产品出发,全 ...

  7. Asp.Net Core 中IdentityServer4 授权流程及刷新Token

    一.前言 上面分享了IdentityServer4 两篇系列文章,核心主题主要是密码授权模式及自定义授权模式,但是仅仅是分享了这两种模式的使用,这篇文章进一步来分享IdentityServer4的授权 ...

  8. 微信第三方平台-授权流程经验分享

    原文地址: www.jianshu.com/p/67836ffa9- 在做微信第三方平台开发的时候,虽然授权的技术实现流程比较简单,但是相对于一个key直接集成的一些其他的服务来说,还是有一些步骤,过 ...

  9. 更新一波,微信第三方开发平台授权流程

    最近一直忙于微信三方开发平台开发,更新一下,做个记录,微信第三方开发平台授权流程示例: 先看授权流程要拿到的结果: 照例先给出微信授权流程官网页面:https://open.weixin.qq.com ...

最新文章

  1. 操纵神经元构造后门,腾讯朱雀实验室披露AI模型新型攻击手法
  2. excplise tomcat启动过程中类找不到
  3. 吐槽 | 聊一聊公众号的那些事
  4. 解析三层架构(1)---为什么要分层?
  5. php curl基本操作
  6. 深入理解Java虚拟机——读书笔记01
  7. NYOJ 610 定长覆盖
  8. QT的QAlphaCoverage类的使用
  9. 排序算法python版本
  10. MYSQL的replace into
  11. select weui 动态加载数据_浪尖以案例聊聊spark3的动态分区裁剪
  12. ubuntu之修改登陆密码
  13. 当select查询为空
  14. XP下安装ubuntu双系统
  15. 【C#】Newtonsoft.Json 常用方法总结
  16. Google Earth Engine(GEE)——点、线、面和省级行政区的加载和展示,以及矢量的过滤筛选
  17. 关于sfc /scannow后主题文件的重置
  18. java xps生成_Java 将PDF/XPS转为Word/html /SVG/PS/PCL/PNG、PDF和XPS互转(基于Spire.Cloud.SDK for Java)...
  19. 网友盘点大陆十大“缺德”行业
  20. 基于zookeeper实现统一配置管理

热门文章

  1. 如何安装phpstudy
  2. Android程序员在大厂工作是什么体验?
  3. html css javascript 动漫网页设计成品 (妖狐小红娘) 学生漫画网页DW制作 web实训网页设计 HTML5期末大作业
  4. Linux中malloc与kmalloc
  5. 效率之王!这些令人惊叹的开发工具不可不知!
  6. 从数据结构及汇编角度深入学习go语言
  7. 数据结构与算法之美 | 别怕,有我!KMP 算法详解
  8. 使用idea起服务,起好久都起不起来
  9. 最后三天!当当网3折购书优惠码限时抢
  10. upupoo(网页壁纸)自主修改一:农历