ebuy-epointvoucher
操作说明
电子券核销相关文档
APP操作指南:













后台管理操作指南:











FAQ:
重要!客服记录或提交问题时,务必确认3个方面:
1.个人中心页面用户UID,
2.问题发生的具体日期时间,
3.问题描述(操作流程)。
1. 登录异常问题:
Q: 无法登录,显示'帐号不存在','密码错误'。
A: 请分别检查用户名是否正确,密码是否正确。
Q: 无法登录,'请等待'的加载画面消失后无其他内容显示。
A: 请检查网络连接情况,是否已联网。若用户联网正常,请客服联系易百技术部。
Q: 忘记密码。
A: 邮件至易百客服部(),提供UID或帐号,进行重置密码。
2. 核销及撤销问题:
Q: 常见返回码和对应的描述。
A: 返回信息及店员话术如下:
[01]电子凭证已使用,码已核销
使用済みのためコードが無効化されています
店员可告知用户这张电子券已被核销,让用户确认是否出示了已使用过的电子券。
[06]过期
期限切れです
店员可告知用户这张电子券已过期。
[09]电子凭证不存在
電子クーポンが存在しません
店员可告知用户后台系统中没有找到这张电子券,不可使用。
[27]劵和品牌不一致
クーポンとブランドが一致しません
店员可告知用户这张电子券不是本品牌的券。
[EB_UNSUPPORTED_COUPON]不支持的串码
e-Buyのクーポンではありません
不是易百受理的券,店员确认是否使用错核销终端。
[EB_SYSTEM_ERROR]系统异常
システムが故障しています
店员可告知用户后台系统异常,可稍后重试。
Q: 点击核销按钮,未进入摄像头模式。
A: 在ipad设置里找到本应用,打开'相机'权限。
Q: 扫码不成功,不识别二维码。
A: 先确认扫描的是否是二维码,然后确认二维码是否清晰,是否放平,是否在扫码框范围内。
Q: 扫码成功,返回失败图标页面。
A: 表示核销失败,具体原因可参考页面下方的返回信息。若仍无法理解,请客服联系易百技术部。
Q: 扫码成功后显示白屏,或者显示'核销失败'且没有提示信息。
A: 请检查网络连接情况,是否已联网。若用户联网正常,可在交易记录中查看核销结果(以时间和券号来比对)。
若交易记录中无此交易,则可认为核销失败,可尝试重新扫码。
Q: 扫码成功后,提示核销失败"不支持的串码"。
A: 表示该二维码不是易百核销范围内的券,请确认二维码内容是否为100开头,若有疑虑请客服联系易百技术部。
Q: 找不到在哪里撤销(前提是该商户允许撤销操作)。
A: 在交易记录中找到原交易,打开详情后,最下方的'核销撤销'按钮。若没有此按钮,表示该笔交易已被撤销或该笔交易未成功。
Q: 店员APP的核销状态和用户手机端的核销状态不一致的情况。
A1: 店员APP显示核销失败或未响应,用户手机端显示已核销:
首先店员在APP的交易记录列表里查看是否有该笔交易的核销结果(以时间和券号来比对),
若有记录且成功,则认为该交易成功,
若有记录但失败或是没有记录,请客服查看后台ERP(用券号查询),以ERP的状态为准。
A2: 店员APP显示核销成功,用户手机端无状态变化:
认为该交易成功。
3. 交易记录问题:
Q: 找不到刚刚做的核销记录。
A: 先确认核销时是否有返回交易结果,若确实是异常返回,则表示核销时发生网络中断等原因,导致后台并未收到此交易,所以交易列表中无法找到。
若核销时成功返回,则检测筛选条件是否从今日开始,若是筛选的多天,则有5分钟缓存。
Q: 核销失败记录的券名称显示异常。
A: 属于正常现象,后台未识别出该券号的归属或网络中断等原因造成的核销失败,券名称会显示为'核销失败'。
Q: 页面没有任何数据显示。
A: 先确页面正中间是否有'暂无数据'的图案,若有则表示该筛选条件下无交易。若没有图案,则确认网络连接是否正常,若用户联网正常,请客服联系易百技术部。
4. 其他常见问题:
Q: 下载完成打开APP,授权后页面无内容显示。
A: 部分ios版本第一次打开应用时会出现此问题,请退出并终止应用进程,然后重新打开APP即可。
Q: 什么样的券码可以用本APP核销。
A: 目前易百电子券的码bin为100,码长度为19,20,28位。
Q: 如何新增店员帐号。
A: 请商户负责人联系易百商务部(),提供开户文件。
ebuyweb-qrpay API接口文档
文档版本记录
| 版本号 | 更新日期 | 说明 | 更新人 |
|---|---|---|---|
| V1.0 | 2019/10/23 | 初始化导入 | 谈峥 |
| V1.1 | 2019/10/23 | 新增电子券类交易接口 | 谈峥 |
| V1.2 | 2019/10/24 | 新增主扫类 | 谈峥 |
| V1.3 | 2019/10/25 | 新增openAPI | 谈峥 |
| V1.4 | 2019/10/29 | 新增按券号查询历史交易 | 谈峥 |
接口说明
调用方法
| 内容 | 说明 |
|---|---|
| 通讯方式 | 采用 HTTPS 方式访问 |
| 提交方法 | POST (application/json) |
| 交互数据格式 | JSON |
| 字符编码 | UTF-8 |
报文结构
请求报文和返回报文都采用如下的报文结构
| 参数 | 类型 | 参考数据 | 参数说明 | 备注 |
|---|---|---|---|---|
| tokenId | String | JIOQWDIQN23123NOININV | token值 | 用于校验身份 |
| lang | String | en/jp/cn | 语言类型 | 用于区分语言 |
| body | String | BASE64 | 报文内容 | 具体接口有详细说明,本域需要采用BASE64编码 |
| timestamp | String | 1483372334 | Unix时间戳 | 单位:秒,中间件需要在收到返回时同步该时间 |
报文举例
{
"timestamp": 1551346625000,
"tokenId": "e29877a73d2141598e0e54ed24fc2e5b",
"body": "",
"lang": "ja"
}
管理类接口
新页面
登录
接口用途
- 用户名密码验证,下发token
接口地址
请求参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| traceNo | String | 是 | app流水号 | 不允许重复 |
| loginName | String | 是 | 用户名 | |
| loginPsw | String | 是 | 密码 | 需加密上传:MD5(loginName + MD5(psw)) |
请求报文举例
{
"traceNo": "APPTEST9100010101732123010",
"loginName": "111",
"loginPsw":"C529D04DD76D856FE3A8A871B476DC4D"
}
返回参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| returnCode | String | 是 | 返回码 | 00表示交易成功,其他表示失败 |
| returnDesc | String | 是 | 返回信息 | 交易结果描述或错误原因 |
| tokenId | String | 是 | token | |
| merchantAddr | String | 是 | 商户地址 | |
| merchantName | String | 是 | 商户名称 | |
| brandName | String | 是 | 品牌名称 | |
| brandLogo | String | 是 | 品牌logo | |
| operator | Operator | 是 | 用户信息 |
返回报文举例
{
"returnCode": "00",
"tokenId": "5f2f330464bd4d2ab9cd57604fbffb99",
"merchantAddr": "東京都中央区銀座8-8-11",
"merchantName": "博品館TOY PARK",
"returnDesc": "登录成功",
"brandName": "博品館",
"operator": {
"operatorId": 38,
"alias": "22222",
"nickName": "hakuhinkan001403",
"status": 1,
"role": 3,
"func": "0001120",
"merchantId": 323427,
"tid": "94392307",
"currency": "JPY",
"loginName": "hakuhinkan001403"
},
"brandLogo": "https://jperp3.e-buychina.com/upload/20190819153240_merchant_c1562959.png"
}
刷新Token
接口用途
- 更新token
接口地址
请求参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| traceNo | String | 是 | app流水号 | 不允许重复 |
请求报文举例
{
"traceNo": "APPTEST9100010101732123010"
}
返回参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| returnCode | String | 是 | 返回码 | 00表示交易成功,其他表示失败 |
| returnDesc | String | 是 | 返回信息 | 交易结果描述或错误原因 |
| tokenId | String | 是 | token |
返回报文举例
{
"returnCode": "00",
"tokenId": "1118207c6d424de3a7bcc128aa728018",
"returnDesc": "更新成功"
}
个人主页信息
接口用途
- 获取个人信息,显示主页
接口地址
请求参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| traceNo | String | 是 | app流水号 | 不允许重复 |
请求报文举例
{
"traceNo": "APPTEST9100010101732123010"
}
返回参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| returnCode | String | 是 | 返回码 | 00表示交易成功,其他表示失败 |
| returnDesc | String | 是 | 返回信息 | 交易结果描述或错误原因 |
| operator | Operator | 是 | 用户信息 | |
| operatorChild | List<Operator> | 否 | 店员列表 | 主账号为店长时下发 |
返回报文举例
{
"returnCode": "00",
"operatorChild": [{
"role": 3,
"nickName": "yangxm",
"loginName": "yangxm",
"remark": "杨",
"operatorId": 34,
"status": 1
}, {
"role": 3,
"nickName": "hello",
"loginName": "hello",
"remark": "qqq",
"operatorId": 33,
"status": 0
}],
"returnDesc": "处理成功",
"operator": {
"role": 4,
"merchantId": 2430,
"nickName": "111",
"loginName": "111",
"alias": "69AE3117EC013818",
"currency": "CNY",
"operatorId": 27,
"tid": "99001061",
"status": 1
}
}
新增/修改店员信息
接口用途
- 店员可修改自己帐号信息,店长可修改自己帐号信息及店员的部分信息
接口地址
请求参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| traceNo | String | 是 | app流水号 | 不允许重复 |
| operator | Operator | 是 | 用户信息 | 新增:上送全部字段;修改:只上送id及需要修改的字段 |
请求报文举例
{
"traceNo" : "MW1560133047843001211",
"operator" : {
"status" : 1,
"remark" : "222",
"loginName" : "111",
"role" : 3,
"loginPsw" : "C529D04DD76D856FE3A8A871B476DC4D",
"nickName" : "111",
"operatorId" : 27
}
}
返回参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| returnCode | String | 是 | 返回码 | 00表示交易成功,其他表示失败 |
| returnDesc | String | 是 | 返回信息 | 交易结果描述或错误原因 |
返回报文举例
{
"returnCode": "00",
"returnDesc": "处理成功"
}
交易类接口
电子券核销/二维码被扫
接口用途
- 二维码被扫类交易统一入口
接口地址
请求参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| traceNo | String | 是 | app流水号 | 不允许重复 |
| totalAmount | Price | 是 | 交易总金额 | 单位:元 |
| qrcode | String | 是 | 二维码内容 | 二维码内容 |
请求报文举例
{
"traceNo": "990000091000101620150201",
"totalAmount": 40.8,
"qrcode": "280123121234567890"
}
返回参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| traceNo | String | 是 | 收银机流水号 | 不允许重复 |
| orderNo | String | 是 | 交易订单号 | 易百系统参考号 |
| transDate | String | 是 | 交易时间 | 格式为:yyyyMMddHHmmss |
| returnCode | String | 是 | 返回码 | 00表示交易成功,其他表示失败 |
| returnDesc | String | 是 | 返回信息 | 交易结果描述或错误原因 |
| paidAmount | Price | 是 | 支付成功总金额 | 单位:元 |
| receiptAmount | Price | 否 | 商户实收金额 | 单位:元 |
| invoiceAmount | Price | 否 | 商户开票金额 | 单位:元 |
| canPayAmount | Price | 是 | 电子券面值 | 单位:元 |
| exchangeRate | Number(8,6) | 否 | 汇率 | 1外币等于多少人民币 |
| currency | String | 否 | 货币类型 | 例如:CNY |
| activityProductNo | String | 否 | 活动产品编号 | |
| activityProductName | String | 否 | 活动产品名称 | |
| voucherDetail | List<voucherDetail> | 否 | 优惠券信息 | 返回本次交易的优惠券信息 |
返回报文举例
{
"extendsData":{
},
"returnCode":"00",
"remainTimes":0,
"invoiceAmount":1000,
"receiptAmount":1000,
"activityProductNo":"00000000507096",
"transDate":"20190909150302",
"activityProductName":"ビックカメラ1000円分クーポン券",
"orderNo":"181481000584",
"voucherDetail":[
{
"voucherCode":"10010596750080404109"
}
],
"canPayAmount":1000,
"paidAmount":1000,
"traceNo":"794_40392571_1568008981496",
"uuid":"c8c668e356b441ccbd6e253d1992eae3",
"returnDesc":"SUCCESS",
"step":"01",
"rpcContext":"10.255.3.71:46120-->10.255.3.71:30032"
}
查询交易结果
接口用途
- 通过原流水号查询交易结果
接口地址
请求参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| traceNo | String | 是 | app流水号 | 不允许重复 |
| originalTraceNo | String | 是 | 原app流水号 |
请求报文举例
{
"traceNo": "APPTEST9100010101732123012",
"originalTraceNo": "APPTEST9100010101732123018"
}
返回参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| traceNo | String | 是 | 收银机流水号 | 不允许重复 |
| orderNo | String | 是 | 交易订单号 | 易百系统参考号 |
| transDate | String | 是 | 交易时间 | 格式为:yyyyMMddHHmmss |
| returnCode | String | 是 | 返回码 | 00表示交易成功,其他表示失败 |
| returnDesc | String | 是 | 返回信息 | 交易结果描述或错误原因 |
| paidAmount | Price | 是 | 支付成功总金额 | 单位:元 |
| receiptAmount | Price | 否 | 商户实收金额 | 单位:元 |
| invoiceAmount | Price | 否 | 商户开票金额 | 单位:元 |
| canPayAmount | Price | 是 | 电子券面值 | 单位:元 |
| exchangeRate | Number(8,6) | 否 | 汇率 | 1外币等于多少人民币 |
| currency | String | 否 | 货币类型 | 例如:CNY |
| activityProductNo | String | 否 | 活动产品编号 | |
| activityProductName | String | 否 | 活动产品名称 | |
| voucherDetail | List<voucherDetail> | 否 | 优惠券信息 | 返回本次交易的优惠券信息 |
返回报文举例
{
"extendsData":{
},
"returnCode":"00",
"remainTimes":0,
"invoiceAmount":1000,
"receiptAmount":1000,
"activityProductNo":"00000000507096",
"transDate":"20190909150302",
"activityProductName":"ビックカメラ1000円分クーポン券",
"orderNo":"181481000584",
"voucherDetail":[
{
"voucherCode":"10010596750080404109"
}
],
"canPayAmount":1000,
"paidAmount":1000,
"traceNo":"794_40392571_1568008981496",
"uuid":"c8c668e356b441ccbd6e253d1992eae3",
"returnDesc":"SUCCESS",
"step":"01",
"rpcContext":"10.255.3.71:46120-->10.255.3.71:30032"
}
撤销
接口用途
- 撤销原交易(上送交易时间且不为当日时会自动调用业务主机退款接口)
接口地址
请求参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| traceNo | String | 是 | app流水号 | 不允许重复 |
| originalTraceNo | String | 是 | 原app流水号 |
请求报文举例
{
"traceNo": "APPTEST9100010101732123012",
"originalTraceNo": "APPTEST9100010101732123018"
}
返回参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| 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 |
| activityProductNo | String | 否 | 活动产品编号 | |
| activityProductName | String | 否 | 活动产品名称 | |
| voucherDetail | List<voucherDetail> | 否 | 优惠券信息 | 返回本次交易的优惠券信息 |
返回报文举例
{
"extendsData":{
},
"returnCode":"00",
"invoiceAmount":0,
"receiptAmount":0,
"transDate":"20190909184245",
"activityProductName":"ビックカメラ1000円分クーポン券",
"orderNo":"181481000589",
"voucherDetail":[
{
"voucherCode":"10010526553080405449"
}
],
"paidAmount":0,
"traceNo":"209_59392775_1568022164957",
"uuid":"fccd5fccae5a4efe88222439bd530d9d",
"returnDesc":"操作成功",
"rpcContext":"10.255.3.71:46120-->10.255.3.71:30032",
"step":"01"
}
筛选交易列表
接口用途
- 根据条件筛选交易列表
接口地址
请求参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| traceNo | String | 是 | app流水号 | 不允许重复 |
| beginDateTime | String | 否 | 筛选开始时间 | 2019-06-20 12:00:00(不填默认当天0点) |
| endDateTime | String | 否 | 筛选结束时间 | 2019-06-25 23:59:59(不填默认此刻) |
| pagesize | int | 是 | 每页条数 | 50 |
| pageno | int | 是 | 当前页数 | 1 |
| noStatistics | String | 否 | 无需可视化图表数据 | 默认yes |
| conditionInfo | ConditionInfo | 是 | 其他筛选条件 | 只上送筛选项 |
请求报文举例
{
"traceNo": "APPTEST9100010101732123013",
"beginDateTime": "2019-06-10 00:00:00",
"endDateTime": "2019-06-18 23:59:59",
"pagesize": 50,
"pageno": 1,
"noStatistics": "yes",
"conditionInfo": {
"transType": "010", //核销 撤销 退款
"returnCode": "!00" //!为不等于
}
}
返回参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| returnCode | String | 是 | 返回码 | 00表示交易成功,其他表示失败 |
| returnDesc | String | 是 | 返回信息 | 交易结果描述或错误原因 |
| totalamount | Price | 是 | 统计总金额 | 单位:元 |
| totalcount | int | 否 | 统计总笔数 | 单位:元 |
| saleamount | Price | 否 | 交易金额 | 单位:元 |
| refundamount | Price | 否 | 退款金额 | 单位:元 |
| currency | String | 否 | 货币类型 | 例如:CNY |
| entitys | List<TransInfo> | 否 | 交易列表 | |
| dateDatasList | List<DateData> | 否 | 按日统计结果 | |
| appNameDatasList | List<AppNameData> | 否 | 按应用统计结果 |
返回报文举例
{
"dateDatasList": [{
"amount": 0.02,
"name": "20190402",
"count": 3
},{
"amount": 0.02,
"name": "20190403",
"count": 3
}],
"totalcount": 3,
"returnCode": "00",
"totalamount": 0.02,
"saleamount": 0.02,
"appNameDatasList": [{
"amount": 0.02,
"name": "Alipay",
"count": 2
},{
"amount": 0,
"count": 1,
"name": "Ecoupon"
}],
"currency": "CNY",
"refundamount": 0,
"returnDesc": "获取成功",
"entitys": [
{
"createTime": 1569922420000,
"returnCode": "00",
"transtime": "183340",
"transcationId": 514,
"posno": "",
"transdate": "20191001",
"isRefund": "0",
"amount": "333.33",
"appName": "Ecoupon",
"isVoid": "0",
"orderNo": "29_36392055_1569922420023",
"nickName": "matsuya001店長",
"qrcode": "10010506195921748853",
"transclass": "ecoupon-verify",
"traceNo": "29_36392055_1569922420023"
},
{
"returnCode": "00",
"transtime": "145027",
"amount": "0.01",
"orderNo": "EP1904021450400686002000106",
"nickName": "matsuya001店長",
"transclass": "qrpay-sale",
"isVoid": "0",
"createTime": 1554187835000,
"appName": "AlipayQrpay",
"isRefund": "0",
"transcationId": 1098,
"transdate": "20190402"
},
{
"returnCode": "00",
"transtime": "143719",
"amount": "0.01",
"orderNo": "EP1904021437320686002000098",
"nickName": "matsuya001店長",
"transclass": "qrpay-sale",
"isVoid": "0",
"createTime": 1554187047000,
"appName": "AlipayQrpay",
"isRefund": "0",
"transcationId": 1097,
"transdate": "20190403"
}
],
}
新页面按券号查询历史交易
接口用途
- 根据券号筛选交易列表
接口地址
请求参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| traceNo | String | 是 | app流水号 | 不允许重复 |
| conditionInfo | ConditionInfo | 是 | 其他筛选条件 | 只上送筛选项 |
请求报文举例
{
"traceNo": "APPTEST9100010101732123013",
"conditionInfo": {
"qrcode": "12312312313123"
}
}
返回参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| returnCode | String | 是 | 返回码 | 00表示交易成功,其他表示失败 |
| returnDesc | String | 是 | 返回信息 | 交易结果描述或错误原因 |
| totalamount | Price | 是 | 统计总金额 | 单位:元 |
| totalcount | int | 否 | 统计总笔数 | 单位:元 |
| saleamount | Price | 否 | 交易金额 | 单位:元 |
| refundamount | Price | 否 | 退款金额 | 单位:元 |
| currency | String | 否 | 货币类型 | 例如:CNY |
| entitys | List<TransInfo> | 否 | 交易列表 | |
| dateDatasList | List<DateData> | 否 | 按日统计结果 | |
| appNameDatasList | List<AppNameData> | 否 | 按应用统计结果 |
返回报文举例
{
"dateDatasList": [{
"amount": 0.02,
"name": "20190402",
"count": 3
},{
"amount": 0.02,
"name": "20190403",
"count": 3
}],
"totalcount": 3,
"returnCode": "00",
"totalamount": 0.02,
"saleamount": 0.02,
"appNameDatasList": [{
"amount": 0.02,
"name": "Alipay",
"count": 2
},{
"amount": 0,
"count": 1,
"name": "Ecoupon"
}],
"currency": "CNY",
"refundamount": 0,
"returnDesc": "获取成功",
"entitys": [
{
"createTime": 1569922420000,
"returnCode": "00",
"transtime": "183340",
"transcationId": 514,
"posno": "",
"transdate": "20191001",
"isRefund": "0",
"amount": "333.33",
"appName": "Ecoupon",
"isVoid": "0",
"orderNo": "29_36392055_1569922420023",
"nickName": "matsuya001店長",
"qrcode": "10010506195921748853",
"transclass": "ecoupon-verify",
"traceNo": "29_36392055_1569922420023"
},
{
"returnCode": "00",
"transtime": "145027",
"amount": "0.01",
"orderNo": "EP1904021450400686002000106",
"nickName": "matsuya001店長",
"transclass": "qrpay-sale",
"isVoid": "0",
"createTime": 1554187835000,
"appName": "AlipayQrpay",
"isRefund": "0",
"transcationId": 1098,
"transdate": "20190402"
},
{
"returnCode": "00",
"transtime": "143719",
"amount": "0.01",
"orderNo": "EP1904021437320686002000098",
"nickName": "matsuya001店長",
"transclass": "qrpay-sale",
"isVoid": "0",
"createTime": 1554187047000,
"appName": "AlipayQrpay",
"isRefund": "0",
"transcationId": 1097,
"transdate": "20190403"
}
],
}
主扫类接口
获取主扫二维码
接口用途
- 获取主扫二维码
接口地址
请求参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| traceNo | String | 是 | app流水号 | 不允许重复 |
| totalAmount | Price | 是 | 金额 |
请求报文举例
{
"traceNo": "APPTEST9100010101732123012",
"totalAmount": 20
}
返回参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| returnCode | String | 是 | 返回码 | 00表示交易成功,其他表示失败 |
| returnDesc | String | 是 | 返回信息 | 交易结果描述或错误原因 |
| merchantQrcode | String | 是 | 二维码内容 |
返回报文举例
{
"returnCode": "00",
"merchantQrcode": "http://qrpaytest.e-buychina.com.cn/api/user/58D49A3D48AA51D5730BAD8B2B1D16FA4AD5ABA1C0F866C7DA9E0F49778B3214B270C474D705F7C4C6FE3C47434E1EC1545B8F8EF2EE4A5AEFE42781FE69818A",
"returnDesc": "操作成功"
}
交易结果通知(收单机构通知易百)
接口用途
- 接收收单机构的异步通知
接口地址
请求参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| appName | String | 是 | 对应易百appName | |
| mid | String | 是 | 对应易百mid | |
| body参数 | 是 | 收单机构通知报文 | 以机构报文为准 |
请求报文举例
######支付宝######
{
paytools_pay_amount: [{
"ALIPAYACCOUNT": "0.49"
}],
gmt_create: 2019 - 03 - 21 10: 14: 05,
seller_email: forex_123058 @alitest.com,
forex_rate: 4.91210000,
subject: myMerchant000021,
sign: 8 fb30d789ee7b54d8bae142e5a02b7c1,
buyer_id: 2088622894549999,
notify_id: 2019032100222101420049991000018313,
notify_type: trade_status_sync,
trans_currency: SGD,
price: 0.49,
trade_status: TRADE_SUCCESS,
total_fee: 0.49,
currency: SGD,
sign_type: MD5,
seller_id: 2088621894801724,
buyer_email: cnbuyer_3299 @alitest.com,
notify_action_type: payByAccountAction,
notify_time: 2019 - 03 - 21 10: 18: 27,
gmt_payment: 2019 - 03 - 21 10: 14: 18,
quantity: 1,
extra_common_param: {
"qrcode": "https://qr.alipay.com/ocx00368onfz7rl22r7fg00",
},
trans_amount: 0.10,
out_trade_no: 767929382017474557294073882552983325121553134446160,
trade_no: 2019032122001449991000001001
}
返回参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| body参数 | String | 是 | 返回信息 | 按机构要求返回 |
返回报文举例
######支付宝######
success
预授权类接口
预授权冻结
接口用途
- 预授权冻结操作。
接口地址
请求参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| traceNo | String | 是 | 收银机流水号 | 不允许重复 |
| totalAmount | Price | 是 | 交易总金额 | 单位:元 |
| qrcode | String | 是 | 二维码内容 | 串号、一维码或二维码内容 |
请求报文举例
{
"traceNo": "99000009100010101732123",
"totalAmount": 40.8,
"qrcode": "280123121234567890"
}
返回参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| 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 | 否 | 折扣编码 | 由收银机分配,用于入账计折扣类型 |
| discountNum | Number | 否 | 固定金额折扣数量 | 用于入账计折扣类型的数量 |
| tenderCode | String | 否 | 支付方式编码 | 由收银机分配,用于入账计支付方式 |
| 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.api-location-url.com/url",
"qrCode2": "",
"qrCode3": "",
"barCode1": "12345679",
"barCode2": "",
"barCode3": ""
},
"memberDetail": {
"memberId": "M000001545",
"memberName": "TONY",
"grade": "1",
"status": "1",
"balance": 1000.00,
"pointBalance": 30000
},
"voucherDetail": [
{
"voucherId": "001",
"voucherName": "现金优惠券",
"voucherType": "现金",
"voucherCode": "123456789",
"channelAmount": "20.8"
},
{
"voucherId": "002",
"voucherName": "买一赠一优惠券",
"voucherType": "买赠",
"voucherCode": "1232136781",
"channelAmount": "20.8"
}
]
}
预授权查询
接口用途
- 预授权查询操作。
接口地址
请求参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| traceNo | String | 是 | 收银机流水号 | 不允许重复 |
| originalTraceNo | String | 是 | 原收银机流水号 |
请求报文举例
{
"traceNo": "99000009100010101732123",
"originalTraceNo": "280123121234567890"
}
返回参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| 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 | 否 | 折扣编码 | 由收银机分配,用于入账计折扣类型 |
| discountNum | Number | 否 | 固定金额折扣数量 | 用于入账计折扣类型的数量 |
| tenderCode | String | 否 | 支付方式编码 | 由收银机分配,用于入账计支付方式 |
| 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.api-location-url.com/url",
"qrCode2": "",
"qrCode3": "",
"barCode1": "12345679",
"barCode2": "",
"barCode3": ""
},
"memberDetail": {
"memberId": "M000001545",
"memberName": "TONY",
"grade": "1",
"status": "1",
"balance": 1000.00,
"pointBalance": 30000
},
"voucherDetail": [
{
"voucherId": "001",
"voucherName": "现金优惠券",
"voucherType": "现金",
"voucherCode": "123456789",
"channelAmount": "20.8"
},
{
"voucherId": "002",
"voucherName": "买一赠一优惠券",
"voucherType": "买赠",
"voucherCode": "1232136781",
"channelAmount": "20.8"
}
]
}
预授权解冻
接口用途
- 预授权解冻操作。
接口地址
请求参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| traceNo | String | 是 | 收银机流水号 | 不允许重复 |
| refundAmount | Price | 是 | 解冻总金额 | 单位:元 |
| originalTraceNo | String | 是 | 原收银机流水号 |
请求报文举例
{
"traceNo": "99000009100010101732123",
"refundAmount": 40.8,
"originalTraceNo": "280123121234567890"
}
返回参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| 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 | 否 | 折扣编码 | 由收银机分配,用于入账计折扣类型 |
| discountNum | Number | 否 | 固定金额折扣数量 | 用于入账计折扣类型的数量 |
| tenderCode | String | 否 | 支付方式编码 | 由收银机分配,用于入账计支付方式 |
| 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.api-location-url.com/url",
"qrCode2": "",
"qrCode3": "",
"barCode1": "12345679",
"barCode2": "",
"barCode3": ""
},
"memberDetail": {
"memberId": "M000001545",
"memberName": "TONY",
"grade": "1",
"status": "1",
"balance": 1000.00,
"pointBalance": 30000
},
"voucherDetail": [
{
"voucherId": "001",
"voucherName": "现金优惠券",
"voucherType": "现金",
"voucherCode": "123456789",
"channelAmount": "20.8"
},
{
"voucherId": "002",
"voucherName": "买一赠一优惠券",
"voucherType": "买赠",
"voucherCode": "1232136781",
"channelAmount": "20.8"
}
]
}
预授权交易
接口用途
- 预授权交易操作。
接口地址
请求参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| traceNo | String | 是 | 收银机流水号 | 不允许重复 |
| totalAmount | Price | 是 | 交易总金额 | 单位:元 |
| originalTraceNo | String | 是 | 原冻结操作流水号 | 扫码获得 |
请求报文举例
{
"traceNo": "99000009100010101732123",
"totalAmount": 40.8,
"originalTraceNo": "280123121234567890"
}
返回参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| 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 | 否 | 折扣编码 | 由收银机分配,用于入账计折扣类型 |
| discountNum | Number | 否 | 固定金额折扣数量 | 用于入账计折扣类型的数量 |
| tenderCode | String | 否 | 支付方式编码 | 由收银机分配,用于入账计支付方式 |
| 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.api-location-url.com/url",
"qrCode2": "",
"qrCode3": "",
"barCode1": "12345679",
"barCode2": "",
"barCode3": ""
},
"memberDetail": {
"memberId": "M000001545",
"memberName": "TONY",
"grade": "1",
"status": "1",
"balance": 1000.00,
"pointBalance": 30000
},
"voucherDetail": [
{
"voucherId": "001",
"voucherName": "现金优惠券",
"voucherType": "现金",
"voucherCode": "123456789",
"channelAmount": "20.8"
},
{
"voucherId": "002",
"voucherName": "买一赠一优惠券",
"voucherType": "买赠",
"voucherCode": "1232136781",
"channelAmount": "20.8"
}
]
}
预授权交易查询
接口用途
- 预授权交易查询操作。
接口地址
请求参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| traceNo | String | 是 | 收银机流水号 | 不允许重复 |
| originalTraceNo | String | 是 | 原交易流水号 |
请求报文举例
{
"traceNo": "99000009100010101732123",
"originalTraceNo": "280123121234567890"
}
返回参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| 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 | 否 | 折扣编码 | 由收银机分配,用于入账计折扣类型 |
| discountNum | Number | 否 | 固定金额折扣数量 | 用于入账计折扣类型的数量 |
| tenderCode | String | 否 | 支付方式编码 | 由收银机分配,用于入账计支付方式 |
| 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.api-location-url.com/url",
"qrCode2": "",
"qrCode3": "",
"barCode1": "12345679",
"barCode2": "",
"barCode3": ""
},
"memberDetail": {
"memberId": "M000001545",
"memberName": "TONY",
"grade": "1",
"status": "1",
"balance": 1000.00,
"pointBalance": 30000
},
"voucherDetail": [
{
"voucherId": "001",
"voucherName": "现金优惠券",
"voucherType": "现金",
"voucherCode": "123456789",
"channelAmount": "20.8"
},
{
"voucherId": "002",
"voucherName": "买一赠一优惠券",
"voucherType": "买赠",
"voucherCode": "1232136781",
"channelAmount": "20.8"
}
]
}
预授权交易退款
接口用途
- 预授权交易退款操作
接口地址
请求参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| traceNo | String | 是 | 收银机流水号 | 不允许重复 |
| refundAmount | Price | 是 | 退款总金额 | 单位:元 |
| originalTraceNo | String | 是 | 原收银机流水号 |
请求报文举例
{
"traceNo": "99000009100010101732123",
"refundAmount": 40.8,
"originalTraceNo": "280123121234567890"
}
返回参数
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| 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 | 否 | 折扣编码 | 由收银机分配,用于入账计折扣类型 |
| discountNum | Number | 否 | 固定金额折扣数量 | 用于入账计折扣类型的数量 |
| tenderCode | String | 否 | 支付方式编码 | 由收银机分配,用于入账计支付方式 |
| 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.api-location-url.com/url",
"qrCode2": "",
"qrCode3": "",
"barCode1": "12345679",
"barCode2": "",
"barCode3": ""
},
"memberDetail": {
"memberId": "M000001545",
"memberName": "TONY",
"grade": "1",
"status": "1",
"balance": 1000.00,
"pointBalance": 30000
},
"voucherDetail": [
{
"voucherId": "001",
"voucherName": "现金优惠券",
"voucherType": "现金",
"voucherCode": "123456789",
"channelAmount": "20.8"
},
{
"voucherId": "002",
"voucherName": "买一赠一优惠券",
"voucherType": "买赠",
"voucherCode": "1232136781",
"channelAmount": "20.8"
}
]
}
参数对象说明
用户信息
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| operatorId | Long | 是 | 用户id | |
| alias | String | 否 | 别名 | 用于推送 |
| nickName | String | 是 | 昵称 | |
| role | int | 是 | 角色 | 3店员,4店长 |
| merchantId | int | 是 | 门店主键id | |
| tid | String | 是 | 绑定使用的终端号 | |
| currency | String | 是 | 该帐号币种 | |
| loginName | String | 是 | 用户名 | |
| func | String | 是 | 功能配置 | 见func字段解析 |
func字段解析:
第1位:是否支持主扫
第2位:是否支持被扫
第3位:是否支持预授权
第4位:是否支持电子券
第5位:是否禁止撤销
第6位:是否添加回到首页按钮
第7位:是否强制输入收银流水号
第8位:是否token保持
筛选条件信息
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| transType | String | 否 | 交易类型筛选 | 按位多选 |
| returnCode | String | 否 | 交易结果筛选 | |
| qrcode | String | 否 | 券码 |
transType解析
第1位:正交易
第2位:撤销
第3位:退款
如"010"代表只筛选撤销交易
returnCode解析
00表示筛选成功交易
!00表示筛选不成功的交易
ERROR_CODE表示筛选该返回码的交易
交易数据信息
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| returnCode | String | 否 | 交易结果筛选 | |
| amount | Price | 否 | 交易金额 | 单位:元 |
| traceNo | String | 是 | app流水号 | |
| appName | String | 是 | 易百后台业务主机 | |
| qrcode | String | 否 | 券码号 | |
| nickName | String | 否 | 该笔交易的操作员 | |
| transdate | String | 是 | 交易日期 | yyyyMMdd |
| transtime | String | 是 | 交易时间 | hhmmss |
| transclass | String | 是 | 交易类型 | |
| is_void | String | 是 | 是否撤销 | |
| is_refund | String | 是 | 是否退款 | |
| transcationId | Long | 是 | 交易记录主键 | |
| createTime | Long | 是 | 交易时间时间戳 | |
| posno | String | 否 | 商户自定义流水号 |
按日统计结果
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| amount | Price | 是 | 交易金额 | |
| count | int | 是 | 交易笔数 | |
| name | String | 是 | 日期 |
按应用统计结果
| 字段 | 类型 | 是否必填 | 字段意义 | 备注 |
|---|---|---|---|---|
| amount | Price | 是 | 交易金额 | |
| count | int | 是 | 交易笔数 | |
| name | String | 是 | 应用名 |
主扫open-api
版本历史及更新说明
v1.00 2018-07-16 17:00 中文第一版
v1.01 2018-07-16 18:00 修复描述错误
v1.02 2018-07-16 19:00 新增查询接口和退款接口的部分返回字段
v2.00 2019-10-10 15:00 简化对接方式
v2.01 2019-10-10 18:00 测试环境更新为https
前言
流程说明
-
第三方发起二维码数据请求,并把相关的身份标志提交给易百开放的接口,易百安全验证且验证身份通过后会返回二维码对应的数据;
-
第三方获取到二维码数据,用数据以二维码的样式展示,展示的载体由第三方自行定义
-
消费者打开易百所支持的支付类钱包,扫描第三方所展示的二维码,确认金额后支付;
-
易百得到消费者支付的结果生成对应的支付记录,供第三方查询支付结果;
名词解释和统一报文结构
-
字段说明中,N为必填,O为选填。
-
响应报文外层参数callReturnCode:表示接口调用是否成功;
响应报文body内参数returnCode:表示该请求实际的交易结果是否成功;
请求 (加密,签名前):
{
"action": "merchantGetCodeImpl", //N,action值,不同接口对应不同的action
"uid": "sg_1458_001", //N,商户号,由易百分配
"psw": "F52FB1124231E6BA683F5C2CB5C8ADF6", //N,终端号,由易百分配,需加密见1.4
"body": { //N,报文主体内容,需要加密,加密方法见1.4
"orderNo": "12345678920",
"totalAmount": 0.01,
"goodsDetail": [{
"goodsId": "434",
"goodsName": "奶茶",
"price": 0.01,
"quantity": 1
}]
},
"sign": "xxxxxxx" //N,签名值,签名方法见1.5
}
响应(验签,解密后):
{
"sign": "xxxxxxx", //N,签名值,验签方法见1.5
"body": { //N,报文主题内容,解密方法见1.4
"returnCode": "00",
"orderNo": "12345678920",
"returnDesc": "操作成功",
"orderNoQrcode": "http://qrpaytest.e-buychina.com.cn/api/user/0D8DF0B717B4190292B8A6044DDC1B9B65CE6B244F3706A70BCD9C7C5802C15D0C59789C48F7F308572C6DFFD4694C7F730A27C2290BA9B1DFFA97C8AE14A731"
},
"callReturnCode": "00", //N,接口调用结果返回码
"callReturnDesc": "Interface call success", //N,接口调用结果返回结果
"action": "merchantGetCodeImpl", //N,action值,和请求一致
}
body报文主题加解密方法
body加密时,对body的JSON格式字符串进行Base64加密。
body解密时,进行Base64解密。
psw加密:MD5(uid + MD5(psw))
MD5均为32位加密,大写
sign签名和验签方法
-
签名数据(除sign字段外按key字典顺序按key1=value1&key2=value2&key3=value3&......拼接),最后拼接KEY=xxxx(易百提供的macKey);
-
签名时,对签名数据进行MD5加密(32位);
-
测试环境暂时不验签。
请求地址及测试参数
- 通讯方式HTTPS,字符编码UTF-8,交互数据格式Json
- 测试环境请求地址:
https://qrpaymobiletest.e-buychina.com.cn/api/openApi/merchant
- 测试参数:
uid:sg_1458_001
psw:654321
key:499E8A1D1E295E76688A5D9B695312E9
API列表
获取二维码
action名称:merchantGetCodeImpl
方法说明:用于获取二维码url
请求参数:body内字段如下:
{
"orderNo": "12345678920", //N,商户订单号,必须全局唯一不重复
"totalAmount": 0.01, //N,订单总金额,单位元
"goodsDetail": [{ //O,产品明细
"goodsId": "434", //N,产品id
"goodsName": "奶茶", //N,产品名称
"price": 0.01, //N,产品价格,单位元
"quantity": 1 //N,产品数量
}]
}
响应参数:body内字段如下:
{
"returnCode": "00", //N,结果返回码,00为成功,其余为失败
"orderNo": "12345678920", //N,商户订单号,和请求一致
"returnDesc": "操作成功", //N,结果返回描述
"orderNoQrcode": http://qrpaytest.e-buychina.com.cn/api/user/0D8DF0B717B4190292B8A6044DDC1B9B65CE6B244F3706A70BCD9C7C5802C15D0C59789C48F7F308572C6DFFD4694C7F730A27C2290BA9B1DFFA97C8AE14A731
//N,二维码内容
}
查询交易结果
action名称:merchantInquiryImpl
方法说明:用于查询交易结果,用户扫码二维码并支付之后,可轮询查询
请求参数:body内字段如下:
{
"orderNo": "12345678920", //N,原交易商户订单号
}
响应参数:body内字段如下:
{
"returnCode": "00", //N,原交易返回码,00为成功,其余为失败
"returnDesc": "交易成功", //N,原交易交易结果返回描述
"orderNo": "12345678920", //N,和请求一致
"totalAmount": 20.0, //O,原交易订单金额
"realAmount": 15.0, //O,原交易用户实付金额
"ebuyRefno": 17409898978, //O,原交易ebuy系统参考号
"ebuyRequestNo": 423894394, //O,原交易ebuy上送机构的订单号
"organizationTradeNo ":90909090, //O,原交易机构返回订单号
}
退款
action名称:merchantRefundImpl
方法说明:用于获取二维码url
请求参数:body内字段如下:
{
"orderNo": "12345678920", //N,原交易商户订单号
"refundAmount ": 0.10, //O,本次退款金额,不填则默认全额退款
}
响应参数:body内字段如下:
{
"returnCode": "00", //N,退款返回码,00为成功,其余为失败
"returnDesc": "操作成功", //N,退款结果返回描述
"orderNo": "12345678920", //N,和请求一致
"refundAmount ": 0.10, //O,申请退款的金额,和请求一致
"totalAmount": 20.0, //O,原交易订单金额
"realAmount": 15.0, //O,退款金额
"ebuyRefno": 17409898978, //O,退款 ebuy系统参考号
"ebuyRequestNo": 423894394, //O,退款ebuy上送机构的订单号
"organizationTradeNo ":90909090, //O,退款机构返回订单号
}