ebuy-cashier-middleware-api
文档介绍
文档目的
此为收银机与中间件的报文协议。 为实现收银POS与易百后端支付,兑换业务交易实时同步,减少对账误差,同时可以实现与易百对接后,支持多种支付,兑换方式的需求。
物理架构

-
流程说明:
1.收银机和易百POS采用USB口或者串口连接,各收银机之间通过局域网连接
2.各门店(含多台收银机)通过公网VPN(或者专线)连接易百POSP
3.易百POSP再通过专线连接各发卡银行
逻辑架构

-
流程说明:
1.收银机发起交易,并把相关的数据发给中间件接口软件,中间件接口软件对收银机发来的数据指令进行解析并作相关的处理
2.中间件接口软件发给MIS-POS相关的指令,让MIS-POS执行相关的操作
3.MIS-POS执行完相关的操作后获取相关数据发回给中间件接口软件
4.中间件接口软件作相应的处理,并打包8583包发给易百POSP
5.易百POSP根据交易类型做相应的处理,若需要转发给发卡行的就转发给发卡行并作相应的处理,最后返回响应报文8583包给中间件接口软件
6.中间件接口软件根据需要发响应的指令数据给MIS-POS(比如MAC校验)
7.MIS-POS作响应的处理,并返回响应数据给中间件接口软件
8.中间件接口软件把处理结果返回给收银机
名词解释
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=="}
- 其中00E7表示报文内容长度为231个字节
业务参数对象
产品明细
- JSON Key为
goodsDetail,必填
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| goodsCategory | String | 是 | 商品类别 | |
| goodsId | String | 是 | 商品编号 | |
| goodsName | String | 否 | 商品名称 | 用于报表、小票等显示 |
| price | Price | 是 | 单价 | 单位:元 |
| quantity | Integer | 是 | 数量 | |
| rebateCode | String | 否 | 折扣代码 | 收银机上已设置折扣,则必填,则必填,长度大于3位小于32位 |
| activityNo | String | 否 | 活动编号 | 易百后台交易成功,会返回本交易所属的活动编号 |
| memo | String | 否 | 备注 | 易百后台交易成功,会返回部分信息,如电子凭证号码 |
资金渠道
- JSON Key为
fundChannel,出现在返回报文中,非必填
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| 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 | 易百提供的优惠 | 如易百折扣,易百补贴等 |
打印信息
- JSON Key为
printDetail,出现在返回报文中,非必填
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 | |
|---|---|---|---|---|---|
| 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表示三联 | __ |
会员信息
- JSON Key为
memberDetail,非必填
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| memberId | String | 是 | 会员ID | |
| memberCode | String | 是 | 会员编号 | |
| memberName | String | 是 | 会员名称 | |
| memberPhone | String | 否 | 会员手机号码 | |
| grade | String | 否 | 会员等级 | |
| status | String | 否 | 会员状态 | |
| balance | Price | 否 | 会员卡余额 | |
| pointBalance | Price | 否 | 会员积分余额 |
结算记录
- JSON Key为
settleRecord,非必填
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| activityNo | String | 是 | 活动编号 | |
| activityName | String | 是 | 活动名称 | |
| productName | String | 是 | 产品名称 | |
| customer | String | 是 | 结算客户 | |
| isRefund | Boolean | 是 | 是否为退款 | |
| volume | Integer | 是 | 交易笔数 | |
| totalReceiptAmount | Price | 是 | 商户实收金额 | |
| totalAmount | Price | 是 | 小计金额 |
交易记录
- JSON Key为
transRecord,必填
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| traceNo | String | 是 | 原交易收银机流水号 | |
| paidAmount | String | 是 | 支付成功金额 | |
| status | String | 是 | 匹配状态 | 枚举如下 |
status枚举
- 0 上送初始时填写该值
- 1 paidAmount易百后台等于上送值
- 2 paidAmount易百后台大于上送值
- 3 paidAmount易百后台小于上送值
- 4 易百后台不存在该笔交易
- 5 易百后台该笔交易为失败交易
- 6 易百后台该笔交易为已撤销交易
- 7 易百后台该笔交易为已冲正交易
- 8 易百后台该笔交易为已退款交易
- 9 易百后台对账处理失败
- 10 易百后台有,但收银机不存在该笔交易
收单信息
- JSON Key为
paymentExtra,必填
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| 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来判断卡类型 |
优惠券明细
- JSON Key为
voucherDetail,必填
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| voucherId | String | 是 | 优惠券编号 | |
| voucherName | String | 是 | 优惠券名称 | 用于报表、小票等显示 |
| voucherType | String | 是 | 优惠券类型 | |
| voucherAmount | Price | 是 | 单价 | 单位:元 |
| voucherCode | String | 是 | 优惠券串号 |
交易类接口
银行卡收单
交易流程说明
action
cardPayment
请求参数,收银机===>中间件
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| 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
cardRedemption
请求参数,收银机===>中间件
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| 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
}
}
二维码支付或兑换
接口用途
- 支付宝支付
- 微信被扫支付
- 银行二维码支付
- 银行二维码积分兑换
- 银联立码付
- 百度支付
- 翼支付
- 其他二维码支付
- 产品券/代金券/折扣券/买N赠M券/立减券
- 外卖或自助点单订单码自动上屏
交易流程说明
- 该交易需要先采集二维码扫描器或键盘输入的二维码信息,再发至中间件,中间件收到请求后,检查包含qrcode内容信息再请求易百后台进行处理。
action
qrcodeSale
请求参数,收银机===>中间件
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| 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
inquiry
请求参数,收银机===>中间件
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| 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
}
}
支持查询的交易
- cardSale
- qrcodeSale
当日撤销(实体卡)
接口用途
- 需要对原交易整体撤销时,可以在原交易的同一天调用此接口。
交易流程说明
action
voidCardSale
请求参数,收银机===>中间件
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| 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
}
}
支持撤销的交易
- cardPayment
- cardRedemption
当日撤销(二维码)
接口用途
- 需要对原交易整体撤销时,可以在原交易的同一天调用此接口。
action
voidQrcodeSale
请求参数,收银机===>中间件
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| 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
}
}
支持撤销的交易
- qrcodeSale
隔日退款(实体卡)
接口用途
- 用户需要退款时,可以调用此接口,支持全额或部分退款(依赖支付机构的接口)。
交易流程说明
action
refundCardSale
请求参数,收银机===>中间件
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| 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
}
}
支持退款的交易
- cardPayment
- CardRedemption
隔日退款(二维码)
接口用途
- 用户需要退款时,可以调用此接口,支持全额或部分退款(依赖支付机构的接口)。
action
refundQrcodeSale
请求参数,收银机===>中间件
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| 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
}
}
支持退款的交易
- qrcodeSale
卡余额或权益查询
接口用途
- 银行卡积分余额查询
- 银行卡余额查询
- 银行卡权益次数查询
- 预付费卡余额查询
- 会员卡积分或余额查询
交易流程说明
action
balance
请求参数,收银机===>中间件
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| 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
}
}
电子凭证查询
接口用途
- 查询电子凭证的产品信息,可抵用的金额以及所属的活动,支持易百自有电子凭证和第三方电子凭证。
交易流程说明
- 该交易需要先采集二维码扫描器或键盘输入的二维码信息,再发至中间件,中间件收到请求后,检查包含ecoupon内容信息再请求易百后台进行处理。
action
ecouponInquiry
请求参数,收银机===>中间件
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| 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
accumulating
请求参数,收银机===>中间件
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| 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
summary
请求参数,收银机===>中间件
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| 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
batchUpload
请求参数,收银机===>中间件
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| 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
}
]
}