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
      }
    ]
}