# 电子券业务API # 券详情查询 请求参数 |字段|类型(最大长度)|是否必填|字段含义|备注| | - | - | - | - | - | |code|String |是|券号|| |orderNo|String |否|制码订单号|暂时支持一单一券场景| |traceNo|String |是|交易流水号|全局唯一| 响应结果 |字段|数据项|类型(最大长度)|是否必填|字段含义|备注| | - | - | - | - | - | - | |data|codeUrl|String|否|券短链|券二维码| ||code|String|是|券号|| ||ebuyTicketId|String|是|易百券批次号|| ||faceValue|String|是|券面值|单位(元)| ||validStart|String|否|券有效期 起|格式: yyyy-mm-dd hh:mm:ss| ||validEnd|String|否|券有效期 止|格式: yyyy-mm-dd hh:mm:ss| ||codeStatus|String|是|券状态|

00:未使用

01:已使用

08:已兑换

04:已冻结

05:已作废

06:已过期

| ||codeStatusDesc|String|否|券状态描述|| ||activityName|String|否|活动名称|| ||activityId|String|否|活动编号|| ||activityProductNo|String|否|活动产品编号|| ||productName|String|否|产品名称|| ||ticketType|String|否|券类型|| # 券兑换 请求参数 |字段|类型(最大长度)|是否必填|字段含义|备注| | - | - | - | - | - | |code|String |是|券号|| |traceNo|String |是|交易流水号|全局唯一| 响应结果
字段数据项类型(最大长度)是否必填字段含义备注
data code String 券号
exchangeResult String 兑换结果 00:兑换成功,其他为兑换失败
exchangeDesc String 兑换结果描述

# 券状态变更 请求参数 |字段|类型(最大长度)|是否必填|字段含义|备注| | - | - | - | - | - | |code|String |是|券号|多个券号用英文逗号隔开(对接批量券状态更新需提前和易百沟通,暂时默认不支持批量操作)| |traceNo|String |是|交易流水号|全局唯一| |updateType |String|是|更新类型|支持作废、冻结、解冻; 枚举值见备注| 注: updateType 枚举 |**updateType**|**操作名称**|**更新前状态**|**更新后状态**|**备注**| | - | - | - | - | - | |invalid|串码作废|00:未使用、初始化
03:未激活
04:已冻结|05:已作废|| |freeze|冻结串码|00:未使用|04:已冻结|已冻结的串码,可以调用解冻操作后恢复原状态| |unfreeze|解冻串码|04:已冻结|00:未使用|| 响应结果 |字段|数据项|类型(最大长度)|是否必填|字段含义|备注| | - | - | - | - | - | - | |

data

|code|String|是|券号|| ||codeUpdateResult|String|是|券更新结果|

00:更新成功,

其他为失败

| # 券码核销 请求参数 |字段|类型(最大长度)|是否必填|字段含义|备注| | - | - | - | - | - | |code|String|是|券号|多张券码用逗号隔开,英文逗号| |traceNo|String |是|交易流水号|全局唯一| |shopNo|String |是|门店编号|| |shopName|String |否|门店名称|| |tansTime|String |是|核销时间|格式 yyyyMMddhhssSSS| |goodsList|List|否|券兑换的商品明细|代金券默认为A0001| |totalAmount|String |是|订单总金额|单位(元)| |verifyScene|String |是|核销场景|线上:online, 线下:offline| GoodsInfo |字段|类型(最大长度)|是否必填|字段含义|备注| | - | - | - | - | - | |goodsId|String|是|券兑换商品id || |price|String |是|兑换商品金额|全局唯一| |rebateCode|String |否|标签编号|| |count|String|是|兑换商品数量|默认为1| 响应结果 |字段|数据项|类型(最大长度)|是否必填|字段含义|备注| | - | - | - | - | - | - | |data|List|List|是|核销结果集|| VerifyResultData定义 |字段|类型(最大长度)|是否必填|字段含义|备注| | - | - | - | - | - | |verifyResult|String|是|核销结果|

00:成功

其他为失败

| |activityNo|String|否|活动编号|| |activityName|String|否|活动名称|| |totalAmount|String|否|订单总金额|单位(元)| |userRealAmount|String|否|用户购券实付金额|单位(元)| |merchantRealAmount|String|否|商户实收金额|单位(元)| |discountAmount|String|否|券折抵金额|单位(元)| |channelBenefit|String|否|渠道优惠金额|单位(元)| |merchantBenefit|String|否|商户优惠金额|单位(元)| |faceValue|String|否|券面值|单位(元)| |remainUseTimes|String|否|剩余可用次数|| |code|String|是|券号|| # 券核销撤销 请求参数 |字段|类型(最大长度)|是否必填|字段含义|备注| | - | - | - | - | - | |code|String |是|券号|多个券用逗号隔开,不传默认撤销originTraceNo 对应核销的所有券| |traceNo|String |是|当前交易流水号|全局唯一| |originTraceNo|String |是|核销时上送的流水号|| |originVerifyDate|String|否|原核销日期|yyyyMMdd| 响应结果 |字段|数据项|类型(最大长度)|是否必填|字段含义|备注| | - | - | - | - | - | - | |data|List|List|是|核销撤销结果|| VerifyVoidResultData定义 |字段|类型(最大长度)|是否必填|字段含义|备注| | - | - | - | - | - | |resultDesc|String|否|核销撤销结果结果描述|| |result|String|否|核销撤销结果|

00: 成功

其他为失败

| |code|String|是|券号|| |ticketId|String|是|券批次id|

| # 券状态变更通知 请求参数 |字段|类型(最大长度)|是否必填|字段含义|备注| | - | - | - | - | - | |code|String |是|券号|| |traceNo|String |是|当前交易流水号|全局唯一| |saleChannelOrderId|String|否|发券时渠道侧订单号|核销、核销撤销场景必传| |shopNo|String|否|核销门店编号|核销场景必传| |timeStamp|String|否|发生时间戳(毫秒)|| |notifyType|String|是|当前通知交易类型|| |validStartDate|String|否|券有效期开始时间|yyyy-MM-dd HH:mm:ss| |validEndDate|String|否|券有效期截止时间|yyyy-MM-dd HH:mm:ss| 注: notifyType 枚举 |notifyType|操作名称|更新前状态|更新后状态| | - | - | - | - | |verifyNotify|券核销|未使用|已使用| |verifyCancelNotify|券核销撤销|已使用|未使用| |invalidNotify|券作废|未使用|已作废| |renewalNotify|券延期|已过期|可使用| |expireNotify|过期通知|过期|已过期| 通知报文(案例)签名过程: JSONObject notifyJson = new JSONObject(true); notifyJson.put("code", "10034343334344443209"); notifyJson.put("traceNo", "4200001172202109274275163730"); notifyJson.put("notifyType", "verifyNotify"); byte[] encodeBase64 = Base64.encodeBase64(notifyJson.toJSONString().getBytes("UTF-8")); String bizContent = new String(encodeBase64, "UTF-8"); Map map = new TreeMap<>(); map.put("appKey", "274b9cf9f01543619baa726ed24ddd19"); map.put("action", "verifyNotify"); map.put("format", "json"); map.put("charset", "utf-8"); map.put("signType", "sha256"); map.put("timestamp", "1483372334"); map.put("bizContent", bizContent); StringBuilder buffer = new StringBuilder(); for (Map.Entry item : map.entrySet()) { buffer.append(item.getKey()).append("=").append(item.getValue()).append("&"); } String signStr = buffer.toString() + "appSecret=XXXXXXXXXXXX";// appSecret(需易百提供); String checkSign = SHAUtil.sha256(signStr); System.out.println(signStr); System.out.println(checkSign); } 参与签名报文字符串: action=verifyNotify&appKey=274b9cf9f01543619baa726ed24ddd19&bizContent=eyJjb2RlIjoiMTAwMzQzNDMzMzQzNDQ0NDMyMDkiLCJ0cmFjZU5vIjoiNDIwMDAwMTE3MjIwMjEwOTI3NDI3NTE2MzczMCIsIm5vdGlmeVR5cGUiOiJ2ZXJpZnlOb3RpZnkifQ==&charset=utf-8&format=json&signType=sha256×tamp=1483372334&appSecret=XXXXXXXXXXXX 签名结果: 17e9fe1250c33fccf517ce4b5810f2c731fa45058181a15cffc4ab38332460d4 响应结果 |字段|类型(最大长度)|是否必填|字段含义|备注| | - | - | - | - | - | |resultDesc|String|否|通知结果描述|| |result|String|否|通知结果|

00: 成功

其他为失败

|