文档中心 > 开发文档

轻POS买赠换购方案

更新时间:2020/05/15 访问次数:1166

合计接口改动

请求

在合计接口请求参数中的extra(Map类型)字段添加一个标志:calculateMode,用来区分是普通合计,还是营销合计。只有营销合计才会触发换购和赠品计算。

  • 不传或空,默认表示普通合计。
  • normal,普通合计。
  • promotion,营销合计。

 

返回

在合计接口中新增promotions字段,返回命中的赠品和换购商品。

 

{
    "traceId":"19091874165841038811136",
    "retCode":"0",
    "data":{
        "discountFee":"0",
        "totalFee":"2177",
        "actualFee":"2177",
        "items":[
            {
                "actualFee":2177,
                "barcode":"2021965000000",
                "discountFee":0,
                "extra":"",
                "isWeight":true,
                "isvSkuCode":"0202074001",
                "name":"爱森猪肝",
                "picUrl":"",
                "price":11962,
                "promotionPrice":11962,
                "quantity":1,
                "rowNo":"74165811871625216",
                "sellStatus":true,
                "totalFee":2177,
                "unit":"",
                "weight":"0.182",
                "saleType":0
            }
        ],
        "promotions":{
            "promotionGoods":[
                {
                    "barcode":"2021965000000",
                    "extra":"",
                    "isWeight":true,
                    "isvSkuCode":"0202074001",
                    "name":"血吼之斧",
                    "picUrl":"https://pic.tabao.com",
                    "price":11962,
                    "promotionPrice":0,
                    "maxQuantity":1,
                    "rowNo":"74165811871625216",
                    "unit":"柄",
                    "weight":"0.182",
                    "saleType":1
                },
                {
                    "barcode":"2021965000000",
                    "extra":"",
                    "isWeight":false,
                    "isvSkuCode":"0202074001",
                    "name":"埃辛诺斯战刃",
                    "picUrl":"https://pic.tabao.com",
                    "price":119620,
                    "promotionPrice":100,
                    "maxQuantity":1,
                    "rowNo":"74165811871625216",
                    "unit":"把",
                    "weight":"",
                    "saleType":2
                }
            ],
            "maxTotalQuantity":1,
            "promotionMode":"single",
            "activityId":"12345678",
            "title":"您可享受换购和买赠活动"
        }
    },
    "retMsg":"success"
}

购物车商品对象

items字段返回购物车商品列表。如果添加了优惠商品,购物车商品对象必须返回saleType(0 - 正常商品,1 - 赠品,2 - 换购商品),用以区分购物车中的普通商品和优惠商品。

优惠商品对象

promotionGoods字段返回优惠商品列表。

新增优惠商品对象。一些字段说明一下:

  • saleType表示商品类型:0 - 正常商品,1 - 赠品,2 - 换购商品
  • maxQuantity表示优惠商品购买上限,属于单体限购规则
  • price表示原始单价,单位是分,long型。
  • promotionPrice表示优惠单价,单位是分,long型。赠品就是0,换购就是优惠价,比如2元、5元等。

 

整体限购规则

目前只有两个条件:

  • maxTotalQuantity表示优惠商品的总购买上限,注意优惠商品的maxQuantity不能大于maxTotalQuantity,否则以maxTotalQuantity为准。如果没有总购买上限这条规则,maxTotalQuantity返回单个优惠商品的maxQuantity之和。
  • promotionMode表示优惠的模式,有两种:single和multi。single表示单选;multi表示多选。

 

其他信息

  • title,返回优惠活动的名称,直接展示给用户
  • activityId,字符串类型,返回优惠活动的id(单据号)

 

取消合计接口

新增一个接口:cancelsubtotal。

 

  • 请求参数说明

 

参数

参数名称

类型

必须

参数说明

tradeFlowNo

交易流水号

String

Y

交易流水号/购物车ID

userId

会员ID

String

N

 

userType

会员类型

String

N

 

extra

额外信息

String

N

备用

 

  • 响应结果说明

 

参数

参数名称

类型

参数说明

data

JSON Object

 

totalFee

合计总金额

long

单位:分

 

discountFee

折扣总金额

long

单位:分

 

actualFee

折扣后实际总金额

long

单位:分

 

items

商品列表

JSON Array

List<Commodity>

 

  • 接口说明

对不同的ISV,接口入参和返回数据必须一致,但是ISV可根据自己的实际情况和需求,赋予接口不同的含义。

 

ISV的需求

ISV在cancelsubtotal中接口实现的特殊含义

说明

ISV需要合计中返回赠品和换购品

cancelsubtotal删除购物车中的赠品和换购品,返回新的合计金额和商品列表。

本次需求需要实现

ISV需要合计后锁定购物车

cancelsubtotal解锁购物车

 

ISV对合计接口无特殊需求

cancelsubtotal只返回购物车数据,不做特殊处理

 

 

赠品和换购品的加购

参加优惠活动

对于赠品和换购品的批量加购,复用现在的批量加购接口 - buycommodities。ISV要确保buycommodities接口能兼容赠品和换购品。

 

buycommodities接口做相应修改,适配通用优惠方案:

  • 请求参数说明

 

参数

参数名称

类型

必须

参数说明

tradeFlowNo

交易流水号

String

Y

交易流水号/购物车ID

data

商品列表

JSON Array

Y

接口单次上限支持100行

 

rowNo

商品行号

String

Y

rowNo == "-1":代表新加购商品,需要商品查询。

rowNo != "-1":代表已在购物车商品,按行号更新数量。

 

barcode

商品条码

String

Y

 

 

quantity

商品数量

String

Y

商品数量。

当商品数量为 0 时,删除该商品行。

 

isvSkuCode

商品编码

String

N

ISV商品编码。为了保持rowNo字段含义清晰,代替rowNo传给服务端。

extra

 

Map

N

activityId,活动id

  • 返回结果说明

 

参数

参数名称

类型

参数说明

data

JSON Object

 

totalFee

合计总金额

long

单位:分

 

discountFee

折扣总金额

long

单位:分

 

actualFee

折扣后实际总金额

long

单位:分

 

items

商品列表

JSON Array

List<Commodity>

 

 

不参加优惠活动

对于不参加优惠活动,接口request中不传商品列表参数,但是接口response仍然要正常返回数据。

 

获取小票信息接口(getbillinfo)改动

商品打标

由于小票上优惠商品要显示“换购”和“赠品”的标,所以小票接口返回的商品必须带有saleType字段表明商品类型。

 

saleType

商品销售类型

 

int

0 - 正常商品,

1 - 赠品,

2 - 换购商品

 

{
                "actualFee":2177,
                "barcode":"2021965000000",
                "discountFee":0,
                "extra":"",
                "isWeight":true,
                "isvSkuCode":"0202074001",
                "name":"爱森猪肝",
                "picUrl":"",
                "price":11962,
                "promotionPrice":11962,
                "quantity":1,
                "rowNo":"74165811871625216",
                "sellStatus":true,
                "totalFee":2177,
                "unit":"",
                "weight":"0.182",
                "saleType":0
            }

 

优惠活动说明

小票上要展示本次优惠活动说明,可按把文案放到小票接口的extra字段中。具体可参考《Rex轻POS对接方案》5.12部分。

 

extra字段说明:

 

extra

额外信息

 

String

商家营销,备注等文案。

可通过 '\n' 换行符,在小票上换行打印文案。

 

 

 

FAQ

关于此文档暂时还没有FAQ
返回
顶部