电子券业务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<GoodsInfo> | 否 | 券兑换的商品明细 | 代金券默认为A0001 |
| totalAmount | String | 是 | 订单总金额 | 单位(元) |
| verifyScene | String | 是 | 核销场景 | 线上:online, 线下:offline |
GoodsInfo
| 字段 | 类型(最大长度) | 是否必填 | 字段含义 | 备注 |
|---|---|---|---|---|
| goodsId | String | 是 | 券兑换商品id | |
| price | String | 是 | 兑换商品金额 | 全局唯一 |
| rebateCode | String | 否 | 标签编号 | |
| count | String | 是 | 兑换商品数量 | 默认为1 |
响应结果
| 字段 | 数据项 | 类型(最大长度) | 是否必填 | 字段含义 | 备注 |
|---|---|---|---|---|---|
| data | List<VerifyResultData> | 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<VerifyVoidResultData> | 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<String, String> 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<String, String> 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: 成功 其他为失败 |