电子商务平台对接电商供应链,不得不说的开放平台电商API接口
B2B电商开放平台的设计需要从以下几面去思考:
-
开放平台API接口的设计,主要是从功能需求的角度,设计满足业务需求的接口及对应的字段;
-
平台与商家之间信息的对接,对接的方法有哪些?对接过程中需要可能会遇到什么问题;
-
同步开关及权限的设计,处理信息自动同步和手动设置之间的矛盾。
一、开放平台API接口的设计
1. 商品
商品方面的同步,主要是考虑到:
-
商品的上传;
-
商品价格同步;
-
商品批号同步;
-
商品上下架同步。
1.1.1 商品的上传
商品上传同步的目的在于把商家需要出售的商品同步到平台,平台把商家上传的商品显示在前端页面,下单成功之后,商品明细信息跟着订单信息一起传给商家。
商品上传过程中需要处理的问题:
-
商品上传的信息需要包含“ERP商品ID”作为该商品的唯一标识;
-
很多平台都会存在基础商品,例如药品,食品,水果等;如果出售的标的是可以明确定义的,商家只是作为一个经销商存在的情况下,平台可以统一定义基础商品;
-
在存在基础商品的情况下,商家的上传的商品信息需要与平台的基础商品匹配生成出售的SKU。
匹配的方法可以分为两种:
-
可以根据商品的条码,批准文号,规格,厂家等进行匹配,但是要求根据这些条件能完全确定这个商品和基础商品是同一个商品;
-
对于一些商品来说,没有确定的规格供程序完成商品的匹配的时候,需要人工介入进行判断,然后在上传的时候直接附加上“基础商品ID”,通过“基础商品ID”直接进行关联。
正常情况下,商品上传之后不能马上上架并出售,而是先要同步库存之后通过调取批量上下架接口上架或手动点击上架。
如果商品上传之后如果需要直接可以上架出售,接口必须还包含商品销售信息如:价格和库存,所以商品上传的接口必须包含默认单价和库存,其中默认单价必填,库存可以为空并默认为0(同时可以设置规则:库存为0的商品不自动上架销售而库存不为0的商品自动上架销售)。
平台不存在基础商品的时候,不提倡商品直接上架,而是需要审核,因为可能商家上传的商品是平台不允许销售的。
1.1.2 修改商品价格
商家在平台出售的商品的价格并不是固定的,对于SKU比较多的商家而言,商品的价格往往是在ERP直接进行修改,然后同步到各个第三方平台,所以价格同步是不可或缺而且对于实时性,准确性的要求比较高。
另一方面,商品的销售价格往往由于成本的因素或市场的侧重点不同,往往需要针对不同的地区,客户类型设置不同的价格,而这些设置同样往往是在ERP中设定好的,同样需要同步到平台。
商品价格同步需要处理的问题:
-
接口需要能满足商品需要同时修改多种类型的价格,包括默认单价,建议零售价,地区价/客户等级价的需求;
-
对于地区价或客户等级价,需要在平台中定义好规范的地区组或客户组,同步价格的时候,接口中存在字段“地区组”或“客户组”的ID来与平台的商品价格进行匹配。
地区组的概念:由于行政区划的单位比较多,所以不可能为每一个行政区设置一个价格,通常由于不同商品对于地区价的定义都是一样的,如在A,B两个商品在广东,广西的定价一样而不同于其他地区,那么就可以将广东和广西设置为一个地区组;商品就可以针对每个地区定义价格了
1.1.3 商品批号同步
同一个商品可能由于生产批次不同会存在不同批号的货品,尤其是对于存在有效期的商品,商品的有效期是和批号是直接挂钩的;商品的批号上传至平台之后,可以直接展示在商品详情中,客户能知道其购买商品有效期的情况,在生成订单之后可以跟着订单信息一起传至商家ERP系统中,作为商家发货的依据。
商品批号同步需要处理的问题:
-
接口需要传的字段主要包括批号,生产日期和有效期;
-
每次通过接口同步批号的时候,应当只同步正在出售的批号(可以根据库存是否为0判断),且每次全量更新,数据库里面不能存在冗余批号数据;
-
批号同步除了每次都全量更新之外,也可以选择每次只更新最新的或库存最大的批号。
1.1.4 商品上下架同步
商品上下架同步接口主要用来进行批量的商品下架或下架的操作,尤其是新商品刚刚上传的时候,商品处于待上架的状态,需要进行批量的上下架;此外,如需同时上下架多个商品,通过接口操作会比在界面上一个个点击的效率更高。
2. 库存
库存同步
库存同步是使用最频繁且实时性,准确性要求最高的接口;库存同步的不及时或不准确可能会造成商品负卖或客户无法下单购买。
库存同步需要处理的问题:
-
同步时间间隔必须尽可能短且准确;
-
有些ERP系统库存是和批号关联的,需要汇总求和该商品相关批号的库存。
3. 客户
商户ERP客户同步
正常来说,商户的ERP系统中保存的客户是不需要传给平台,只需要订单存在收货人,收货电话和送货地址及客户在下单时留的发票信息,即可完成发货的操作。
但对于一些特殊产品和特殊行业来说,由于商业原因或行业规则需要(如医药B2B采购要求采购商有相关资质证件),ERP系统中生成订单时需要先存在ERP客户信息,那么ERP客户编号必须先给到平台,然后与平台的客户进行匹配映射,在同步订单需要同时把ERP客户信息一起传输给ERP,商户ERP根据ERP客户信息生成新的ERP订单。
商户ERP客户同步需要处理的问题:
ERP客户同步至平台有多种方案:
-
平台生成订单后,商户看到订单对应的客户资料之后,基于平台的客户资料补充ERP客户编号,平台将订单信息同步至商户ERP时顺便将ERP客户编号也一起传过去,商户ERP可根据这个ERP客户编号生成ERP订单;
-
商户ERP预先直接将ERP中所有的客户全部同步至平台,并与平台客户做匹配,订单生成后若下单客户存在ERP客户编号,则该订单直接同步至ERP系统生成ERP订单,否则需要先在ERP系统中创建客户资料并同步至平台(ERP客户资料和平台客户可基于营业执照的统一信用代码进行匹配)。
方案1可以更好地保护商户的客户资料,保证不外泄;方案2会比较方便,需要手动操作的比较少。
4. 订单
订单方面的同步,包含以下几个方面:
-
查询订单列表;
-
同步物流信息;
-
同步发货信息;
-
同步ERP订单状态。
1.4.1 查询订单列表
该接口用于商家ERP系统请求同步平台已付款的订单,查询订单列表接口需要处理的问题:
-
接口需要支持根据同步状态查询订单,查询订单成功后,平台方需要将对应的订单同步状态改为“已同步”,这样可以保证每次查询的时候至查询“未同步”的订单;另外,如需查询已同步的订单也可指定对应的状态进行查询。
-
查询的方式需要支持按照条件查找,如:开始时间、结束时间、订单状态、同步状态等,同时也需要支持按照订单编号精确查询。
-
响应的数据应分为四部分:订单基本信息;订单金额信息;送货信息;发票信息;订单商品项信息。其中送货信息和发票信息一般在商户的ERP系统中已存在,但可能与平台的信息不一致所以也需要一起返回给ERP系统。
-
商品项信息可以包括发货的批号,客户将客户在下单时看到的批号信息传输给商户ERP,这样能很大程度减少客户退款率。
1.4.2 物流信息同步
订单在商户ERP系统发货后,需传递对应的物流信息给平台,用于展示给客户查看,物流信息同步接口需要处理的问题:
-
商户ERP系统中的物流商与平台方的物流商必须一一对应,才能进行物流信息的传递和展示,所以平台可以提供一份物流商编码和物流商名称给商户ERP,ERP发货时将对应的物流商编码及订单号传给平台。
-
物流信息同步也代表着订单肯定是已经发货了,如果不设计其他更改订单状态的接口的话,可以在ERP上传物流信息的时候,平台自动将订单将订单状态改为“已发货”。
1.4.3 发货信息同步
对于B2B电商来说,在平台产生的订单传到ERP系统的时候,可能产生以下问题:
-
同一个商品可能购买多个,可能由于库存的原因导致部分商品缺货,所以在发货的时候,可能会少发某种商品或某种商品的一部分数量;
-
商户ERP中商品由于不同批次的原因,生产日期和有效期可能会不一致,用户付款成功后,需要看到发货信息中商品批号对应的有效期的情况,所以商户ERP中需要在发货时传递相关信息到平台。
发货信息同步接口主要是在ERP系统订单出库之后,将出库的商品明细传至平台,需要传递的字段包括:ERP商品编号、发货数量、批号、生产日期、有效期。
1.4.4 同步ERP订单状态
ERP订单状态主要指订单在ERP中处理环节的各个状态,订单传至ERP系统之后,可能需要进行提单、分拣、出库、配送等环节,在客户收到货之后,物流公司也会反馈回签收信息。
ERP订单状态同步至平台后有以下两方面作用:
-
平台可根据ERP订单状态单独生成物流信息,展示给客户,如:ERP订单状态变为“已提单”则物流信息新增一条:订单已处理,商家拣货中。
-
特定的ERP订单状态可以与平台订单状态关联起来,如:ERP订单状态变为”已签收”,平台接收到该条ERP订单状态的信息之后,可以将订单状态改为“交易完成”。
相关文章:

电子商务平台对接电商供应链,不得不说的开放平台电商API接口
B2B电商开放平台的设计需要从以下几面去思考: 开放平台API接口的设计,主要是从功能需求的角度,设计满足业务需求的接口及对应的字段; 平台与商家之间信息的对接,对接的方法有哪些?对接过程中需要可能会遇到…...

【JAVA学习笔记】 57 - 本章作业
项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter14/src/com/yinhai/homework 1. (1)封装个新闻类,包含标题和内容属性,提供get, set方法, 重写toString方法,打印对象时只打印标题; (2)只提供…...

【题解】[GenshinOI Round 3] P9816 少项式复合幂
题目链接 分析 首先这题给了很大的提示信息 注意 m 和 p 的范围 , 很自然的想到可以先把所有可能的 f ( x ) f(x) f(x) 算出来. 思维误区 有些人在算完 f ( x ) f(x) f(x) 之后可能就会去思考找环的问题,然后一些码力弱的大佬就会祭掉. 在经过仔细的观察之后…...

手写数字识别--神经网络实验
实验源码自取: 神经网络实验报告源码.zip - 蓝奏云 上深度学习的课程,老师布置了一个经典的实验报告,我做了好久才搞懂,所以把实验报告放到CSDN保存,自己忘了方便查阅,也为其他人提供借鉴 由于本人是小白…...

双11消费遇冷?如何让消费回归心智原点
近一年来,小红书话题「重新养育自己」引热议。直面成长缺憾,不少人探寻解决方案,即像对待新生命般,不论是衣食住行还是心灵,重新关照自己。 借此,本期千瓜将锁定小红书热门话题背后的消费观转变࿰…...

一分钟了解:什么是Image Matting?
1. 基本概念 Image Matting是图像处理领域的一个基本任务,意为“图像背景抠出”或者“抠图”。这项任务在图像处理、影视制作领域广泛应用。比如,拍电影时常用的扣绿,就是演员在绿幕前面表演,后期再把人物抠出来放到一个新的背景…...

微信小程序 跳转客服页面
前言 小程序 用户反馈 没有页面设计 可以直接跳转小程序指定客服页面 <button class"contactBtn"open-type"contact" contact"handleContact" session-from"sessionFrom">...

10个简单增删改查的免费Spring Boot源代码项目
此页面包含用于学习目的的免费 Spring boot 项目列表。每个 Spring boot 项目的源代码都托管在 GitHub 存储库上,因此您可以免费下载或克隆源代码并亲身体验 Spring boot 框架。 1.员工管理应用程序(ReactJS Spring Boot CRUD全栈应用程序) …...

mysql数据表设计
命名 mysql表名的命名规范为表名可以用 t_ 、tb_的前缀,或者是业务模块前缀。比如t_order。 有些项目也会使用 tt_、tm_、 ts_ 等前缀,根据项目的习惯命名就好了。 主键: AUTO_INCREMENT 表示自增,UNSIGNED 表示无符号…...

pytorch复现4_Resnet
ResNet在《Deep Residual Learning for Image Recognition》论文中提出,是在CVPR 2016发表的一种影响深远的网络模型,由何凯明大神团队提出来,在ImageNet的分类比赛上将网络深度直接提高到了152层,前一年夺冠的VGG只有19层。Image…...

【数据库】形式化关系查询语言(一):关系代数Relational Algebra:基本运算、附加关系代数、扩展的关系代数
目录 一、关系代数Relational Algebra 1. 基本运算 a. 选择运算(Select Operation) b. 投影运算(Project Operation) 组合 c. 并运算(Union Operation) d. 集合差运算(Set Difference Op…...

【计算机网络】计算机网络和因特网
一.基本术语介绍 端系统通过通信链路(communication link)和分组交换机(packet switch)连接到一起,连接这些端系统和分组交换机的物理媒体包括:同轴电缆,铜线,光纤和无线电频谱。而…...

JAVA面经整理(9)
一)什么是Spring?它有什么优点? spring是一款顶级的开源框架,他是包含了众多工具方法的IOC容器,Spring中包含了很多模块,比如说Spring-core,Spring-context,Spring-aop,Spring-web,…...

IPD(集成产品开发)模式下的产品研发流程
IPD(集成产品开发)涵盖了产品从创意提出到研发、生产、运营等,包含了产品开发到营销运营的整个过程。围绕产品(或项目)生命周期的过程的管理模式,是一套生产流程,更是时下国际先进的管理体系。I…...

Flutter GetX的使用
比较强大的状态管理框架 引入库: dependencies:get: ^4.6.6一.实现一个简单的demo 实现一个计数器功能 代码如下: import package:flutter/material.dart; import package:get/get.dart;void main() > runApp(const GetMaterialApp(home: Home()…...

【Amazon】AWS实战 | 快速发布安全传输的静态页面
文章目录 一、实验架构图二、实验涉及的AWS服务三、实验操作步骤1. 创建S3存储桶,存放网站网页2. 使用ACM建立域名证书3. 设置Cloudfront,连接S3存储桶✴️4. 设置Route53,解析域名服务5. 通过CLI工具上传网页更新内容【可选】 四、实验总结 …...

前后端登录的密码加密和解密
在一个典型的前后端应用中,前端对密码进行加密后传给后端,后端再进行解密或验证。这通常涉及前端加密、后端解密或验证的相互配合。下面是一个基本的流程: 前端加密: 前端可以使用各种加密库或算法对密码进行加密。常见的是使用哈…...

使用 Curl 和 DomCrawler 下载抖音视频链接并存储到指定文件夹
项目需求 假设我们需要从抖音平台上下载一些特定的视频,以便进行分析、编辑或其他用途。为了实现这个目标,我们需要编写一个爬虫程序来获取抖音视频的链接,并将其保存到本地文件夹中。 目标分析 在开始编写爬虫之前,我们需要了…...

取消Excel打开密码的两种方法
Excel设置了打开密码,想要取消打开密码是由两种方法的,今天分享这两种方法给大家。 想要取消密码是需要直到正确密码的,因为只有打开文件才能进行取消密码的操作 方法一: 是大家常见的取消方法,打开excel文件之后&a…...

多测师肖sir_高级金牌讲师_jmeter 反向代理录制脚本
jemeter自带的录制脚本功能,是利用代理服务器来进行录制的 1,新建一个线程组 2,新建一个代理服务器 右击工作台-添加-非测试元件-http代理服务器 3, 配置http代理服务器 端口: 默认为8888,可修改。但…...

网络取证-Tomcat-简单
题干: 我们的 SOC 团队在公司内部网的一台 Web 服务器上检测到可疑活动。为了更深入地了解情况,团队捕获了网络流量进行分析。此 pcap 文件可能包含一系列恶意活动,这些活动已导致 Apache Tomcat Web 服务器遭到破坏。我们需要进一步调查这一…...

3.Linux常用操作(传输、crontab定时、匹配日期删除文件等)
1. 服务器之间传输文件 1.1 传输文件到本服务器 scp -P 19622 -C dockeruser192.168.100.96:/home/dockeruser/lgr/lgr.dmp /home/dockeruser/lgr描述: 用dockeruser账号登录端口号为19622的192.168.100.96服务器,将此服务器的/home/dockeruser/lgr/l…...

ChatGPT对未来发展的影响?一般什么时候用到GPT
ChatGPT以其强大的自然语言处理能力对未来的发展具有重要影响。以下是ChatGPT的潜在影响和一般使用情况: 改善自然语言理解和生成:ChatGPT和类似的模型可以改善机器对人类语言的理解和生成。这将有助于改进各种应用领域,包括智能助手、聊天机…...

在Win10系统进行MySQL的安装、连接、卸载
在Win10系统进行MySQL的安装、连接、卸载 MySQL的安装 本教程在Win10系统下安装部署MySQL-8.0.32版。 MySQL安装参考地址 MySQL安装包地址 提取码: rnbc。 选择下载mysql-installer-community-8.0.32.0安装包。 连接数据库 方式一: 安装后,可以在开始…...

Windows下pm2调用npm和nuxt的办法
pm2调用npm pm2 start C:\Users\xiao\AppData\Roaming\npm\node_modules\npm\index.js --name test -- run start 其中index.js的路径就是npm全局安装的路径,可通过以下命令获取 npm root -g require全局npm模块的一种方法 新建文件pm2npm.js const root req…...

本地仓库转为git仓库推送到gitee
通常有两种获取 Git 项目仓库的方式: 方式一:将尚未进行版本控制的本地目录转换为 Git 仓库; 方式二:从其它服务器 克隆 一个已存在的 Git 仓库。 两种方式都会在你的本地机器上得到一个工作就绪的 Git 仓库。 方式一:…...

CSS以及JavaScript
目录 一.CSS 1.overflow溢出属性 2.定位 二.JavaScript基础 1.JavaScript引入方式 2.JavaScript数据类型 常用方法: 字符串常用方法: 在js里,什么是真,什么是假 数组的常用方法 运算符 (1)算数运…...

JVM——类的生命周期(加载阶段,连接阶段,初始化阶段)
目录 1.加载阶段2.连接阶段1.验证2.准备3.解析 3.初始化阶段4.总结 类的生命周期 1.加载阶段 ⚫ 1、加载(Loading)阶段第一步是类加载器根据类的全限定名通过不同的渠道以二进制流的方式获取字节码信息。 程序员可以使用Java代码拓展的不同的渠道。 ⚫ 2、类加载器在加载完类…...

CSS中实现元素居中的几种方法总结
一、使用 text-align: center 居中 使用 text-align: center; 可以在CSS中实现内联元素的水平居中。这个技术利用了CSS的 text-align 属性,通过对元素的文本对齐方式进行调整来实现居中效果。注:只展示主要代码。 <div class"container"&…...

保护听力戴什么耳机比较好?开放式耳机能保护听力吗?
如果想要在保护听力的前提下戴耳机,那么我是推荐戴骨传导耳机的!!! 所谓骨传导即是一种声音传递的方式,跟普通耳机不同的是传统耳机是通过空气将声音通过耳膜以此完成传递,而骨传导耳机的原理是将声音以不同…...