ebuy-cashier-middleware-api

文档介绍

文档目的

此为收银机与中间件的报文协议。 为实现收银POS与易百后端支付,兑换业务交易实时同步,减少对账误差,同时可以实现与易百对接后,支持多种支付,兑换方式的需求。

物理架构

Network

逻辑架构

Middleware

名词解释

Socket

基于TCP/IP协议的通讯方式

MIS-POS

安装于商户门店内的POS机具,提供活动执行辅助及兑换功能

易百POSP

处理e-Buy POS所有交易的一组网络设备和服务器

BCD

二进制数值表示格式,如0x99,即为数值为99

TLV

通讯协议中常用的数据格式,由标签(Tag),长度(Length),值(Value)三部分构成

PINPAD

密码键盘

易百POS

即为MIS-POS,安装于商户门店内的POS机具,提供活动执行辅助及兑换功能

易百后台

处理e-Buy POS所有交易的一组网络设备和服务器

中间件

安装在收银机上的独立应用,监控本地端口,并提供下载密钥、自动签到、自动更新和二次交互选择的界面功能

接口说明

接口说明

调用方法

内容 说明
通讯方式 TCP/IP Socket,监听127.0.0.1端口
端口 监听单个端口,支持收发,使用3018端口
交互数据格式 JSON
字符编码 UTF-8
签名验证 本机通讯无需签名
接口说明

报文结构

请求报文和返回报文都采用如下的报文结构

报文长度 报文内容
2个字节 HEX格式 明文ASCII格式

其中报文内容采用如下JSON结构

序号 格式 参数 数据举例 参数说明 备注
1 action String inquiry 交易类型 具体接口有详细说明
2 deviceNo String POS01 收银机编号 用于区别本次交易请求的收银机
3 shopNo String CN123456 门店编号 用于区别本次交易请求的门店
4 brand String 663 品牌编号 用于区别本次交易请求的品牌,易百分配
5 body String BASE64 报文内容 具体接口有详细说明,本域需要采用BASE64编码

报文举例

0x00 0xE7{"action":"inquiry","deviceNo":"POS01","shopNo":"CN123456","brand":"663","body":"ewogICAgICAgICAidHJhY2VObyI6ICI5OTAwMDAwOTEwMDAxMDEwMTczMjEyMyIsCiAgICAgICAgICJvcmlnaW5hbFRyYWNlTm8iOiAiOTkwMDAwMDkxMDAwMTAxMDE3MzIxMjQiCiAgICAgfQ=="}

业务参数对象

业务参数对象

产品明细

字段 类型 是否必填 字段意义 备注
goodsCategory String 商品类别  
goodsId String 商品编号  
goodsName String 商品名称 用于报表、小票等显示
price Price 单价 单位:元
quantity Integer 数量  
rebateCode String 折扣代码 收银机上已设置折扣,则必填,则必填,长度大于3位小于32位
activityNo String 活动编号 易百后台交易成功,会返回本交易所属的活动编号
memo String 备注 易百后台交易成功,会返回部分信息,如电子凭证号码
业务参数对象

资金渠道

字段 类型 是否必填 字段意义 备注
channelNo String 资金渠道编号  
channelName String 资金渠道名称  
channelAmount Price 金额
channelNo channelName 字段意义
user_real_money 用户实际支付 如支付宝余额、余额宝、微信钱包余额、银行卡等
user_balance 用户余额支付 如支付宝余额、余额宝、微信钱包余额等
user_bank_card 用户银行卡余额 使用用户借记卡或贷记卡的余额进行支付
user_credit 用户信用支付 如支付宝花呗、京东白条等
user_points 用户积分支付 如银行积分、天猫积分、集分宝等
merchant_benefit 商户提供的优惠 如商户空券,商户折扣等
platform_benefit 平台提供的优惠 如平台折扣,平台补贴等
ebuy_benefit 易百提供的优惠 如易百折扣,易百补贴等
业务参数对象

打印信息

字段 类型 是否必填 字段意义 备注
cardNo64 String 卡号前六后四 返回需要打印的卡号前六后四
bank String 发卡银行 返回需要打印的发卡银行
paymentOrderNo String 机构订单号 返回需要打印的机构订单号
paymentUser String 机构用户账号 返回需要打印的机构用户账号
pointSale String 扣除积分 返回需要打印的扣除积分数量
qrCode1 String 打印二维码1 返回需要打印的二维码1
qrCode2 String 打印二维码2 返回需要打印的二维码2
qrCode3 String 打印二维码3 返回需要打印的二维码3
barCode1 String 打印条码1 返回需要打印的条码内容1
barCode2 String 打印条码2 返回需要打印的条码内容2
barCode3 String 打印条码3 返回需要打印的条码内容3
content String 打印内容 返回需要打印的内容,TLV格式,1F为小票title,2F为小票交易类型说明显示
printMode String 打印联数 1表示一联,2表示两联,3表示三联 __
业务参数对象

会员信息

字段 类型 是否必填 字段意义 备注
memberId String 会员ID  
memberCode String 会员编号  
memberName String 会员名称  
memberPhone String 会员手机号码  
grade String 会员等级  
status String 会员状态  
balance Price 会员卡余额  
pointBalance Price 会员积分余额
业务参数对象

结算记录

字段 类型 是否必填 字段意义 备注
activityNo String 活动编号  
activityName String 活动名称  
productName String 产品名称  
customer String 结算客户  
isRefund Boolean 是否为退款  
volume Integer 交易笔数  
totalReceiptAmount Price 商户实收金额  
totalAmount Price 小计金额
业务参数对象

交易记录

字段 类型 是否必填 字段意义 备注
traceNo String 原交易收银机流水号  
paidAmount String 支付成功金额  
status String 匹配状态 枚举如下

status枚举

业务参数对象

收单信息

字段 类型 是否必填 字段意义 备注
acqId String 收单机构标识码  
issuerId String 发卡机构标识码  
cardType String 卡类型 0001贷记卡,0002借记卡,0003准贷记卡,0000其它
cardOrgan String 卡类别 true外卡,false内卡
pan String 卡号 脱敏卡号格式:622562****8888
aid String 应用标识 通过aid来判断卡类型(VISA/MASTER/...),在没有返回aid字段的情况下,可以通过pan卡号字段中的卡BIN来判断卡类型
业务参数对象

优惠券明细

字段 类型 是否必填 字段意义 备注
voucherId String 优惠券编号  
voucherName String 优惠券名称 用于报表、小票等显示
voucherType String 优惠券类型
voucherAmount Price 单价 单位:元
voucherCode String 优惠券串号

交易类接口

交易类接口

银行卡收单

交易流程说明

action

请求参数,收银机===>中间件

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复,建议YYYYmmddHHMMSS+10位流水号
totalAmount Price 交易总金额 单位:元
undiscountAmount Price 不可打折金额 单位:元
acquirer String 收单机构 如:citicCashpay表示中信收单
goodsDetail List<goodsDetail> 产品明细 验证产品明细时必填
memberDetail Object<memberDetail> 会员信息 会员支付时必填

请求报文举例

{
    "traceNo": "99000009100010101732123",
    "totalAmount": 40.8,
    "undiscountAmount": 0,
    "acquirer": "citicCashpay",
    "goodsDetail": [
        {
            "goodsCategory": "001",
            "goodsId": "P00001",
            "goodsName": "牙膏",
            "price": 8,
            "quantity": 2,
            "rebateCode": "000"
        },
        {
            "goodsCategory": "101",
            "goodsId": "P00002",
            "goodsName": "洗发水",
            "price": 24.8,
            "quantity": 1,
            "rebateCode": "000"
        }
    ],
    "memberDetail": {
        "memberId": "M000001545",
        "memberName": "TONY",
        "grade": "1",
        "status": "1",
        "balance": 1000.00,
        "pointBalance": 30000
    }
}

返回参数,中间件===>收银机

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复
orderNo String 交易订单号 易百生成
transDate String 交易时间 格式为:YYYYmmddHHMMSS
returnCode String 返回码 00表示交易成功,其他表示失败
returnDesc String 返回信息 交易结果描述或错误原因
paidAmount Price 支付成功总金额 面值,单位:元
receiptAmount Price 商户实收金额 净值,单位:元
invoiceAmount Price 商户开票金额 单位:元
exchangeRate Number(8,6) 汇率 1外币等于多少人民币
currency String 货币类型 例如:CNY
discountCode String 折扣编码 由收银机分配,用于入账计折扣类型,如:2016120102|10.00表示折扣10元
discountNum Number 固定金额折扣数量 用于入账计折扣类型的数量
tenderCode String 支付方式编码 由收银机分配,用于入账计支付方式,如:2016120101|20.00表示支付20元
activityProductNo String 活动产品编号  
activityProductName String 活动产品名称  
needSameCard Boolean 同一张卡支付 如满额立减类活动,需要同一张银行卡支付剩余金额
goodsDetail List<goodsDetail> 折抵产品明细 返回后台已抵扣成功的产品明细
fundChannel List<fundChannel> 资金渠道  
printDetail Object<printDetail> 打印信息 如需要在收银小票上打印信息时必填
memberDetail Object<memberDetail> 会员信息 返回本次交易的会员信息
paymentExtra Object<paymentDetail> 收单信息 返回本次交易的收单信息

返回报文举例

{
    "traceNo": "9900000910001011920150201", 
    "orderNo": "171698602301", 
    "transDate": "20161231120533", 
    "returnCode": "00", 
    "returnDesc": "SUCCESS", 
    "paidAmount": 40.8, 
    "receiptAmount": 40.8, 
    "invoiceAmount": 40.8, 
    "exchangeRate": 6.0939, 
    "currency": "CNY", 
    "discountCode": "0001", 
    "discountNum": 20, 
    "tenderCode": "8001", 
    "activityProductNo": "00000000089349", 
    "activityProductName": "中信365权益", 
    "needSameCard": true, 
    "goodsDetail": [
        {
            "goodsCategory": "001", 
            "goodsId": "P00001", 
            "goodsName": "牙膏", 
            "price": 8, 
            "quantity": 2, 
            "rebateCode": "000", 
            "activityNo": "2016123101", 
            "memo": "100123456789"
        }, 
        {
            "goodsCategory": "101", 
            "goodsId": "P00002", 
            "goodsName": "洗发水", 
            "price": 24.8, 
            "quantity": 1, 
            "rebateCode": "000", 
            "activityNo": "2016123101", 
            "memo": "100123456789"
        }
    ], 
    "fundChannel": [
        {
            "channelNo": "001", 
            "channelName": "用户实付现金", 
            "channelAmount": "20.8"
        }, 
        {
            "channelNo": "002", 
            "channelName": "用户积分支付", 
            "channelAmount": "20"
        }
    ], 
    "printDetail": {
        "cardNo64": "622562****8888", 
        "bank": "中信银行", 
        "paymentOrderNo": "201612315689412157458787", 
        "pointSale": "20000", 
        "qrCode1": "htt://www.api-location-url.com/url", 
        "qrCode2": "", 
        "qrCode3": "", 
        "barCode1": "12345679", 
        "barCode2": "", 
        "barCode3": ""
    }, 
    "cardInfo": {
        "cardNo": "", 
        "password": "", 
        "valid": "", 
        "track1": "", 
        "track2": "", 
        "track3": "", 
        "cardSn": "", 
        "icData": ""
    }, 
    "memberDetail": {
        "memberId": "M000001545", 
        "memberName": "TONY", 
        "grade": "1", 
        "status": "1", 
        "balance": 1000, 
        "pointBalance": 30000
    }, 
    "voucherDetail": [
        {
            "voucherId": "001", 
            "voucherName": "现金优惠券", 
            "voucherType": "现金", 
            "voucherCode": "123456789", 
            "channelAmount": "20.8"
        }, 
        {
            "voucherId": "002", 
            "voucherName": "买一赠一优惠券", 
            "voucherType": "买赠", 
            "voucherCode": "1232136781", 
            "channelAmount": "20.8"
        }
    ], 
    "paymentExtra": {
        "acqId": "0100", 
        "issuerId": "0200", 
        "cardType": "0001", 
        "cardOrgan": false, 
        "pan": "622562****8888", 
        "aid": "A000000333010101"
    }
}
交易类接口

实体卡权益积分兑换

接口用途

交易流程说明

action

请求参数,收银机===>中间件

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复,建议YYYYmmddHHMMSS+10位流水号
totalAmount Price 交易总金额 单位:元
undiscountAmount Price 不可打折金额 单位:元
goodsDetail List<goodsDetail> 产品明细 验证产品明细时必填
memberDetail Object<memberDetail> 会员信息 会员支付时必填

请求报文举例

{
    "traceNo": "99000009100010101732123",
    "totalAmount": 40.8,
    "undiscountAmount": 0,
    "goodsDetail": [
        {
            "goodsCategory": "001",
            "goodsId": "P00001",
            "goodsName": "牙膏",
            "price": 8,
            "quantity": 2,
            "rebateCode": "000"
        },
        {
            "goodsCategory": "101",
            "goodsId": "P00002",
            "goodsName": "洗发水",
            "price": 24.8,
            "quantity": 1,
            "rebateCode": "000"
        }
    ],
    "memberDetail": {
        "memberId": "M000001545",
        "memberName": "TONY",
        "grade": "1",
        "status": "1",
        "balance": 1000.00,
        "pointBalance": 30000
    }
}

返回参数,中间件===>收银机

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复
orderNo String 交易订单号 易百生成
transDate String 交易时间 格式为:YYYYmmddHHMMSS
returnCode String 返回码 00表示交易成功,其他表示失败
returnDesc String 返回信息 交易结果描述或错误原因
paidAmount Price 支付成功总金额 面值,单位:元
receiptAmount Price 商户实收金额 净值,单位:元
invoiceAmount Price 商户开票金额 单位:元
exchangeRate Number(8,6) 汇率 1外币等于多少人民币
currency String 货币类型 例如:CNY
discountCode String 折扣编码 由收银机分配,用于入账计折扣类型,如:2016120102|10.00表示折扣10元
discountNum Number 固定金额折扣数量 用于入账计折扣类型的数量
tenderCode String 支付方式编码 由收银机分配,用于入账计支付方式,如:2016120101|20.00表示支付20元
activityProductNo String 活动产品编号  
activityProductName String 活动产品名称  
needSameCard Boolean 同一张卡支付 如满额立减类活动,需要同一张银行卡支付剩余金额
goodsDetail List<goodsDetail> 折抵产品明细 返回后台已抵扣成功的产品明细
fundChannel List<fundChannel> 资金渠道  
printDetail Object<printDetail> 打印信息 如需要在收银小票上打印信息时必填
memberDetail Object<memberDetail> 会员信息 返回本次交易的会员信息

返回报文举例

{
    "traceNo": "99000009100010101732123",
    "orderNo": "171698602301",
    "transDate": "20161231120533",
    "returnCode": "00",
    "returnDesc": "SUCCESS",
    "paidAmount": 40.8,
    "receiptAmount": 40.8,
    "invoiceAmount": 40.8,
    "exchangeRate": 6.0939,
    "currency": "CNY",
    "discountCode": "0001",
    "discountNum": 20,
    "tenderCode": "8001",
    "activityProductNo": "2016123101",
    "activityProductName": "中信365权益",
    "needSameCard": true,
    "goodsDetail": [
        {
            "goodsCategory": "001",
            "goodsId": "P00001",
            "goodsName": "牙膏",
            "price": 8,
            "quantity": 2,
            "rebateCode": "000",
            "activityNo": "2016123101",
            "memo": "100123456789"
        },
        {
            "goodsCategory": "101",
            "goodsId": "P00002",
            "goodsName": "洗发水",
            "price": 24.8,
            "quantity": 1,
            "rebateCode": "000",
            "activityNo": "2016123101",
            "memo": "100123456789"
        }
    ],
    "fundChannel": [
        {
            "channelNo": "001",
            "channelName": "用户实付现金",
            "channelAmount": "20.8"
        },
        {
            "channelNo": "002",
            "channelName": "用户积分支付",
            "channelAmount": "20"
        }
    ],
    "printDetail": {
        "cardNo64": "622562****8888",
        "bank": "中信银行",
        "paymentOrderNo": "201612315689412157458787",
        "pointSale": "20000",
        "qrCode1": "htt://www.xxx.com/url",
        "qrCode2": "",
        "qrCode3": "",
        "barCode1": "12345679",
        "barCode2": "",
        "barCode3": ""
    },
    "memberDetail": {
        "memberId": "M000001545",
        "memberName": "TONY",
        "grade": "1",
        "status": "1",
        "balance": 1000.00,
        "pointBalance": 30000
    }
}
交易类接口

二维码支付或兑换

接口用途

交易流程说明

action

请求参数,收银机===>中间件

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复,建议YYYYmmddHHMMSS+10位流水号
totalAmount Price 交易总金额 单位:元
undiscountAmount Price 不可打折金额 单位:元
qrcode String 二维码内容 串号、一维码或二维码内容
goodsDetail List<goodsDetail> 产品明细 验证产品明细时必填
memberDetail Object<memberDetail> 会员信息 会员支付时必填

请求报文举例

{
    "traceNo": "99000009100010101732123",
    "totalAmount": 40.8,
    "undiscountAmount": 0,
    "qrcode": "280123121234567890",
    "goodsDetail": [
        {
            "goodsCategory": "001",
            "goodsId": "P00001",
            "goodsName": "牙膏",
            "price": 8,
            "quantity": 2,
            "rebateCode": "000"
        },
        {
            "goodsCategory": "101",
            "goodsId": "P00002",
            "goodsName": "洗发水",
            "price": 24.8,
            "quantity": 1,
            "rebateCode": "000"
        }
    ],
    "memberDetail": {
        "memberId": "M000001545",
        "memberName": "TONY",
        "grade": "1",
        "status": "1",
        "balance": 1000.00,
        "pointBalance": 30000
    }
}

返回参数,中间件===>收银机

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复
orderNo String 交易订单号 易百生成
transDate String 交易时间 格式为:YYYYmmddHHMMSS
returnCode String 返回码 00表示交易成功,其他表示失败
returnDesc String 返回信息 交易结果描述或错误原因
paidAmount Price 支付成功总金额 单位:元
receiptAmount Price 商户实收金额 单位:元
invoiceAmount Price 商户开票金额 单位:元
exchangeRate Number(8,6) 汇率 1外币等于多少人民币
currency String 货币类型 例如:CNY
discountCode String 折扣编码 由收银机分配,用于入账计折扣类型,如:2016120102\ 10.00表示折扣10元
discountNum Number 固定金额折扣数量 用于入账计折扣类型的数量
tenderCode String 支付方式编码 由收银机分配,用于入账计支付方式,如:2016120101\ 20.00表示支付20元
activityProductNo String 活动产品编号  
activityProductName String 活动产品名称  
goodsDetail List<goodsDetail> 折抵产品明细 返回后台已抵扣成功的产品明细
fundChannel List<fundChannel> 资金渠道  
printDetail Object<printDetail> 打印信息 如需在收银小票上打印信息时必填
memberDetail Object<memberDetail> 会员信息 返回本次交易的会员信息
voucherDetail List<voucherDetail> 优惠券信息 返回本次交易的优惠券信息

返回报文举例

{
    "traceNo": "99000009100010101732123",
    "orderNo": "171698602301",
    "transDate": "20161231120533",
    "returnCode": "00",
    "returnDesc": "SUCCESS",
    "paidAmount": 40.8,
    "receiptAmount": 40.8,
    "invoiceAmount": 40.8,
    "exchangeRate": 6.0939,
    "currency": "CNY",
    "discountCode": "0001",
    "discountNum": 20,
    "tenderCode": "8001",
    "activityProductNo": "2016123102",
    "activityProductName": "支付宝支付",
    "goodsDetail": [
        {
            "goodsCategory": "001",
            "goodsId": "P00001",
            "goodsName": "牙膏",
            "price": 8,
            "quantity": 2,
            "rebateCode": "000",
            "activityNo": "2016123101",
            "memo": "100123456789"
        },
        {
            "goodsCategory": "101",
            "goodsId": "P00002",
            "goodsName": "洗发水",
            "price": 24.8,
            "quantity": 1,
            "rebateCode": "000",
            "activityNo": "2016123101",
            "memo": "100123456789"
        }
    ],
    "fundChannel": [
        {
            "channelNo": "001",
            "channelName": "用户实付现金",
            "channelAmount": "20.8"
        },
        {
            "channelNo": "002",
            "channelName": "用户积分支付",
            "channelAmount": "20"
        }
    ],
    "printDetail": {
        "cardNo64": "622562****8888",
        "bank": "中国银行",
        "paymentOrderNo": "201612315689412157458787",
        "paymentUser": "139****@163.com",
        "pointSale": "20000",
        "qrCode1": "htt://www.xxx.com/url",
        "qrCode2": "",
        "qrCode3": "",
        "barCode1": "12345679",
        "barCode2": "",
        "barCode3": ""
    },
    "memberDetail": {
        "memberId": "M000001545",
        "memberName": "TONY",
        "grade": "1",
        "status": "1",
        "balance": 1000.00,
        "pointBalance": 30000
    }
}
交易类接口

交易结果查询

接口用途

action

请求参数,收银机===>中间件

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复
originalTraceNo String 原收银机流水号 传入需要查询的原交易收银机流水号

请求报文举例

{
    "traceNo": "99000009100010101732123",
    "originalTraceNo": "99000009100010101732124"
}

返回参数,中间件===>收银机

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复
orderNo String 交易订单号 单位:元
transDate String 交易时间 格式为:YYYYmmddHHMMSS
returnCode String 返回码 00表示交易成功,其他表示失败
returnDesc String 返回信息 交易结果描述或错误原因
paidAmount Price 支付成功总金额 单位:元
receiptAmount Price 商户实收金额 单位:元
invoiceAmount Price 商户开票金额 单位:元
exchangeRate Number(8,6) 汇率 1外币等于多少人民币
currency String 货币类型 例如:CNY
discountCode String 折扣编码 由收银机分配,用于入账计折扣类型,如:2016120102|10.00表示折扣10元
discountNum Number 固定金额折扣数量 用于入账计折扣类型的数量
tenderCode String 支付方式编码 由收银机分配,用于入账计支付方式,如:2016120101|20.00表示支付20元
activityProductNo String 活动产品编号  
activityProductName String 活动产品名称  
needSameCard Boolean 同一张卡支付 如满额立减类活动,需要同一张银行卡支付剩余金额
goodsDetail List<goodsDetail> 折抵产品明细 返回后台已抵扣成功的产品明细
fundChannel List<fundChannel> 资金渠道  
printDetail Object<printDetail> 打印信息 如需要在收银小票上打印信息时必填
memberDetail Object<memberDetail> 会员信息 返回本次交易的会员信息
voucherDetail List<voucherDetail> 优惠券信息 返回本次交易的优惠券信息

返回报文举例

{
    "traceNo": "99000009100010101732123",
    "orderNo": "171698602301",
    "transDate": "20161231120533",
    "returnCode": "00",
    "returnDesc": "SUCCESS",
    "paidAmount": 40.8,
    "receiptAmount": 40.8,
    "invoiceAmount": 40.8,
    "exchangeRate": 6.0939,
    "currency": "CNY",
    "discountCode": "0001",
    "discountNum": 20,
    "tenderCode": "8001",
    "activityProductNo": "2016123102",
    "activityProductName": "支付宝支付",
    "needSameCard": true,
    "goodsDetail": [
        {
            "goodsCategory": "001",
            "goodsId": "P00001",
            "goodsName": "牙膏",
            "price": 8,
            "quantity": 2,
            "rebateCode": "000",
            "activityNo": "2016123101",
            "memo": "100123456789"
        },
        {
            "goodsCategory": "101",
            "goodsId": "P00002",
            "goodsName": "洗发水",
            "price": 24.8,
            "quantity": 1,
            "rebateCode": "000",
            "activityNo": "2016123101",
            "memo": "100123456789"
        }
    ],
    "fundChannel": [
        {
            "channelNo": "001",
            "channelName": "用户实付现金",
            "channelAmount": "20.8"
        },
        {
            "channelNo": "002",
            "channelName": "用户积分支付",
            "channelAmount": "20"
        }
    ],
    "printDetail": {
        "cardNo64": "622562****8888",
        "bank": "中国银行",
        "paymentOrderNo": "201612315689412157458787",
        "pointSale": "20000",
        "qrCode1": "htt://www.xxx.com/url",
        "qrCode2": "",
        "qrCode3": "",
        "barCode1": "12345679",
        "barCode2": "",
        "barCode3": ""
    },
    "memberDetail": {
        "memberId": "M000001545",
        "memberName": "TONY",
        "grade": "1",
        "status": "1",
        "balance": 1000.00,
        "pointBalance": 30000
    }
}

支持查询的交易

交易类接口

当日撤销(实体卡)

接口用途

交易流程说明

action

请求参数,收银机===>中间件

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复
originalTraceNo String 原收银机流水号 传入需要查询的原交易收银机流水号
acquirer String 收单机构 如:citicCashpay表示中信收单,如果收单撤销是必填的

请求报文举例

{
    "traceNo": "99000009100010101732123",
    "originalTraceNo": "99000009100010101732124",
    "acquirer": "citicCashpay"
}

返回参数,中间件===>收银机

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复
orderNo String 交易订单号  
transDate String 交易时间 格式为:YYYYmmddHHMMSS
returnCode String 返回码 00表示交易成功,其他表示失败
returnDesc String 返回信息 交易结果描述或错误原因
discountCode String 折扣编码 由收银机分配,用于入账计折扣类型,如:2016120102|10.00表示折扣10元
tenderCode String 支付方式编码 由收银机分配,用于入账计支付方式,如:2016120101|20.00表示支付20元
fundChannel List<fundChannel> 资金渠道  
printDetail Object<printDetail> 打印信息 如需要在收银小票上打印信息时必填
memberDetail Object<memberDetail> 会员信息 返回本次交易的会员信息

返回报文举例

{
    "traceNo": "99000009100010101732123",
    "orderNo": "171698602301",
    "transDate": "20161231120533",
    "returnCode": "00",
    "returnDesc": "SUCCESS",
    "discountCode": "0001",
    "tenderCode": "8001",
    "fundChannel": [
        {
            "channelNo": "001",
            "channelName": "用户实付现金",
            "channelAmount": "20.8"
        },
        {
            "channelNo": "002",
            "channelName": "用户积分支付",
            "channelAmount": "20"
        }
    ],
    "printDetail": {
        "cardNo64": "622562****8888",
        "bank": "中信银行",
        "paymentOrderNo": "201612315689412157458787",
        "pointSale": "20000",
        "qrCode1": "htt://www.xxx.com/url",
        "qrCode2": "",
        "qrCode3": "",
        "barCode1": "12345679",
        "barCode2": "",
        "barCode3": ""
    },
    "memberDetail": {
        "memberId": "M000001545",
        "memberName": "TONY",
        "grade": "1",
        "status": "1",
        "balance": 1000.00,
        "pointBalance": 30000
    }
}

支持撤销的交易

交易类接口

当日撤销(二维码)

接口用途

action

请求参数,收银机===>中间件

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复
originalTraceNo String 原收银机流水号 传入需要查询的原交易收银机流水号

请求报文举例

{
    "traceNo": "99000009100010101732123",
    "originalTraceNo": "99000009100010101732124"
}

返回参数,中间件===>收银机

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复
orderNo String 交易订单号  
transDate String 交易时间 格式为:YYYYmmddHHMMSS
returnCode String 返回码 00表示交易成功,其他表示失败
returnDesc String 返回信息 交易结果描述或错误原因
discountCode String 折扣编码 由收银机分配,用于入账计折扣类型,如:2016120102|10.00表示折扣10元
tenderCode String 支付方式编码 由收银机分配,用于入账计支付方式,如:2016120101|20.00表示支付20元
fundChannel List<fundChannel> 资金渠道  
printDetail Object<printDetail> 打印信息 如需要在收银小票上打印信息时必填
memberDetail Object<memberDetail> 会员信息 返回本次交易的会员信息

返回报文举例

{
    "traceNo": "99000009100010101732123",
    "orderNo": "171698602301",
    "transDate": "20161231120533",
    "returnCode": "00",
    "returnDesc": "SUCCESS",
    "discountCode": "0001",
    "tenderCode": "8001",
    "fundChannel": [
        {
            "channelNo": "001",
            "channelName": "用户实付现金",
            "channelAmount": "20.8"
        },
        {
            "channelNo": "002",
            "channelName": "用户积分支付",
            "channelAmount": "20"
        }
    ],
    "printDetail": {
        "cardNo64": "622562****8888",
        "bank": "中信银行",
        "paymentOrderNo": "201612315689412157458787",
        "pointSale": "20000",
        "qrCode1": "htt://www.xxx.com/url",
        "qrCode2": "",
        "qrCode3": "",
        "barCode1": "12345679",
        "barCode2": "",
        "barCode3": ""
    },
    "memberDetail": {
        "memberId": "M000001545",
        "memberName": "TONY",
        "grade": "1",
        "status": "1",
        "balance": 1000.00,
        "pointBalance": 30000
    }
}

支持撤销的交易

交易类接口

隔日退款(实体卡)

接口用途

交易流程说明

action

请求参数,收银机===>中间件

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复
originalTraceNo String 原收银机流水号 传入需要退款的原交易收银机流水号
refundAmount Price 本次退款金额 单位:元
acquirer String 收单机构 如:citicCashpay表示中信收单,如果收单撤销是必填的

请求报文举例

{
    "traceNo": "99000009100010101732123",
    "originalTraceNo": "99000009100010101732124",
    "refundAmount": 40.8,
    "acquirer": "citicCashpay"
}

返回参数,中间件===>收银机

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复
orderNo String 交易订单号  
transDate String 交易时间 格式为:YYYYmmddHHMMSS
returnCode String 返回码 00表示交易成功,其他表示失败
returnDesc String 返回信息 交易结果描述或错误原因
discountCode String 折扣编码 由收银机分配,用于入账计折扣类型,如:2016120102|10.00表示折扣10元
tenderCode String 支付方式编码 由收银机分配,用于入账计支付方式,如:2016120101|20.00表示支付20元
refundAmount Price 退款成功总金额 单位:元
fundChannel List<fundChannel> 资金渠道  
printDetail Object<printDetail> 打印信息 如需要在收银小票上打印信息时必填
memberDetail Object<memberDetail> 会员信息 返回本次交易的会员信息

返回报文举例

{
    "traceNo": "99000009100010101732123",
    "orderNo": "171698602301",
    "transDate": "20161231120533",
    "returnCode": "00",
    "returnDesc": "SUCCESS",
    "discountCode": "0001",
    "tenderCode": "8001",
    "refundAmount": 40.8,
    "fundChannel": [
        {
            "channelNo": "001",
            "channelName": "用户实付现金",
            "channelAmount": "20.8"
        },
        {
            "channelNo": "002",
            "channelName": "用户积分支付",
            "channelAmount": "20"
        }
    ],
    "printDetail": {
        "cardNo64": "622562****8888",
        "bank": "中信银行",
        "paymentOrderNo": "201612315689412157458787",
        "pointSale": "20000",
        "qrCode1": "htt://www.xxx.com/url",
        "qrCode2": "",
        "qrCode3": "",
        "barCode1": "12345679",
        "barCode2": "",
        "barCode3": ""
    },
    "memberDetail": {
        "memberId": "M000001545",
        "memberName": "TONY",
        "grade": "1",
        "status": "1",
        "balance": 1000.00,
        "pointBalance": 30000
    }
}

支持退款的交易

交易类接口

隔日退款(二维码)

接口用途

action

请求参数,收银机===>中间件

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复
originalTraceNo String 原收银机流水号 传入需要退款的原交易收银机流水号
refundAmount Price 本次退款金额 单位:元

请求报文举例

{
    "traceNo": "99000009100010101732123",
    "originalTraceNo": "99000009100010101732124",
    "refundAmount": 40.8
}

返回参数,中间件===>收银机

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复
orderNo String 交易订单号  
transDate String 交易时间 格式为:YYYYmmddHHMMSS
returnCode String 返回码 00表示交易成功,其他表示失败
returnDesc String 返回信息 交易结果描述或错误原因
refundAmount Price 退款成功总金额 单位:元
discountCode String 折扣编码 由收银机分配,用于入账计折扣类型,如:2016120102|10.00表示折扣10元
tenderCode String 支付方式编码 由收银机分配,用于入账计支付方式,如:2016120101|20.00表示支付20元
fundChannel List<fundChannel> 资金渠道  
printDetail Object<printDetail> 打印信息 如需要在收银小票上打印信息时必填
memberDetail Object<memberDetail> 会员信息 返回本次交易的会员信息

返回报文举例

{
    "traceNo": "99000009100010101732123",
    "orderNo": "171698602301",
    "transDate": "20161231120533",
    "returnCode": "00",
    "returnDesc": "SUCCESS",
    "refundAmount": 40.8,
    "discountCode": "0001",
    "tenderCode": "8001",
    "fundChannel": [
        {
            "channelNo": "001",
            "channelName": "用户实付现金",
            "channelAmount": "20.8"
        },
        {
            "channelNo": "002",
            "channelName": "用户积分支付",
            "channelAmount": "20"
        }
    ],
    "printDetail": {
        "cardNo64": "622562****8888",
        "bank": "中信银行",
        "paymentOrderNo": "201612315689412157458787",
        "pointSale": "20000",
        "qrCode1": "htt://www.xxx.com/url",
        "qrCode2": "",
        "qrCode3": "",
        "barCode1": "12345679",
        "barCode2": "",
        "barCode3": ""
    },
    "memberDetail": {
        "memberId": "M000001545",
        "memberName": "TONY",
        "grade": "1",
        "status": "1",
        "balance": 1000.00,
        "pointBalance": 30000
    }
}

支持退款的交易

交易类接口

卡余额或权益查询

接口用途

交易流程说明

action

请求参数,收银机===>中间件

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复
activityProductNo String 活动产品编号 卡BIN不明确时必填,易百分配
memberDetail Object<memberDetail> 会员信息 会员交易时必填

请求报文举例

{
    "traceNo": "99000009100010101732123",
    "activityProductNo": "HDCP00000000001236",
    "memberDetail": {
        "memberId": "M000001545",
        "memberName": "TONY",
        "grade": "1",
        "status": "1",
        "balance": 1000.00,
        "pointBalance": 30000
    }
}

返回参数,中间件===>收银机

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复
orderNo String 交易订单号 单位:元
transDate String 交易时间 格式为:YYYYmmddHHMMSS
returnCode String 返回码 00表示交易成功,其他表示失败
returnDesc String 返回信息 交易结果描述或错误原因
rightsTimes Integer 权益次数 返回可以享受的权益次数
moneyBalance Price 现金余额 单位:元
pointBalance Price 积分余额 单位:分
printDetail Object<printDetail> 打印信息 如需要在收银小票上打印信息时必填
memberDetail Object<memberDetail> 会员信息 返回本次交易的会员信息

返回报文举例

{
    "traceNo": "99000009100010101732123",
    "orderNo": "171698602301",
    "transDate": "20161231120533",
    "returnCode": "00",
    "returnDesc": "SUCCESS",
    "rightsTimes": 1,
    "moneyBalance": 40.8,
    "pointBalance": 40000,
    "printDetail": {
        "cardNo64": "622562****8888",
        "bank": "中信银行",
        "paymentOrderNo": "201612315689412157458787",
        "pointSale": "0",
        "qrCode1": "htt://www.xxx.com/url",
        "qrCode2": "",
        "qrCode3": "",
        "barCode1": "12345679",
        "barCode2": "",
        "barCode3": ""
    },
    "memberDetail": {
        "memberId": "M000001545",
        "memberName": "TONY",
        "grade": "1",
        "status": "1",
        "balance": 1000.00,
        "pointBalance": 30000
    }
}
交易类接口

电子凭证查询

接口用途

交易流程说明

action

请求参数,收银机===>中间件

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复
qrcode String 电子凭证号 要查询的电子凭证号

请求报文举例

{
    "traceNo": "99000009100010101732123",
    "qrcode": "00000001235"
}

返回参数,中间件===>收银机

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复
orderNo String 交易订单号 单位:元
transDate String 交易时间 格式为:YYYYmmddHHMMSS
returnCode String 返回码 00表示交易成功,其他表示失败
returnDesc String 返回信息 交易结果描述或错误原因
canPayAmount Price 可抵用的总金额 单位:元
activityProductNo String 活动产品编号 该电子凭证所属的活动产品编号
activityProductName String 活动产品名称 该电子凭证所属的活动产品名称

返回报文举例

{
    "traceNo": "99000009100010101732123",
    "orderNo": "171698602301",
    "transDate": "20161231120533",
    "returnCode": "00",
    "returnDesc": "SUCCESS",
    "canPayAmount": 40.8,
    "activityProductNo": "2016123101",
    "activityProductName": "中信365权益"
}
交易类接口

会员集点

接口用途

action

请求参数,收银机===>中间件

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复
totalAmount Price 交易总金额 单位:元
undiscountAmount Price 不可打折金额 单位:元
activityNo String 集点活动编号 收银机集点时填写,后台集点不填
points Integer 集点点数 收银机集点时填写,后台集点不填
goodsDetail List<goodsDetail> 产品明细 验证产品明细时必填
memberDetail Object<memberDetail> 会员信息 会员支付时必填

请求报文举例

{
    "traceNo": "99000009100010101732123",
    "totalAmount": 40.8,
    "undiscountAmount": 0,
    "activityNo": "2016121901",
    "points": 100,
    "goodsDetail": [
        {
            "goodsCategory": "001",
            "goodsId": "P00001",
            "goodsName": "牙膏",
            "price": 8,
            "quantity": 2,
            "rebateCode": "000"
        },
        {
            "goodsCategory": "101",
            "goodsId": "P00002",
            "goodsName": "洗发水",
            "price": 24.8,
            "quantity": 1,
            "rebateCode": "000"
        }
    ],
    "memberDetail": {
        "memberId": "M000001545",
        "memberName": "TONY",
        "grade": "1",
        "status": "1",
        "balance": 1000.00,
        "pointBalance": 30000
    }
}

返回参数,中间件===>收银机

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复
orderNo String 交易订单号 易百生成
transDate String 交易时间 格式为:YYYYmmddHHMMSS
returnCode String 返回码 00表示交易成功,其他表示失败
returnDesc String 返回信息 交易结果描述或错误原因
activityProductNo String 集点活动产品编号  
activityProductName String 集点活动产品名称  
printDetail Object<printDetail> 打印信息 如需要在收银小票上打印信息时必填
memberDetail Object<memberDetail> 会员信息 返回本次交易的会员信息

返回报文举例

{
    "traceNo": "99000009100010101732123",
    "orderNo": "171698602301",
    "transDate": "20161231120533",
    "returnCode": "00",
    "returnDesc": "SUCCESS",
    "activityProductNo": "2016123102",
    "activityProductName": "圣诞集点活动",
    "printDetail": {
        "cardNo64": "622562****8888",
        "bank": "中国银行",
        "paymentOrderNo": "201612315689412157458787",
        "pointSale": "20000",
        "qrCode1": "htt://www.xxx.com/url",
        "qrCode2": "",
        "qrCode3": "",
        "barCode1": "12345679",
        "barCode2": "",
        "barCode3": ""
    },
    "memberDetail": {
        "memberId": "M000001545",
        "memberName": "TONY",
        "grade": "1",
        "status": "1",
        "balance": 1000.00,
        "pointBalance": 30000
    }
}

管理类接口

管理类接口

每日结算

接口用途

action

请求参数,收银机===>中间件

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复

请求报文举例

{
    "traceNo": "99000009100010101732123"
}

返回参数,中间件===>收银机

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复
transDate String 交易时间 格式为:YYYYmmddHHMMSS
returnCode String 返回码 00表示交易成功,其他表示失败
returnDesc String 返回信息 交易结果描述或错误原因
settleRecord List<settleRecord> 结算记录  
beginDate String 结算开始时间 格式:YYYYmmddHHMMSS
endDate String 结算结束时间 格式:YYYYmmddHHMMSS
volume Integer 总交易笔数  
totalReceiptAmount Price 商户实收总金额  
totalAmount Price 总金额 所有交易汇总的金额

返回报文举例

{
    "traceNo": "99000009100010101732123",
    "transDate": "20161231102201",
    "returnCode": "00",
    "returnDesc": "SUCCESS",
    "settleRecord": [
        {
            "activityNo": "2016101201",
            "activityName": "浦发银行积分兑换",
            "productName": "大杯",
            "customer": "浦发银行",
            "isRefund": false,
            "volume": 130,
            "totalReceiptAmount": "2082.10",
            "totalAmount": "2082.10"
        },
        {
            "activityNo": "2016120301",
            "activityName": "支付宝",
            "productName": "全场产品",
            "customer": "易百支付",
            "isRefund": false,
            "volume": 100,
            "totalReceiptAmount": "234.10",
            "totalAmount": "234.10"
        }
    ],
    "beginDate": "20161029113602",
    "endDate": "20161030113602",
    "volume": 230,
    "totalReceiptAmount": 1900,
    "totalAmount": 2000,
}
管理类接口

批上送

接口用途

action

请求参数,收银机===>中间件

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复
transCount Integer 本次上送笔数 必须与transRecord的List大小一致
beginTime String 交易开始时间 格式:YYYYmmddHHMMSS
endTime String 交易结束时间 格式:YYYYmmddHHMMSS
transRecord List<transRecord> 交易记录 每次上送最大支持5000笔交易

请求报文举例

{
    "traceNo": "99000009100010101732123",
    "transCount": 3,
    "beginTime": "20161231102201",
    "endTime": "20161231102230",
    "transRecord": [
      {
          "traceNo": "99000009100010101732123",
          "paidAmount": 100.00,
          "status": 0
      },
      {
          "traceNo": "99000009100010101732123",
          "paidAmount": 200.00,
          "status": 0
      },
      {
          "traceNo": "99000009100010101732123",
          "paidAmount": 300.00,
          "status": 0
      }
    ]
}

返回参数,中间件===>收银机

字段 类型 是否必填 字段意义 备注
traceNo String 收银机流水号 不允许重复
transDate String 交易时间 格式为:YYYYmmddHHMMSS
returnCode String 返回码 00表示交易成功,其他表示失败
returnDesc String 返回信息 交易结果描述或错误原因
transRecord List<transRecord> 对账后的记录 每次返回最大支持5000笔交易

返回报文举例

{
    "traceNo": "99000009100010101732123",
    "transDate": "20161231120533",
    "returnCode": "00",
    "returnDesc": "SUCCESS",
    "transRecord": [
      {
          "traceNo": "99000009100010101732123",
          "paidAmount": 100.00,
          "status": 1
      },
      {
          "traceNo": "99000009100010101732123",
          "paidAmount": 200.00,
          "status": 2
      },
      {
          "traceNo": "99000009100010101732123",
          "paidAmount": 300.00,
          "status": 3
      }
    ]
}