@my943813636
2020-02-13T08:52:05.000000Z
字数 4992
阅读 588
对 优惠券 促销 购物车 配送方式 积分使用 创建订单. 相关功能的接口
提供 必要字段的 描述和类型枚举,作用描述,数据类型, 使用条件, 返回错误码 作为参考
type 类型 枚举值 购物车 商品, 需要的促销类型
@促销[] -- (促销列表)
参数错误找不到对应数据
这些接口全部需要登录才能使用
- id- type 优惠码类型 枚举 平台 个人- value 优惠金额 百分比或者数字- coupon_type 优惠类型 枚举 固定金额, 百分比, 运费抵扣, 小物一件- start_date 开始时间 UTC 时间戳- end_date 结束时间 UTC 时间戳- min_price_boundary 最小价格限制, 0 表示不限制- max_price_boundary 最大价格限制, 0 表示不限制- min_amount_boundary 最小商品数量限制, 0 表示不限制- max_use_limit 最大使用次数- usage_counter 已经使用次数- is_exclusive ,bool 独占使用, 不能与其他优惠券一起生效- is_enable ,bool 是否启用- is_visible ,bool 是否显示- condition_des 使用条件描述- award_probability 中奖概率, 万分制- remarks 备注- is_use , bool 是否是启用的优惠券, 通过使用优惠券接口,和取消优惠券接口更改
通过优惠券码兑换优惠券,返回兑换成功的优惠券, 客户端直接添加到优惠券列表中,不再请求我的优惠券接口
token
兑换码
@优惠券 (新兑换的优惠券)
参数错误找不到对应数据
用户未登录,或者登陆授权过期
获取我的优惠券列表
token
cart_id 购物车id(不允许是临时购物车id)
@优惠券[] -- (优惠券列表)
数据为空
用户未登录,或者登陆授权过期
使用该优惠券进行优惠减免, 如果优惠券是独占优惠券,会导致之前选中的优惠券不是使用状态,
根据购物车的选中情况, 客户端会进行优惠券时候可以使用的校验, 服务器也需要进行校验,改优惠券是否允许使用
返回最新的优惠券列表 客户端替换整个优惠券列表
token
优惠券id
cart_id 购物车id(不允许是临时购物车id)
@优惠券[] -- (优惠券列表)
参数错误找不到对应数据
用户未登录,或者登陆授权过期
取消使用该优惠券进行优惠减免, 返回最新的优惠券列表 客户端替换整个优惠券列表
token
优惠券id
cart_id 购物车id(不允许是临时购物车id)
@优惠券[] -- (优惠券列表)
参数错误找不到对应数据
用户未登录,或者登陆授权过期
- 未登录购物车数据保存
- 未登录购物车与登录后购物车的融合
- 能记住用户勾选的商品,避免用户重复选取
- 能记住用户选中的优惠券,避免用户重复选取
- 能记住用户使用的积分, 且最大使用积分 min(用户积分, 选中商品价值 * 10%)
- 购物车结算信息,根据 积分 , 优惠券 , 促销 , 勾选商品, 商品数量价格, 配送方式 共同决定
- 一个用户有且只有一个购物车
- 勾选商品,加减删商品 改变导致优惠券选取情况变化,之前使用的优惠券不再可用,需要识别并将不符合使用条件的优惠券自动从使用的优惠券中去除
- 勾选商品,加减删商品 改变导致积分使用量变化, 积分最大使用量假定为 min(用户积分, 选中商品价值 * 10%) , 如果之前使用了 2000 积分 但是现在取消勾选了部分商品后最多只能使用 1000 需要自动降低积分的使用数量
- 促销优惠优先级,折扣和减免优先级问题
- 服务器保存, 创建临时购物车, 用于保存购物车商品, 勾选商品 增删改查
客户端保存购物车产品数据
客户端保存购物车产品数据存在一些问题, 因为要支持不登陆情况下查看结算信息需要传递大量的产品信息,且难以实现记住用户选取的优惠券(优惠券会根据当前商品勾选状态) , 在客户端保存 导致需要传递产品信息的接口
- 获取结算信息
- 获取我的优惠券列表
- 使用优惠券
- 使用积分接口
所以后面的接口均基于 服务端保存购物车数据进行设计
- 商品勾选 和 取消勾选 会使 优惠券,促销 的计算有不同的生效规则,会影响的接口返回的数据 有一下接口
- 获取结算信息
- 获取购物车列表
- 获取我的优惠券列表
- 生成订单接口
多张优惠券可能满足当前使用条件, 取消勾选掉部分商品后有些优惠券就不再满足使用条件了
- 产品数量
- 未登录购物车和的用户购物车相同产品id && sku 相同,的商品进行购买数量累加, 否则 添加新的商品
- 选中商品
- 未登录购物车和用户的购物车相同产品id && sku 相同的时候,未登录购物车中的勾选优先级大于登陆后的购物车勾选
- 未登录购物车的新增商品 保留 未登录购物车的勾选
- 不满足上述条件, 保留用户购物车之前的勾选情况
- cart_id 购物车id- products[]- id 在购物车中的id- product_id 商品id- sku_id 选中的sku id- options 商品options 选取 与接口 api/v1/product/:id/options 返回数据一致, 但只要选中的那一组数据即可- amount 商品购买数量- product_base 与接口/api/v1/product/:id 返回数据一致- is_check ,bool, 表示是否勾选
在没有登录的情况下, 调用改接口 获取一个购物车id, 后面对购物车的操作都带上这个购物车id
在本地存储了一个购物车id 的情况下,不要反复请求购物车接口. 使用原来的 id即可
无
cart_id : string , uuid, 临时购物车id 例如 4ca6e36b-ecfb-4f01-ab9e-f4016eeffd9b
用户登陆后 获取用户自身的购物车id
token
cart_id : string , uuid, 用户购物车id 例如 4ca6e36b-ecfb-4f01-ab9e-f4016eeffd9b
用户未登录,或者登陆授权过期
token (可空)
page
size
cart_id (临时购物车id 或者 用户购物车id)
商品列表 返回结构类似 /api/v1/product/sections
数据为空
在token 有效的情况下 需要校验, cart_id 是否属于该用户,
token (可空)
cart_id (临时购物车id 或者 用户购物车id)
@购物车列表
数据为空
在token 有效的情况下 需要校验, cart_id 是否属于该用户,
因为商品有多规格属性,同一个商品可能会添加不同sku 进入购物车多次, 购物车中使用单独的id 进行标识,而不用商品id
需要支持 更改sku_id 后更新 对应的options
可能存在的问题:
A 商品 蓝色 M
A 商品 蓝色 L
更新 蓝色 M 的 sku => 蓝色 L, 需不需要将两者合并为一个
token (可空)
cart_id (临时购物车id 或者 用户购物车id)
id 购物车中的商品id
sku_id 该商品选中的sku 属性
amount 购买数量 最低为1
@购物车列表
数据为空
在商品详情页面使用, 添加商品进入购物车列表. 如果之前这个商品sku已经添加到了购物,那么将购买数量叠加,勾选保持不变
新增加的商品默认不勾选
token (可空)
cart_id (临时购物车id 或者 用户购物车id)
product_id 商品id
sku_id 商品sku 属性
amount 购买数量 最低为1
@购物车列表
数据为空
token (可空)
cart_id (临时购物车id 或者 用户购物车id)
ids 购物车中的商品id , 使用"," 分割
@购物车列表
数据为空
批量勾选商品, 在参数ids 中的商品均为勾选的, 没有在ids 的都表示不勾选
token (可空)
cart_id (临时购物车id 或者 用户购物车id)
ids, 购物车中的商品id , 使用"," 分割
@购物车列表
数据为空
合并临时购物车和用户购物车
token
source_cart_id (临时购物车id)
target_cart_id (用户购物车id)
@购物车列表
数据为空
token (可空)
cart_id (临时购物车id 或者 用户购物车id)
point //eg: 0 使用积分数量point_deduction_price //单位百分 积分抵扣价格active_coupons: [] //使用中的 @优惠券 列表coupons_deduction_price //单位百分 优惠券减少的价格active_promotes: [] //满足条件的 @促销 列表promotes_deduction_price //单位百分 促销减少的价格
用户未登录或者登录授权过期
这个接口需要登录使用, 且 购物车id 不能为临时购物车id
token
cart_id
{"id": 2,"name": "EMS国際郵便配送","delivery_time": "4 - 8 営業日","list_freight": "2000.00","freight": "1599.00","is_default": 0,"free_categories": "[]","take_target": "min","freight_discount": "20","shipping_method_values": []}
数据为空
用户未登录或者登录授权过期
token
cart_id (用户购物车id)
point (更新积分数量, 可能需要考虑积分最大限制条件)
无
用户未登录或者登录授权过期
生成订单, 必须登录后才能使用. 生成订单后 需要清除购物车中勾选的商品, 选中的优惠券, 积分 这些信息
token
cart_id (用户购物车id)
shipping_method_id 配送方式id
address_id 收货地址id
order_id //订单id
用户未登录或者登录授权过期