Skip to main content

券状态变更通知

请求参数

字段 类型(最大长度) 是否必填 字段含义 备注
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&timestamp=1483372334&appSecret=XXXXXXXXXXXX

签名结果:

17e9fe1250c33fccf517ce4b5810f2c731fa45058181a15cffc4ab38332460d4

响应结果

字段 类型(最大长度) 是否必填 字段含义 备注
resultDesc String 通知结果描述
result String 通知结果

00: 成功

其他为失败