最近在对接电商供应链,说说开放平台API接口
B2B电商开放平台的设计需要从以下几面去思考:
-
开放平台API接口的设计,主要是从功能需求的角度,设计满足业务需求的接口及对应的字段;
-
平台与商家之间信息的对接,对接的方法有哪些?对接过程中需要可能会遇到什么问题;
-
同步开关及权限的设计,处理信息自动同步和手动设置之间的矛盾。
一、开放平台API接口的设计
1. 商品
商品方面的同步,主要是考虑到:
-
商品的上传;
-
商品价格同步;
-
商品批号同步;
-
商品上下架同步。
淘宝京东拼多多API接入测试
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接口对ERP系统进行开发,实现和平台的对接,适用于有专业技术开发能力的商家;
-
平台统一开发服务系统,由平台人员实施商家ERP与平台的对接,适用于无专业的技术对接能力,有ERP系统且大批量信息不适合手工操作;
-
手动在平台提供的商家操作后台,通过导入excel或直接手动操作的方式,直接在平台上创建或修改信息,适用于无专业的技术对接能力,商品SKU数和订单数比较少的商家,同时也可作为技术对接的替代办法。
2.1 API接口对接
商家存在技术开发能力的情况下,按照平台提供的接口调用说明文档,进行业务系统的设计与修改,通过直接请求调用API接口并获取返回数据,实现商家与平台之间的信息流通。
2.2 平台统一服务系统
主要的实现方式为:平台技术人员对商家ERP系统业务逻辑进行修改,并在商家的ERP系统上单独创建符合平台接口功能的视图,存储过程或中间表,调用平台的接口传递视图,存储过程中的信息给平台,并将平台接口的响应数据存储在中间表中。
由于不同的ERP系统的数据库结构,业务逻辑会有一定的差异,所以平台需要研究不同客户的ERP系统,进行统一的设计。
2.3 商家后台手动操作
商家后台手动操作不仅仅适用无法进行系统对接的客户,同时也是作为接口同步出故障时的临时替代办法,所以手动操作的功能需要满足系统对接的所有需求。
手动操作的功能包括:创建新商品(批量上传),商品的上下架,商品价格修改,商品库存修改,ERP客户编码上传,订单批量下载,订单状态更改等。
三、同步开关及权限的设计
由于商家的商品、客户、价格、库存、订单等信息都有手动同步和自动同步两种模式,当两种模式同时存在并进行的同时,可能会导致数据比较乱,而且不方便,如:由于库存不足,页面无法进行下单的操作。而此时商家需要进行负卖,那边这个时候需要手动修改库存,但是修改完之后,库存很快会被同步系统传过来的新库存数据给覆盖。
为了解决以上的问题,我们需要根据不同的功能模块分别做一个开关,即针对某个功能设置是否开启自动同步。如刚刚那个例子,如果此时该商品需要临时修改库存并维持一段时间(保证客户有足够的时间下单付款),可以暂时关闭库存同步服务。
此外,权限的设计可以设计得更细,即针对某个商品设置是否自动同步库存,这样的话,在关闭该商品库存同步功能的时候,不会影响其他商品库存的同步
相关文章:

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

【FusionInsight 迁移】HBase从C50迁移到6.5.1(02)C50上准备FTP Server
【FusionInsight 迁移】HBase从C50迁移到6.5.1(02)C50上准备FTP Server HBase从C50迁移到6.5.1(02)C50上准备FTP Server登录老集群FusionInsight C50的Manager准备FTP User准备FTP Server HBase从C50迁移到6.5.1(02&am…...

Java操作符学习笔记
1、布尔类型的逻辑操作符和按位操作符 & 和 &&、|| 和 | 其实是两种操作符。在使用逻辑判断时,有时不希望产生短路作用,会对两个布尔类型值使用单个的 & 或 |运算。这让我一直将单个 & 和 | 当成时逻辑操作符的一种,而事…...

【STM32】学习笔记-PWR(Power Control)电源控制
PWR(Power Control)电源控制 PWR(Power Control)电源控制是一种技术或设备,用于控制电源的开关和输出。它通常用于电源管理和节能,可以通过控制电源的工作状态来延长电子设备的使用寿命,减少能…...

安卓 MeasureCache优化了什么?
安卓绘制原理概览_油炸板蓝根的博客-CSDN博客 搜了一下,全网居然没有人提过 measureCache。 在前文中提到过,measure的时候,如果命中了 measureCache,会跳过 onMeasure,同时会设置 PFLAG3_MEASURE_NEEDED_BEFORE_LAYOU…...

docker save docker export 区别
docker save用于导出镜像到文件,包含镜像元数据和历史信息;docker export用于将当前容器状态导出至文件,类似快照,所以不包含元数据及历史信息,体积更小,此外从容器快照导入时也可以重新指定标签和元数据信…...

音频基础知识
文章目录 前言一、音频基本概念1、音频的基本概念①、声音的三要素②、音量与音调③、几个基本概念④、奈奎斯特采样定律 2、数字音频①、采样②、量化③、编码④、其他相关概念<1>、采样位数<2>、通道数<3>、音频帧<4>、比特率(码率&#…...

TensorFlow(R与Python系列第四篇)
目录 一、TensorFlow介绍 二、张量 三、有用的TensorFlow运算符 四、reduce系列函数实现约减 1-第一种理解方式:引入轴概念后直观可理 2-第二种理解方式:按张量括号层次的方式 参考: 一、TensorFlow介绍 TensorFlow是一个强大的用于数…...

华为数通方向HCIP-DataCom H12-821题库(单选题:261-280)
第261题 以下关于IPv6过渡技术的描述,正确的是哪些项? A、转换技术的原理是将IPv6的头部改写成IPv4的头部,或者将IPv4的头部改写成IPv6的头部 B、使用隧道技术,能够将IPv4封装在IPv6隧道中实现互通,但是隧道的端点需要支持双栈技术 C、转换技术适用于纯IPv4网络与纯IPv…...

论文《基于概率标签估计的半监督日志缺陷检测》翻译
论文《Semi-supervised Log-based Anomaly Detection via Probabilistic Label Estimation》翻译 Semi-supervised Log-based Anomaly Detection via Probabilistic Label Estimation翻译...

ajax day2
1、 2、控制弹框显示和隐藏: 3、右键tr,编辑为html,可直接复制tr部分的代码 4、删除时,点击删除按钮,可以获取图书id: 5、编辑图书 快速赋值表单元素内容,用于回显: 6、hidden …...

互联网摸鱼日报(2023-09-04)
互联网摸鱼日报(2023-09-04) 36氪新闻 腾讯游戏的棋中妙手 逐一解读北交所8大改革组合拳 本周双碳大事:全国碳市场清缴履约工作全面展开;宁德时代在成都成立新能源研究院;我国首个万吨级光伏发电直接制绿氢项目投产 你在上海 city walk&a…...

UG\NX CAM二次开发 遍历组中的工序 UF_NCGROUP_ask_member_list
文章作者:代工 来源网站:NX CAM二次开发专栏 简介: UG\NX CAM二次开发 遍历组中的工序 UF_NCGROUP_ask_member_list 效果: 代码: void GetAllOperTag(tag_t groupTag, vector<tag_t> &vOperTags) {int count=0;tag_t * list;UF_NCGROUP_ask_member_li…...

适配器、装饰器模式
一、装饰器模式 向一个现有的对象增加其功能而不改变其结构,属于类的包装...

Netty服务端启动的整体流程-基于源码4.1.96Final分析
Netty采用的是主从Reactor多线程的模型,参考Scalable IO in Java,但netty的subReactor为一个组 一、从FileServer服务器示例入手 public final class FileServer {static final boolean SSL System.getProperty("ssl") ! null;// Use the …...

预训练Bert添加new token的问题
问题 最近遇到使用transformers的AutoTokenizer的时候,修改vocab.txt中的[unused1]依然无法识别相应的new token。 实例: 我将[unused1]修改为了[TRI],句子中的[TRI]并没有被整体识别,而是识别为了[,T,RI,]。这明显是有问题的。…...

非常典型和高效的枚举类写法
目录 1、讲讲好处 2、例子 (1)枚举类: (2)DTO类: 3、根据上面例子进行具体讲解 1、讲讲好处 在使用这种标准枚举模式编写业务逻辑时,可以直接通过枚举成员来表示状态,不需要担心底层的 value 或描述信…...

kafka-- kafka集群环境搭建
kafka集群环境搭建 # 准备zookeeper环境 (zookeeper-3.4.6) # 下载kafka安装包 https://archive.apache.org/dist/kafka/2.1.0/kafka_2.12-2.1.0.tgz # 上传 : 172.16.144.133 cd /usr/local/softwaretar -zxvf /usr/local/software/kafka_2.12-2.1.0.tgz -C /usr/local…...

3.flask-sqlalchemy ORM库
介绍 Flask-SQLAlchemy是一个用于Flask的扩展,它提供了一个便捷的方式来处理数据库操作。Flask-SQLAlchemy基于SQLAlchemy,一个功能强大的Python SQL工具包和对象关系映射(ORM)系统 官网文档:http://www.pythondoc.com/flask-sql…...

mac 安装 homebrew
摘要: 本文主要是下载安装包安装homebrew,然后配置环境变量Path。检验是否安装成功。 homebrew地址:macOS(或 Linux)缺失的软件包的管理器 — Homebrew 在终端命令下载安装: /bin/bash -c "$(curl…...

R语言应用interactionR包进行亚组相加交互作用分析
在统计分析中交互作用是指某因素的作用随其他因素水平变化而变化,两因素共同作用不等于两因素单独作用之和(相加交互作用)或之积(相乘交互作用)。相互作用的评估是尺度相关的:乘法或加法。乘法尺度上的相互作用意味着两次暴露的综合效应大于(…...

mysql 数据库面试题整理
Mysql 中 MyISAM 和 InnoDB 的区别 1、InnoDB 支持事务MyISAM 不支持 2、InnoDB 支持外键MyISAM 不支持 3、InnoDB 是聚集索引,MyISAM 是非聚集索引 4、InnoDB 不保存表的具体行数 5、InnoDB 最小的锁粒度是行锁,MyISAM是表锁 mysql中有就更新…...

LeetCode-435-无重叠区间
题目链接: 力扣435 -无重叠区间 解题思路:和之前的合并区间、汇总区间都比较相似, 先对二维数组排序,按照左边界升序;当 当前区间的左区间 < 前一个区间的右区间,说明有重叠,res1,还要更新当…...

记录深度学习常用指令(一)
一、创建Conda虚拟Python环境 conda create -n [仓库名字] python[版本]二、激活环境 conda activate [仓库名字]三、安装PyTorch PyTorch官方 GPU: conda install pytorch1.11.0 torchvision0.12.0 torchaudio0.11.0 cudatoolkit11.3 -c pytorchCPU࿱…...

Shell脚本练习——系统应用相关
显示系统信息 [rootwenzi data]#cat systemInfo.sh #/bin/bash RED"\E[1;31m" GREEN"\E[1;32m" END"\E[0m" echo -e "$GREEN----------------------Host systeminfo--------------------$END" echo -e "HOSTNAME: $REDho…...

同创永益入选首批“金融数字韧性与混沌工程实践试点机构”
8月16日下午,由北京国家金融科技认证中心、北京国家金融标准化研究院联合主办的“传递信任 服务发展”金融科技标准认证生态大会在太原成功举办。中国金融电子化集团有限公司党委书记、董事长周逢民,中国科学院院士冯登国,中国工商银行首席技…...

Hive 表注释乱码解决
文章目录 出现原因MySQL 字符集修改调整元数据库字符集测试 出现原因 一般 Hive 的元数据信息都存储在 MySQL 中,但 MySQL 数据库中的 character_set_server 和 character_set_database 参数,默认都为 latin1 字符集,这两个参数决定了服务器…...

【搭建私人图床】使用LightPicture开源搭建图片管理系统并远程访问
文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 现在的手机越来越先进,功能也越来越多,而手机…...

Ubuntu入门04——目录与文件
目录 1.显示当前工作目录 2.更改目录 3.创建工作目录 4.删除工作目录 5.移动文件或者文件夹 6.文件夹and文件查看命令 7. 回到根目录,回到上一级 8.删除工作目录 9.查看目录和文件 10.以树状图列出目录内容 11.文件查找 12.在数据库中查找文件或目录 1…...

深度学习中有哪些超参数,都有什么作用
深度学习中有许多超参数需要设置,它们会对模型的性能和训练过程产生重要影响。以下是一些常见的超参数及其作用: 学习率(Learning Rate):控制参数更新的步长。较小的学习率可以使模型收敛更稳定,但可能需要…...