企业对接Walmart平台API流程 On-request Reports API(二)

对接On-request Reports API

    • 1、对接指南
      • 1.1 报告生成时间
      • 1.2 报告保留期
      • 1.3 请求限制
      • 1.4 报告请求工作流
      • 如何申请报告
        • 第 1 步:申请取消报告
        • 第 2 步:获取报表可用性状态
        • 第 3 步:下载报告 URL
    • 2、代码实现
      • 2.1、获取访问API的token
      • 2.2、构建公共请求方法
      • 2.3 编写demo测试创建报告API

1、对接指南

1.1 报告生成时间

请求报告后,需要 15 到 45 分钟才能生成,然后可供下载。

1.2 报告保留期

您请求的报告将保留 30 天。您可以使用报告的请求 ID 请求 30 天的报告,无需请求新的报告。

1.3 请求限制

您每小时可以为每种报告类型请求一份报告。虽然您可以同时请求多种报告类型,但每小时只能为每种报告类型发出一次请求。

1.4 报告请求工作流

  • 使用 创建报告请求 API 创建报告请求。对于每个请求,系统都会创建一个requestId,卖家可以使用该 ID 来跟踪所请求报告的状态。
  • 使用报告请求状态 API 检查报告请求提交状态,该 API 返回有关报告状态的所有详细信息。
    报表状态为READY后,您现在可以使用下载报表 URL API 下载报表。
  • (可选): 您还可以使用获取所有报告请求 API 获取所有报告请求的列表。
  • (可选):如果使用创建订阅 API设置通知:当您收到报告已准备就绪的通知时,可以使用下载报表 URL API 检索它以供下载。
    在这里插入图片描述

如何申请报告

第 1 步:申请取消报告

若要请求项目报告,请调用创建报告请求 API。

例如,调用v3/reports/reportRequests?reportType=REPORT-TYPE&reportVersion=v1

REPORT-TYPE替换为您需要请求的报告类型。

指定所有必需参数的值:

reportType– 指定您要请求的报告(例如 reportType=CANCELLATION)。
reportVersion– 指定报告版本(例如 reportVersion=v1)。
成功后,API 调用将返回一个 requestId ,您可以使用它来了解报告是否已准备好下载,以及请求的状态(例如 RECEIVEDINPROGRESS)。它还返回requestSubmissionDate, UTC 格式的值:YYYY-MM-DDTHH:mm:ssZ

您还可以设置通知,以便在报告状态为 READY 时触发。要设置通知,请参阅通知。

第 2 步:获取报表可用性状态

若要了解报告是否已准备好下载,请调用报告请求状态 API 以检索报告请求状态。当状态为READY时,您可以下载报告。API 只能检索过去 30 天内创建的请求的详细信息。

例如,使用requestId进行调用。v3/reports/reportRequests?{requestId}

成功后,此调用将检索指定requestId的状态(例如 SUBMITTEDINPROGRESSREADYERROR)。

第 3 步:下载报告 URL

若要下载请求的报告,请调用下载报告 URL API”,并指定“由报告状态通知发送”或从报告请求状态 API 调用发送的“链接”。requestID

例如,调用/v3/reports/downloadReport?requestId={requestId}

成功后,您将收到用于下载报告的 URL 以及 URL 过期时间:

	downloadURL– 用于下载报告的 URL。downloadURLExpirationTime– 下载 URL 过期时间。

为避免错误,请务必检查以下情况是否不适用于您的请求:

请求已过期。在这种情况下,报告不再可用。
如果报告尚不可用,请检查状态是否为INPROGRESS
可能是系统错误或数据错误。
如果 无效。请确保您拥有正确的 requestId,或者它在 30 天后仍未过期。

2、代码实现

2.1、获取访问API的token

public static String getAccessToken(String appKey, String appSecret) {String authorization = getAuthorization(appKey, appSecret);Map<String, String> headers = new HashMap<>();headers.put("Authorization", authorization);headers.put("WM_SVC.NAME", "Shop name");headers.put("WM_QOS.CORRELATION_ID", IdUtil.randomUUID());HttpResponse response = HttpRequest.post("https://marketplace.walmartapis.com/v3/token").addHeaders(headers).body("grant_type=client_credentials", "application/x-www-form-urlencoded").execute();JSONObject jsonObject = JSONUtil.parseObj(response.body());return jsonObject.getStr("access_token");}

2.2、构建公共请求方法

public static String request(Method method,String url,Map<String, Object> paramMap,String jsonBody) {String appkey = "xxxxxx-xxxxxxxx8cb";String appSecret = "AOqxxxxxxxxxxxxxxxxxxxxxxbo";String accessToken = getAccessToken(appkey, appSecret);//appkey和appSecret换成自己的Map<String, String> headers = getHeaders(method, accessToken);// get请求拼接参数if (paramMap != null && paramMap.size() > 0) {if (url.indexOf("?") > 0) {url = url + "&" + HttpUtil.toParams(paramMap);} else {url = url + "?" + HttpUtil.toParams(paramMap);}}HttpResponse resp;if (method == Method.POST) {resp = HttpRequest.post(url).addHeaders(headers).body(jsonBody).execute();} else if (method == Method.GET) {resp = HttpRequest.get(url).addHeaders(headers).execute();} else {String msg = "仅支持GET 和POST请求";log.error(msg);return msg;}if (HttpStatus.HTTP_OK == resp.getStatus()) {log.info("接口响应数据response.body():{}", resp.body());return resp.body();} else {log.error("调用Walmart API 错误");return "调用Walmart API 错误";}}

2.3 编写demo测试创建报告API

 public static void main(String[] args) {String url = "https://marketplace.walmartapis.com/v3/reports/reportRequests";Map<String, Object> param = new HashMap<>();param.put("reportType", "ITEM");param.put("reportVersion", "v4");//1、把你想要展示到报告中的字段都可以往里面写//字段网址:https://developer.walmart.com/doc/us/mp/us-mp-onrequestreports/List<String> columns = Arrays.asList("SKU", "Item ID", "Product Name","Price", "Lifecycle Status", "Publish Status", "Status Change Reason","Average Rating", "Shelf Name");//2、添加过滤条件,这里以过滤 Publish Status = PUBLISHED为例子JSONObject statusFilter = new JSONObject();statusFilter.set("type", "enumFilter").set("columnName", "Publish Status").set("values", new String[]{"PUBLISHED"});//2.1、如果要过滤其他条件自行添加。比如过滤 10<=price<=1000JSONObject priceFilter = new JSONObject();priceFilter.set("type", "rangeFilter").set("columnName", "Price").set("from", "10").set("to", "1000");//2.2、把上面所有filter放到filters集合JSONArray rowsFilters = new JSONArray();rowsFilters.add(statusFilter);rowsFilters.add(priceFilter);//3、构建body参数,把字段和过滤条件加进来JSONObject jsonBody = new JSONObject();jsonBody.set("excludeColumns", columns);jsonBody.set("rowFilters", rowsFilters);log.info("请求参数:{}" + jsonBody);String response = request(Method.POST, url, param, JSONUtil.toJsonStr(jsonBody));log.info("response:{}", response);}

创建报告API调用成功,返回requestId
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/724664.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【教育部白名单赛事】C语言编程题解析--软件编程邀请赛(决赛)

文章目录 1、保留12位小数的浮点数2、气温统计3.大写字母的判断4、【递归】母鸡的故事5、小白免再排队 1、保留12位小数的浮点数 输入一个双精度浮点数&#xff0c;保留12位小数&#xff0c;输出这个浮点数。 时间限制&#xff1a;1000 内存限制&#xff1a;65536 【输入】 只…

【DPDK】基于dpdk实现用户态UDP网络协议栈

文章目录 一.背景及导言二.协议栈架构设计1. 数据包接收和发送引擎2. 协议解析3. 数据包处理逻辑 三.网络函数编写1.socket2.bind3.recvfrom4.sendto5.close 四.总结 一.背景及导言 在当今数字化的世界中&#xff0c;网络通信的高性能和低延迟对于许多应用至关重要。而用户态网…

【python基础学习10课_面向对象、封装、继承、多态】

一、类与对象 1、类的定义 在类的里面&#xff0c;称之为方法。 在类的外面&#xff0c;称之为函数。类&#xff1a;人类&#xff0c;一个族群&#xff0c;是一个群体类的语法规则&#xff1a;class 自定义的类名():属性 -- 变量方法 -- 函数类&#xff0c;首字母大写&#x…

SpringBoot集成图数据库neo4j实现简单的关联图谱

社交领域&#xff1a;Facebook, Twitter&#xff0c;Linkedin用它来管理社交关系&#xff0c;实现好友推荐 图数据库neo4j安装&#xff1a; 下载镜像&#xff1a;docker pull neo4j:3.5.0运行容器&#xff1a;docker run -d -p 7474:7474 -p 7687:7687 --name neo4j-3.5.0 ne…

Android开发真等于废人,历经30天

前言 回顾一下自己这段时间的经历&#xff0c;三月份的时候&#xff0c;疫情原因公司通知了裁员&#xff0c;我匆匆忙忙地出去面了几家&#xff0c;但最终都没有拿到offer&#xff0c;我感觉今年的寒冬有点冷。到五月份&#xff0c;公司开始第二波裁员&#xff0c;我决定主动拿…

超简单Windows-kafka安装配置

参考大佬文章&#xff1a; Kafka&#xff08;Windows&#xff09;安装配置启动&#xff08;常见错误扫雷&#xff09;教程_kafka在windows上的安装、运行-CSDN博客Kafka&#xff08;Windows&#xff09;安装配置启动&#xff08;常见错误扫雷&#xff09;教程_kafka在windows上…

基于ERNIR3.0文本分类的开发实践

参考&#xff1a;基于ERNIR3.0文本分类&#xff1a;(KUAKE-QIC)意图识别多分类(单标签) - 飞桨AI Studio星河社区 (baidu.com) https://zhuanlan.zhihu.com/p/574666812?utm_id0 遇到的问题&#xff1a;如下 采用paddleNLP下文本分类实例进行分类训练后发现 生成的模型分类不…

嵌入式学习-FreeRTOS-Day1

一、重点 1、VCC和GND VCC&#xff1a; 1、电路中为电源&#xff0c;供应电压 2、3.3v-5v 3、数字信号中用1表示GND&#xff1a; 1、表示地线 2、一般为0v 3、数字信号中用0表示2、电容和电阻 电容 存储电荷 存储能量&#xff1a; 电容器可以在其两个导体板&#xff08;极…

C++之智能指针

为什么会有智能指针 前面我们知道使用异常可能会导致部分资源没有被正常释放, 因为异常抛出之后会直接跳转到捕获异常的地方从而跳过了一些很重要的的代码, 比如说下面的情况&#xff1a; int div() {int a, b;cin >> a >> b;if (b 0)throw invalid_argument(&q…

第三天 Kubernetes进阶实践

第三天 Kubernetes进阶实践 本章介绍Kubernetes的进阶内容&#xff0c;包含Kubernetes集群调度、CNI插件、认证授权安全体系、分布式存储的对接、Helm的使用等&#xff0c;让学员可以更加深入的学习Kubernetes的核心内容。 ETCD数据的访问 kube-scheduler调度策略实践 预选与…

centos7安装maven离线安装

1、从官方网站下载maven文件包 官方下载网站&#xff1a;https://maven.apache.org/download.cgi 2、创建文件夹解压文件 将下载好的安装包&#xff0c;放到创建的目录下&#xff0c;并解压 a、创建/app/maven文件 mkdir /app/mavenb、解压文件 tar -zxvf apache-maven-…

重磅:2024广州国际酒店工程照明展览会

2024广州国际酒店工程照明展览会 Guangzhou international hotel engineering lighting exhibition 2024 时间&#xff1a;2024年12月19-21日 地点&#xff1a;广州.中国进出口商品交易会展馆 承办单位&#xff1a;广州佛兴英耀展览服务有限公司 上海昶文展览服务有限公司…

【Java面试/24春招】技术面试题的准备

Spring MVC的原理 Mybatis的多级缓存机制 线程池的大小和工作原理 上述问题&#xff0c;我们称为静态的问题&#xff0c;具有标准的答案&#xff0c;而且这个答案不会变化&#xff01; 如果没有Spring&#xff0c;会怎么样&#xff1f;IOC这个思想是解决什么问题&#xff1f…

【牛客】VL65 状态机与时钟分频

描述 题目描述&#xff1a; 使用状态机实现时钟分频&#xff0c;要求对时钟进行四分频&#xff0c;占空比为0.25 信号示意图&#xff1a; clk为时钟 rst为低电平复位 clk_out 信号输出 Ps 本题题解是按照1000的状态转移进行的&#xff0c;不按照此状态进行&#xff0c;编译器…

蓝桥杯练习系统(算法训练)ALGO-985 幸运的店家

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 炫炫开了一家商店&#xff0c;卖的货只有一个&#xff0c;XXX&#xff0c;XXX卖N元钱。有趣的是&#xff0c;世界上只有面值…

剑指offer 二维数组中的查找 C++

目录 前言 一、题目 二、解题思路 1.直接查找 2.二分法 三、输出结果 前言 最近在牛客网刷题&#xff0c;刷到二维数组的查找&#xff0c;在这里记录一下做题过程 一、题目 描述 在一个二维数组中&#xff08;每个一维数组的长度相同&#xff09;&#xff0c;每一行都按照…

微信小程序开发:记一次提审失败的反馈重审

我在第一次提审小程序的时候很明确说了我这个是接入的阿里云的人像动漫化接口&#xff0c;但是还是给我不通过&#xff1a; 说我涉及AI合成&#xff0c;个人是做不了一点AI相关的东西&#xff0c;一点都不行&#xff1a; 我肯定不接受了&#xff0c;反馈说&#xff1a; 还把…

2024.3.6

作业1&#xff1a;使用C语言完成数据库的增删改 #include <myhead.h>//定义添加员工信息函数 int Add_worker(sqlite3 *ppDb) {//准备sql语句printf("请输入要添加的员工信息:\n");//从终端获取员工信息char rbuf[128]"";fgets(rbuf,sizeof(rbuf),s…

ArrayList的扩容机制

ArrayList 的底层操作机制源码分析 ArrayList中维护一个Object类型的数组elementData transient Object[] elementData; //transient表示瞬间 短暂的&#xff0c;表示该属性不会被序列化当创建ArrayList对象时&#xff0c;如果使用的是无参构造器&#xff0c;则初始elementDa…

C#知识点-22(ADO.NET五个对象,SQL漏洞注入攻击)

ADO.NET 概念&#xff1a;ADO.NET就是一组类库&#xff0c;这组类库可以让我们通过程序的方式访问数据库&#xff0c;就像System.IO的类用类操作文件一样&#xff0c;System.Data这组类是用来操作数据库的&#xff08;不光是MSSql Server&#xff09;&#xff0c;它提供了统一…