方罗交接
亚马逊交接
广州同步店铺框架搭建
QPS-Starter 集成文档
刊登规则引擎技术方案
MQ异常补偿方案
负责项目总目录
广州侧同步商品平台
本文档使用 MrDoc 发布
-
+
首页
亚马逊交接
# 1. 亚马逊责任链刊登设计 ## 一. 开篇    开篇之前说点题外话。Java做为一门面向对象编程的语言,是十分注重编码规范和架构设计的。但是在很多情况下,很多公司或很多项目团队是为了封装而封装,抽象而抽象反而得不偿失。因此在**合适的场景使用合适的封装才是最好的做法**!!!切记!!! **源码地址:** http://git.mabangerp.com:2280/m-lis/mdc-product-amazon.git ## 二. 业务背景    亚马逊平台作为公司主力平台之一,一直都投入了大量的精力和人员去做维护。但是每一次有新的业务需求研发都会经过从0到1的过程。而且还需要去解决各自数据中间态的问题。因此现在我们主要是针对我司两种刊登方式: 专业版Excel模板刊登, ERP平台商品刊登进行讨论。    在刊登的业务链路里面,我们需要针对于亚马逊平台调用很多接口,而且接口与接口之间存在着强依赖。同时模板刊登和商品刊登两种方式也存在着**业务交叉**。因此为了更好地去管理这两种方式并且也更好的去维护编码,决定采用**责任链**设计模式来做为本次2.0新架构的托底架构设计(PS: JSON刊登不算在此列。因为还在研究中) ## 三. 旧设计 ### 1. 逻辑图  ### 2. 弊端    业务逻辑强强绑定,根本没办法拆。比如ERP商品刊登写了这些逻辑以后,后面增加了一个专业版刊登场景,两个场景调用平台接口是一致的。但是因为代码耦合度太高,导致调用平台接口这一块的逻辑没办法拆分出来,也就导致了代码不可复用。而且中间态数据也乱飞,消耗了平台接口令牌也因为后续系统原因会重复调用消耗,重复执行幂等性代码等一系列弊端 ## 四. 新2.0设计 ### 1. 设计思路    根据上述旧架构设计的弊端,新架构就是为了解决这系列问题。**解决思路就是我们按照面向对象的思维,把上述架构图业务逻辑拆分成一个一个的动作,把每一个动作都看作成节点**。然后所有节点可以看作是一条大的链表。这样从编码角度和业务角度把耦合度拆分。同时节点与节点之间的沟通都通过一个上下文类来作为沟通的桥梁,方便下行节点拿到上行节点的中间态数据,同时如果出了异常那么就可以通过上下文把中间态数据存入DB,最后上下文还充当数据管家作用 ### 2. UML类图设计  ### 3. 优点 1. 业务耦合度底 2. 随意增删节点,不会影响其它节点业务 3. 能较好处理中间态数据 4. 能更好的处理流程,不走重复业务 ### 4. 缺点 1. 事务(如果链路很长,开启了的事务就需要等很久。这会造成锁持有时间过长。解决方式是每个节点都处理各自业务数据,并且在抽象模板层面上做好异常回滚的自有逻辑编写) 2. 请求的传递,在DEBUG的时候比较麻烦 3. 代码编写要求更高,并且要做业务与中间态数据承上启下 ## 五. 未来畅想(3.0设计) 1. 有后台系统维护页面,能够在页面上增加链路配置 2. 现阶段针对于每一个步骤数据节点搜集太少,并且强依赖腾讯云日志,后续可以在ES或其它NoSQL里面做生命周期快照。主要是在系统中看数据流向,数据明细等 网上找到如图所示:   ## 六. 尾声    如有新想法,请及时联系方罗(Tel:13258230237 Email:fangluo@mabangerp.com) # 2. 亚马逊业务文档 # 一. 亚马逊 整个文档是介绍公司亚马逊平台内部流程。从店铺授权 -> 基础信息 -> 刊登 -> 同步商品 -> 拉取订单 -> 解析订单 -> 发货整个大概流程说明 # 二. 亚马逊授权 ## 1. 简介 亚马逊授权是用的Oauth2授权码模式。这种授权模式需要分两步,所以我们需要提供两个接口,一个接口是给用户输入授权信息获取授权url,第二个接口是提供给平台进行回调 # 三. 亚马逊刊登前置内容 ## 1. 什么是UPC UPC条码全名为Universal Product Code(统一商品码),普遍使用于美洲一带。而这个UPC不是AMAZON生成的,是由美国一个代码管理协会颁发的,只不过国内的人破解了这个UPC的规则。而在亚马逊平台商品使用的是自身编码ASIN,在刊登商品时需要**ASIN码与UPC码做对应**才行 ## 2. 主,子商品 亚马逊平台商品是区分主商品和变种子商品。主商品就类似我们平时购买的一个iphone 手机。变种子商品就是在这个主商品的维度上增加了其它属性。比如128G,黑色,三网通等等等等。一个主商品是可以对应**多个**变种子商品的。 当然也可以**一个单品主商品**直接刊登 ## 3. 什么是刊登 首先,刊登不是商品上下架。一定要和商品上下架区分开。商品上下架是要依托于系统店铺内已经录入好的商品信息来做操作。但是刊登是系统店铺中并没有该商品。那么就需要把商品信息通过马帮平台录入到对方平台店铺中。这个**录入**的操作就叫做刊登 # 四. 亚马逊基础数据 ## 1. 简介 亚马逊的基础信息是通过一个个的**站点模板excel文件**来存储的。这些基础信息数据是用来辅助商品进行刊登。每个excel文件分别会存储**字段元数据(dataDefinitions),商品刊登模板(template)以及商品类型额外值(valid Values)。** 除此之外,亚马逊还有**专门的类目xml文件,里面存放的是categoryId**。这个categoryId在**美国站点**刊登时,需要通过categoryId去获取对应的itemType。而这个itemType也是由亚马逊的额外node节点excel文件存储。最后会把**字段元数据,类目数据通过RocketMQ(香港)->RabbitMQ(广州)的方式给到PHP** 代码解析Excel链路: ParseTemplate -> ParseDataDefinition -> ParseValidValue -> Persistence -> CategoryAttributePushMessage -> ProductTypeAttributePushMessage ## 2. 字段元数据 **各个国家**站点模板文件里面有一个Sheet叫Data Defnition(**不同的站点sheet有可能不一样**, 具体情况具体分析)。这个Sheet里面是存放该站点该分类商品刊登时所需要填写的字段, 字段对应的含义, 字段描述, 是否必填等相关信息 ## 3. productType **各个国家**站点模板文件里面有一个Sheet叫Valid values(**不同的站点sheet有可能不一样**, 具体情况具体分析)。这个Sheet里面存放的是刊登模板选择不同productType让某些字段展示下拉选项值。怎么去对应字段元数据?**通过字段元数据里Local Label Name来对应** ## 4. categoryId categoryId就是在刊登时选择刊登商品时所属类目的树型菜单数据携带的id, 这个需要解析类目xml文件 ## 5. itemType itemType是**美国站点**刊登时需要注意的点。在刊登之前,需要先把所有亚马逊的额外node节点excel文件解析到数据库中, 再通过上述categoryId去获取对应的值。最后在刊登时把值放入item_type字段 ## 6. 字段规则 - ### 单品商品字段规则 & 主商品与子商品字段规则 #### 单品商品必填字段: feed_product_type, item_sku brand_name, external_product_id_type, item_name, manufacturer, standard_price, quantity, parent_child #### 变种主商品必填字段: feed_product_type,item_sku,brand_name,external_product_id_type,item_name, manufacturer, parent_child, variation_theme #### 变种子商品必填字段: feed_product_type,item_sku,brand_name,external_product_id_type,item_name, manufacturer, standard_price, quantity, parent_child, parent_sku, relationship_type(Variation) - ### 字段元数据之间的规则交叉 刊登时常常会有填写了一个字段,另一个字段就会必填。因此把这方面的校验规则放在**mdc_platform_meta_base.amazon_field_relationship**数据表里 - ### productType额外必填字段 刊登时经常会出现选择了productType以后会有额外必填字段。因此把这方面的校验规则放在**mdc_platform_meta_base.amazon_category_extra_field**数据表里 - ### publicTemplateField必填字段 刊登时有些站点和模板会有专属的必填字段。因此把这方面的校验规则放在**mdc_platform_meta_base.amazon_template_public_field**数据表里 # 五. 亚马逊刊登流程 mdc-product-amazon项目是专门用来和亚马逊平台方进行API交互,主要用于**刊登, 同步, 商品操作, 跟卖**等功能。该项目的入口都是通过**调度中心**项目发送RocketMQ消息来进行触发。 刊登链路执行的路径(具体链路数据管理是在mdc_product_task.amazon_process_node_info表数据): 普通Excel刊登: ValidShop -> GenerateExcel -> PublishExcel 轮询结果 RoundRobinResult -> DownloadResultFile -> UploadCos -> ParseResultFile 文件版刊登: ValidShop -> DownloadExcel -> PublishExcel 轮询结果 RoundRobinResult -> DownloadResultFile -> UploadCos ## 1. 流程简介 1.消息到达AmazonExcelPublishTaskConsumer.java触发 2.校验消息是否重复消费,然后通过分布式锁住店铺id,根据消息中的批次号(前提有批次号,没有就生成一个)来获取需要处理同店铺同模板的批次刊登任务(店铺Id和模板都是消息体内自带数据) 3.获取需要执行的链路,构建链路中的上下文来进行数据参数传递 4.校验店铺合法 ValidShop 5.生成Excel(如果是文件版刊登就直接从网上URL下载用户上传的刊登Excel) GenerateExcel | DownloadExcel 调用亚马逊接口(首先获取刊登时需要上传的url, 其次把刊登文件和url进行绑定, 最后进行刊登获取刊登结果id) PublishExcel 6.轮询结果id获取结果 RoundRobinResult通过结果id拿到结果文件url,并进行结果文件url下载,最后上传到腾讯云进行保存 DownloadResultFile 7.文件上传刊登就直接通知PHP返回(普通刊登则忽略这个节点) UploadCos 8.普通刊登进行结果文件解析, 并把每个任务对应的结果通知给PHP(如果需要重试则对部分任务进行重试) ParseResultFile 9.执行完链路,打印日志并回馈MQ ACK ## 2. 接口说明 ### 接口createFeedDocument(/feeds/2021-06-30/documents) #### 描述: 亚马逊Feed API模块的createFeedDocument接口(/feeds/2021-06-30/documents)。该接口的作用是返回平台侧文件URL,以供客户端进行上传文件与URL绑定 #### 入参解析: contentType: 告知亚马逊上传文件格式类型 #### 响应解析: feedDocumentId: 亚马逊上传文件id url: 上传亚马逊url ### UploadFile SDK代码(亚马逊官方API有) #### 描述: 亚马逊UploadFile SDK代码(亚马逊官方有Demo,直接传递createFeedDocument上的url和上传文本byte字节数组)。通过把客户端文件HTTP调用上一步获取的文件URL进行绑定上传 #### 入参解析: 无 #### 响应解析: 无 ### 接口createFeed(/feeds/2021-06-30/feeds) #### 描述: 调用亚马逊CreateFeed接口(/feeds/2021-06-30/feeds),获取FeedId。这个FeedId其实就是亚马逊平台侧标识报告任务Id。同时也会轮询该接口获取任务状态是否处理完毕 #### 入参解析: contentType: 告知亚马逊上传文件格式类型 marketplaceIds: 市场id inputFeedDocumentId: 传入createFeedDocument接口返回的feedDocumentId #### 响应解析: feedId: 处理文件id feedType: 处理文件类型 processingStatus: 处理文件状态(CANCELLED, DONE, FATAL, IN_PROGRESS, IN_QUEUE) resultFeedDocumentId: 获取处理文件结果id ### 接口getFeedDocument(/feeds/2021-06-30/documents/${FeedDocumentId}) #### 描述: 任务状态处理完毕, 拿到FeedDocumentId。调用亚马逊FeedDocument接口获取下载地址(/feeds/2021-06-30/documents/${FeedDocumentId}) #### 入参解析: feedDocumentId: 接口createFeed返回的feedId #### 响应解析: feedDocumentId: 结果文件文档id url: 结果文件文档下载url地址 compressionAlgorithm: 下载时传入的压缩算法 ### DownloadFile SDK代码(亚马逊官方API有) #### 描述: 根据上一步接口getFeedDocument提供的下载地址,调用亚马逊官方提供SDK代码(亚马逊官方API有)把文件字节流下载到程序内部进行解析 #### 入参解析: 无 #### 响应解析: 无 # 六. 亚马逊同步店铺流程 每条链路执行的路径(具体链路数据管理是在mdc_product_task.amazon_process_node_info表数据): 1. 店铺同步: ValidShop -> SyncShopReportInfo 2. 店铺结果解析 RoundRobinSyncShopReportResult -> DownloadSyncShopReportResult -> ParseSyncShopReportResult 3. 单商品解析 SyncProductProcess ## 1. 流程简介 1. 消息到达AmazonSyncShopProductConsumer.java触发 2. 校验消息是否重复消费,然后通过分布式锁住店铺id,通过店铺id获取数据,并把数据状态更改为拉取中 3. 获取需要执行的链路,构建链路中的上下文来进行数据参数传递 · 校验店铺合法 ValidShop · 调用亚马逊获取报告接口,获取结果报告id SyncShopReportInfo · 轮询报告结果id获取结果 RoundRobinSyncShopReportResult · 下载报告结果,并上传到腾讯云 DownloadSyncShopReportResult · 报告结果文件解析, 推送给PHP店铺商品总数,店铺状态。然后挨个挨个商品重新转发到另一条链路(商品同步链路) 4. AmazonSyncProductConsumer.java 接收每个商品传递过来的消息 5. 获取商品同步链路节点并执行 6. 推送消息给PHP ## 2. 接口说明 ### 接口createReport接口(/reports/2021-06-30/reports) #### 描述: 亚马逊REPORTS API模块的createReport接口(/reports/2021-06-30/reports)。该接口的作用是获取店铺刊登所有商品(PS: 这个接口不止是获取刊登所有商品,是根据你传递的Type类型来获取对应报告) #### 入参解析: reportType: 创建亚马逊报告类型(https://developer-docs.amazon.com/sp-api/docs/report-type-values) marketplaceIds: 市场id #### 响应解析: reportId: 报告id ### 接口ReportId(/reports/2021-06-30/reports/${ReportId}) #### 描述: 轮询上一步ReportId任务接口(/reports/2021-06-30/reports/${ReportId}), 获取任务状态是否处理完毕 #### 入参解析: reportId: 报告id #### 响应解析: reportDocumentId: 报告文档id reportType: 报告类型 processingStatus: 报告任务状态 ### 接口ReportDocument(/reports/2021-06-30/documents/${reportDocumentId}) #### 描述: 轮询上一步ReportId任务接口(/reports/2021-06-30/reports/${ReportId}), 获取任务状态是否处理完毕 #### 入参解析: reportDocumentId: 报告文档id #### 响应解析: reportDocumentId: 报告文档id url: 结果文件文档下载url地址 compressionAlgorithm: 下载时传入的压缩算法 ### DownloadFile SDK代码(亚马逊官方API有) #### 描述: 根据上一步接口getFeedDocument提供的下载地址,调用亚马逊官方提供SDK代码(亚马逊官方API有)把文件字节流下载到程序内部进行解析 #### 入参解析: 无 #### 响应解析: 无 ### 接口商品详情(/catalog/2022-04-01/items) #### 描述: 最后根据商品维度获取商品详情(/catalog/2022-04-01/items),发送给PHP #### 入参解析: marketplaceIds: 市场id identifiers: ASIN集合 | SKU集合 | EAN集合 | UPC集合 identifiersType: 类型(ASIN, EAN, SKU, UPC, GTIN....) includedData: 返回商品详情内容(attributes, dimensions, identifiers, images, productTypes, relationships, salesRanks, summaries, vendorDetails) pageSize: 返回数量, 最大20条 #### 响应解析: numberOfResults: 返回结果数 **返回商品结果集合(具体内容取决于入参includedData)如下:** asin: 商品ASIN码 attributes: 发布属性 dimensions: 尺寸 identifiers: ASIN,SKU,EAN,UPC都会在这个字段(前提有) images: 商品图片数组 productTypes: 商品类型 relationships: 商品父子关系 salesRanks: 销售评分 summaries: 汇总摘要 vendorDetails: 供应商详细信息 # 七. 亚马逊拉单流程 ## 1. 流程简介 - mps-order-pull-***服务接收拉单消息 - 接收拉单消息后调用亚马逊拉取订单列表接口(/orders/v0/orders) - 拉取到订单数据后保存原始数据到mps-order-meta中间表内并发送消息到mps-task-distribution服务处理 - 最后拿到响应,重新重置任务状态、下次运行时间、下次拉单起始时间 ## 2. 接口说明 ### list接口(GET /orders/v0/orders) #### 描述: 亚马逊ORDERS API模块订单list接口(GET /orders/v0/orders)。该接口作用是获取店铺一段时间内某些状态的订单列表 #### 入参解析: MarketplaceIds: 市场id CreatedAfter,CreatedBefore: 创建时间范围区间 LastUpdatedAfter, LastUpdatedBefore: 更新时间范围区间 OrderStatuses: 订单状态(PendingAvailability, Pending, Unshipped, PartiallyShipped, InvoiceUnconfirmed, Canceled, Unfulfillable) SellerOrderId: 售卖订单号 MaxResultsPerPage: 最大结果页 AmazonOrderIds: 亚马逊订单号 #### 响应解析: **订单数组中每一个订单对象如下(比较重要字段):** AmazonOrderId: 亚马逊订单号 SellerOrderId: 销售订单号 PurchaseDate: 创建时间 LastUpdateDate: 上次更新时间 OrderStatus: 订单状态 FulfillmentChannel: 履行渠道 ShippingAddress: 配送地址 BuyerInfo: 买家信息 MarketplaceTaxInfo: 市场税率 OrderType: 订单类型 EasyShipShipmentStatus: 发货状态 PaymentMethod: 支付方式 PaymentExecutionDetail: 付款详细信息 OrderTotal: 订单金额 ElectronicInvoiceStatus: 电子发票状态 .... # 八. 亚马逊解析订单流程 ## 1. 流程简介 - mps-order-detail-***接收到上述流程mps-task-distribution服务分发处理消息 - 调用亚马逊订单详情接口[**订单商品详情-商品详情不完整**, **订单买方详情(GET /orders/v0/orders/{orderId}/buyerInfo)**, **订单地址详情(GET /orders/v0/orders/{orderId}/address)**, **获取具体商品详情(GET /catalog/2022-04-01/items/{asin})**] , 进行汇总 - 调用mps-order-meta服务接口,保存订单详情 - 最后删除中间表数据 ## 2. 接口说明 ### 接口订单商品详情(GET /orders/v0/orders/{orderId}/orderItems) #### 描述: 获取订单商品详情 #### 入参解析: orderId:亚马逊订单id #### 响应解析: **订单商品数组:** ASIN: 商品ASIN SellerSKU: 商品SKU OrderItemId: 订单itemId Title: item标题 QuantityOrdered: 订单item数量 ItemPrice: item价格 ShippingPrice: 配送价 ItemTax: item税费 ShippingTax: 配送税费 ShippingDiscount: 配送折扣 ShippingDiscountTax: 配送折扣税 PromotionDiscount: 活动折扣 PromotionDiscountTax: 活动折扣税 PromotionIds: 参与促销活动数组id IsGift: item是否赠品 BuyerInfo: item对应的买家信息 ..... ### 接口订单买方详情(GET /orders/v0/orders/{orderId}/buyerInfo) #### 描述: 获取订单买方详情 #### 入参解析: orderId:亚马逊订单id #### 响应解析: AmazonOrderId: 亚马逊订单id BuyerEmail: 买方email BuyerName: 买方名 BuyerCounty: 买方城市 BuyerTaxInfo: 买方税费 PurchaseOrderNumber: 采购订单编号 ### 接口订单地址详情(GET /orders/v0/orders/{orderId}/address) #### 描述: 获取订单地址详情 #### 入参解析: orderId:亚马逊订单id #### 响应解析: AmazonOrderId: 亚马逊订单id Name: 地址名 AddressLine1: 街道地址 City: 城市 County: 县 District: 地区 Municipality: 直辖市 StateOrRegion: 州或地区 PostalCode: 邮政编码 CountryCode: 城市编码 ...... ### 接口商品详情(/catalog/2022-04-01/items) #### 描述: 最后根据商品维度获取商品详情(/catalog/2022-04-01/items/{asin}),发送给PHP #### 入参解析: asin: 商品ASIN码 marketplaceIds: 市场id includedData: 返回商品详情内容(attributes, dimensions, identifiers, images, productTypes, #### 响应解析: asin: 商品ASIN码 attributes: 发布属性 dimensions: 尺寸 identifiers: ASIN,SKU,EAN,UPC都会在这个字段(前提有) images: 商品图片数组 productTypes: 商品类型 relationships: 商品父子关系 salesRanks: 销售评分 summaries: 汇总摘要 vendorDetails: 供应商详细信息 # 九. 亚马逊发货流程 ## 1. 流程简介 - 第一步就是将发货信息根据亚马逊提供的xsd生成对应的xml文件上传到亚马逊,亚马逊会返回一个feedId给调用方,这时候不代表成功,需要等待大概1分钟 - 第二步根据feedId调用亚马逊的接口获取结果,结果也是一个xml文件,xml文件就会告诉我们结果,如果我们上传上去的xml有问题,这个结果xml文件也会告诉我们 ## 2. 接口说明 参考商品刊登 # 亚马逊缺陷 #### # code:8058,message:Some attributes are missing for SKU: [7306].For more details, see http://sellercentral.amazon.com/gp/errorcode/8058; > 8058 的报错先查询下分类是不是 Home(一般都是),Home的话以下回复:  第二步:搜索country_of_origin,填写原产地,it: Cina;FR: Chine; pl: Chiny; se: Kina;其他China (如果不知道怎么进行第一步的匹配 则 只需要搜索填写如下几个标签即可,其他非必要属性请不要填写 depth_front_to_back depth_front_to_back_unit_of_measure depth_width_side_to_side depth_width_side_to_side_unit_of_measure depth_height_floor_to_top depth_height_floor_to_top_unit_of_measure country_of_origin > 如果是Clothing(bra) apparel_size_system apparel_size_class apparel_size apparel_size_to apparel_body_type apparel_height_type 这几个必填 > 如果是Shoes   这几个必填 #### # 8560,消息:SKU85494221222@2PCS,缺失属性 unit_count。库存单位85494221222@2PCS与任何ASIN都不匹配。确保所有标准产品ID(如UPC、I**N、EAN或JAN代码)正确。要创建新的ASIN,请包含以下属性:unit_count。源ID:0。有关更多疑难解答帮助,请参阅 http://sellercentral.amazon.com/gp/errorcode/200692370; > Unit Count (Per Unit Pricing),Unit of Measure (Per Unit Pricing) 这两个属性没有填写,请搜索填写。  #### # 8541,message:The SKU data provided is different from what's already in the Amazon catalog. The item_id data provided matches ASIN B0BC5ZXL5V, but the following data is different from what's already in the Amazon catalog: media_id (Merchant: '41iqKbTlmSL' / Amazon: '410gPZhTpzL'). If this is the right ASIN for your product, update your data to match what's in the Amazon catalog. If it's not the right ASIN, make sure that your data for item_id is correct. ; > 用户填写的 UPC 和后台的这个商品相匹配了 ASIN B0BC5ZXL5V , 请用户检查是否为自己的商品,是的话请将商品信息填写一致。然后可以提示报错的里面哪个属性没有填对,比如这个报错就是说 media_id (Merchant: '41iqKbTlmSL' / Amazon: '410gPZhTpzL') 填的不对。 #### # 【加拿大】上传文件到亚马逊失败:SubmitFeed.MarketplaceWebServiceException: Feed rejected,上传信息被拒绝,请检查亚马逊后台店铺是否已被关店 > 报这个错说明这个店铺的状态问题,需要用户联系下亚马逊的客户经理看下 如果用户不信的话,可以再后台试下通过上传excel刊登试试 #### # 8560,message:SKU svcv126h, Missing Attributes part_number. SKU svcv126h doesn't match any ASINs. Make sure that all standard product ids (such as UPC, ISBN, EAN, or JAN codes) are correct. To create a new ASIN, include the following attributes: part_number. Feed ID: 0. For more troubleshooting help, see http://sellercentral.amazon.co.uk/gp/errorcode/200692370; > Numero parte(part_number) 意大利站点需要填写这个属性,麻烦搜索填写下。(回复前,需要在亚马逊的document里面查到这个属性在页面可以搜到的名称。)  #### # 8560,message:SKU svcv126h, Missing Attributes manufacturer_minimum_age. SKU svcv126h doesn't match any ASINs. Make sure that all standard product ids (such as UPC, ISBN, EAN, or JAN codes) are correct. To create a new ASIN, include the following attributes: part_number. Feed ID: 0. For more troubleshooting help, see http://sellercentral.amazon.co.uk/gp/errorcode/200692370; > mfg_maximum 年龄最大数值 例如填写 24 > mfg_minimum 年龄最小数值 例如填写 12 > mfg_minimum_unit_of_measure 年龄最小数值单位 例如填写 years > mfg_maximum_unit_of_measure 年龄最大数值单位 例如填写 years > 这就代表商品使用限制在 12 - 24 周岁 > > 如果商品要表示12周岁及以上人使用 就只需要填写mfg_minimum , mfg_minimum_unit_of_measure这2个字段即可 > 最后: 用户如果没有在模板找到字段, 那么请用户选择Toys(玩具模板)进行商品刊登 #### # 上传基本信息失败code:6039,message:Merchant is not authorized to sell products under this restricted product group.; code:6039,message:Merchant is not authorized to sell products under this restricted product group.; > 因为这个类目无法使用导致的,用户可以更换类目试下。 #### # 上传基本信息失败code:5461,message:You may not create new ASINs for this brand. You are free to add offers to any existing ASIN for this brand. Please review our ASIN Creation Policy here: https://sellercentral.amazon.com/gp/help/201844590. If you believe the product you want to sell is not already listed in the Amazon catalog and should be listed as a new ASIN, contact Seller Support at https://sellercentral.amazon.com/hz/contact-us and mention error code 5461. > 请用户检查品牌和 UPC 是否正确。 #### # code:5461,message:You may not create new ASINs for the brand POSTEGE. If you believe the product you want to sell is not currently in the Amazon catalog and should be added as a new ASIN, please copy and paste the following URL in a separate window and complete the form: https://sellercentral.amazon.co.uk/hz/approvalrequest?restrictionScope=CONTRIBUTION&brandName=POSTEGE&brandId=2061877&operationFilter=create_asin; > 有三种情况导致该报错: 1、用户填写的品牌 POSTEGE 是无效的,确认品牌是否正确。 2、这个品牌最近刊登的商品太多了,暂时无法刊登。 3、这个品牌不属于这个店铺 #### # 上传文件到亚马逊失败:SubmitFeed.MarketplaceWebServiceException:Feed rejected,上传信息文件被拒绝,请检查亚马逊后台店铺是否已被关店,上传信息文件被拒绝,请检查亚马逊后台店铺是否已被关店。 > 直接回复以下内容:用户的店铺状态有问题,请找亚马逊的客户经理处理下。如果用户不信的话,可以在亚马逊后台使用excel的方式刊登试下。 #### # 亚马逊刊登 上传产品到亚马逊后台以后,所有的变体图片变成同样的,连后台生成的ASIN都是同一个 > 直接回复以下内容:GTIN刊登,并且变体属性规格不明显导致亚马逊平台误认为是跟卖!有以下方案让用户处理: 1.请让用户不要使用GTIN刊登,使用UPC。2. 让用户去亚马逊后台直接逊问平台方。但是不要说明是在第三方ERP平台刊登 #### # 亚马逊刊登code:8560,message:SKU jhv7892bcn-1pcs, Missing Attributes unit_count. SKU jhv7892bcn-1pcs doesn't match any ASINs. Make sure that all standard product ids (such as UPC, ISBN, EAN, or JAN codes) are correct. To create a new ASIN, include the following attributes: unit_count. Feed ID: 0. For more troubleshooting help, see http://sellercentral.amazon.co.uk/gp/errorcode/200692370;报错 > 直接回复以下内容:请让用户补充unit_count字段再进行刊登 #### # 亚马逊createFeed接口返回[{"code":"InvalidInput","details":"","message":"Invalid request parameters"}]} > 自己检查传参,如果传参没问题就询问用户店铺信用卡是否过期或欠费(这是网上Github用户排查方式之一) #### # 对于无品牌用户刊登失败 > NoBrand、无品牌、通用 这些需要用户自己尝试,但是亚马逊对于品牌的管理越来越严格,最好是用户申请自己的品牌,以提高刊登的成功率。马帮无法保证无品牌用户刊登的成功率。请勿使用别人的品牌刊登,可能导致封店铺。 #### # 99038: 产品描述含有无效值 > 直接看描述里面有没有html标签(p标签和strong标签除外)。如果有其它标签就直接把coding指给php,让php排查 #### # 8566与8571成对出现 >1. UPC本身编码有问题, 需要做替换(这个根据替换了以后第二次刊登是否依然报这个错误来判定) 2. UPC和品牌不对应导致, 如果第一次替换了UPC还是报这个错误。尝试替换品牌试一下 3. 用户短时间内大量通过UPC创建ASIN, 导致亚马逊平台不让用户创建, 这个就需要等待一段时间。 #### # code:8804,message:The variation family you are trying to create (Parent SKU: cuxingzhijia-yzh-st) contains inconsistent information. [brand] must be the same for all members of the family. Your products were listed successfully but the variation relationship was not created. Please ensure all products in a variation family have the same value for [brand].; > 品牌问题导致 >请用户检查 后台是否已存在对应主SKU的不完整信息(或后台草稿箱的SKU信息) 看下后台的不完整信息里面 brand 填写的是什么 >修改系统这边的brand 刊登。 >或者 直接修改系统这边的SKU(包括主子SKU)刊登试下 #### # 失败原因:code:8016,message:The product data provided was insufficient for creating a variation (parent/child) relationship for SKU: [gerwdsgvtre]. Ensure that the parent and child share the same variation theme and that there is a submission for variation theme attributes (eg. size and color for size_colour variation theme).; code:8016,message:The product data provided was insufficient for creating a variation (parent/child) relationship for SKU: [gerwdsgvtre]. Ensure that the parent and child share > 检查用户刊登数据, color_name, size_name, color_map均是否填写 #### # code:98888 Error Attribute 'hazmat' does not have the expected value(s). > 让用户填写hazmat_united_nations_regulatory_id这个字段值即可 #### # 【德国】上传基本信息失败:code:90111,message:The Grundpreisangabe: Volumen / Gewicht / Länge / Fläche oder Stückzahl je Packung field contains an invalid value: unit. The value "unit" is not a valid DECIMAL.; > unit_count 这个属性填数字 unit_count_type 这个属性填单位 用户填返了,改过来再试试 #### # code:5886,message:We have identified that you are attempting to contribute to a restricted generic ASIN on which you have not contributed in the past, such as by trying to change the detail page create or update an offer. You must create a new ASIN by following the process as outlined in our Add a Product tool, to be able to make changes, such as extending this ASIN to a new store, creating a new variation relationship, updating ASIN attributes, or adding offers to sell the product >1.这个报错是 EAN 无效 需要更换EAB 2.如果用户品牌是 Generic或 无品牌的情况就可能会出现 EAN 有效 但是因为品牌无效 与品牌冲突 一直报错 5886 解决方案: 上策 用户注册自己的店铺品牌 使用自己的店铺品牌 刊登 下策 一直更换EAN 刊登 #### # 上传数据异常 ==> com.mabang.base.exception.BizException: 500:######调用亚马逊接口createFeed失败, 失败信息:{"amazonHeader":{"x-amz-apigw-id":"CHuctFLsPHcFeZQ=","Connection":"close","x-amzn-RequestId":"567b2bb1-4442-44b7-bf1b-86b4f701659b","Content-Length":"130","Date":"Tue, 21 Mar 2023 07:34:02 GMT","X-Amzn-Trace-Id":"Root=1-64195dea-1cd53bca6a39c6ce34344644","Content-Type":"application/json","x-amzn-RateLimit-Limit":"0.0083"},"errors":[{"code":"InvalidInput","details":"","message":"Invalid request parameters"}]} at > 请用户先按以下提示查看解决:1.店铺重新授权 2.请检查信用卡是否过期 3.前往后台检查该店铺是否已被封或账户是否已被冻结 > 如果都没问题 请用户直接在平台尝试刊登看是否有问题。有问题就直接去询问平台需要如何做店铺设置修改 > 如果用户平台尝试刊登都没问题,那么请把这个requestId: ${requestId} 给到平台询问为什么会刊登失败 #### # 8603 Error You cannot change the 'item_classification' for SKU 'shoudiantong-au' by submitting a feed with a new value. To change this attribute, do the following: 1) Submit a feed to delete the existing SKU. 2) Submit a feed to recreate the SKU with the updated 'item_classification'. > 已经存在的商品不能修改类目, ean/upc码等信息。以下两种方案任选一个: 1.建议用户使用新的sku去做新商品刊登。2.去平台把已经存在的sku删除,再刊登即可 #### # 8026 Error You are not authorized to list products in this category or You are not authorized to list products in this product line or category > 让用户看下是否品牌没有授权当前分类刊登。如果已经授权询问用户是否修改condition_type字段。修改当前字段也会触发该问题 #### # 如果用户选择FBA但是刊登商品变成FBM,一定要先确认结果文件是否有那个字段导致fulfillment_center_id 失效。 > 比如 Warning The value in the "Quantity" (0) field was ignored because it is invalid or conflicts with the value in another field.: [Fulfillment Center ID = "AMAZON_NA"]. 这就是quantity字段填写了以后导致fulfillment_center_id失效。让商品默认变为FBM # 企业微信报警问题 Q&A ### 一. The access token you provided is revoked, malformed or invalid > 这个错误直接忽略。这是店铺自身问题,如果coding提过来直接回复让用户检查店铺授权或者信用卡等认证信息是否过期,欠费 ### 二.Access to requested resource is denied. > 同上 ### 三.Invalid request parameters > 一般是调用刊登createFeed接口报出来的。原因同上 ### 四.报刊登重试次数达到上限或超过重试次数 1. 任务是文件刊登(type = 2), 如果是文件刊登那么忽略即可。有定时任务会售后处理 2. 任务是普通刊登(type = 1), 分两种情况 : 2.1 如果该任务publish_result_file字段有值就代表是平台方报错,是重试任务。这种直接忽略, 也有定时任务售后收尾 2.2 如果该任务publish_result_file字段没有值,那么就需要重试该任务。后门接口(post):http://mdc-open-api.mabangerp.com/mps-amazon-product-service/admin/retryTaskById?processId=${该任务processId}&step=${步骤数}进行重置即可。直到任务状态变更为止。但如果一直没有变更。那么就直接调用后门接口(post):http://mdc-open-api.mabangerp.com/mps-amazon-product-service/admin/resetTaskById?processId=${processId},重置任务重新跑起来 ps: 如果任务状态一直没有变更,需要查看日志上下文是否重复消费导致。后门接口(post):http://mdc-open-api.mabangerp.com/mps-amazon-product-service/admin/deleteTaskCacheByTaskId?taskId=${任务id} 清除redis内的重复消费key。这样消息就能消费下去进入逻辑责任链执行业务 ### 五. 同步店铺商品发送单条同步消息失败 1. 大概率都是RocketMQ超时导致,一般不用考虑。如果用户问起来可以让他重新做一次店铺同步试试。因为出现这个情况大概率是MQ里面有N多大商品店铺同时点击同步,导致MQ在某一瞬间因为消息很多,jar包内在获取某个group消息时会卡很久。从而导致超过传递下去的timeout参数,进入超时异常 2. 重启pod节点时也有概率出现。这种情况就需要记录下shopId。然后等消息队列(ONLINE_PRODUCT_SYNC_PRODUCT_AMAZON)里面的消息消费完毕以后去调度中心内t_product_shop_item, ERP内的mabang_item.DB_Shop表把同步状态改一下(因此重启前最好观察一下是否有店铺在进行同步)。然后让用户重新点店铺同步即可 ### 六. null######解析结果文件失败:Excel刊登id:${processId} 1. 这种都是任务重试时的问题。看到这种直接调用后门接口(post):http://mdc-open-api.mabangerp.com/mps-amazon-product-service/admin/resetTaskById?processId=${processId},让任务重新跑起来 ### 七. 写入Excel文件到腾讯云失败,请至调度中心检查日志,msg:通过网络图片地址上传时发生CosClientException异常:httpClient execute occur a IOexcepiton. httpRequest 1. 这种是文件上传COS问题。直接调用后门接口(post):http://mdc-open-api.mabangerp.com/mps-amazon-product-service/admin/resetTaskById?processId=${processId},让任务重新跑起来
thread
2023年8月24日 16:23
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码