承载协议 | HTTPS POST |
|---|---|
接口方向 | 华为钱包服务器->开发者服务器 |
接口URL | 开发者在华为AGC网站上提供的回调地址。 |
数据格式 | 请求消息:Content-Type: application/json 响应消息:Content-Type: application/json |
V2版本更新:
1、请求头新增“Version”字段,值为“V2”。
2、请求头中的“HMSSignType”的值改为“SHA256WithRSA/PSS”。
3、请求头中的“HMSSign”的签名值改为使用“SHA256WithRSA/PSS”算法。详见签名。
4、请求体中新增“passTypeIdentifier”、“sceneType”参数。
5、“eventType”参数新增值“RECEIVE_CARD”、“TASK_RESULT_NOTIFY”。
V2版本参数如下:
Request Header:
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
HMSSignType | 是 | String | 签名方式。值为固定值:"SHA256WithRSA/PSS"。 |
HMSSign | 是 | String | 签名值 |
Version | 是 | String | 回调接口版本号。为固定值“V2”。 |
Request Body:
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
eventId | 是 | String(32) | 事件ID。若钱包服务器多次重试发送回调通知,开发者服务器可以用此参数去重。 |
passTypeIdentifier | 是 | String(64) | 卡券对应的服务号。 |
modelId | 是 | String(32) | 卡券模板的唯一标识符。这个ID在同一个appId下唯一。这个ID只能包含字母、数字和(.)、(-)、(_)。 |
instanceId | 是 | String(32) | 个人化实例的唯一标识符。这个ID在同一个appId下唯一。这个ID只能包含字母、数字和(.)、(-)、(_)。 |
eventTime | 是 | String(32) | 事件发生时间(UTC时间):"yyyy-MM-dd'T'HH:mm:ss:SSS'Z'" |
eventType | 是 | String(32) | 事件类型: “RECEIVE_CARD”:用户在华为钱包App中领取卡券。 “DELETE_CARD”:用户在华为钱包App中删除卡券。 “TASK_RESULT_NOTIFY”:定时任务通知。 |
sceneType | 否 | String(64) | 场景类型: “MODEL_ASYNC_UPDATE_SUCCESS”:更新模板后异步更新相应的卡券。 |
POST /walletkit/callback/notify HTTP/1.1
Content-Type: application/json;charset=utf-8
HMSSignType: SHA256WithRSA/PSS
HMSSign: ***
Version: V2
Accept: application/json;charset=utf-8
Host: partmer.host.com
{
"eventId": "0a1f133471c4102c8171f845919906f3",
"passTypeIdentifier": "hwpass.com.partner.examplepasstype",
"modelId": "loyaltyModelTest",
"instanceId": "40001",
"eventTime": "2020-04-27T07:40:24.259Z",
"eventType": "RECEIVE_CARD"
} V1版本参数如下:
Request Header:
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
HMSSignType | 是 | String | 签名方式。值为固定值:"SHA256WithRSA"。 |
HMSSign | 是 | String | 签名值 |
Request Body:
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
eventId | 是 | String(32) | 事件ID。若钱包服务器多次重试发送回调通知,开发者服务器可以用此参数去重。 |
modelId | 是 | String(32) | 卡券模板的唯一标识符。这个ID在同一个appId下唯一。这个ID只能包含字母、数字和(.)、(-)、(_)。 |
instanceId | 是 | String(32) | 个人化实例的唯一标识符。这个ID在同一个appId下唯一。这个ID只能包含字母、数字和(.)、(-)、(_)。 |
eventTime | 是 | String(32) | 事件发生时间(UTC时间):"yyyy-MM-dd'T'HH:mm:ss:SSS'Z'" |
eventType | 是 | String(32) | 事件类型: “RECEIVE_CARD”:用户在华为钱包App中领取卡券。 “DELETE_CARD”:用户在华为钱包App中删除卡券。 “EXPIRE_CLEAR”:模板或实例数据过期,被清理。 “TASK_RESULT_NOTIFY”:定时任务通知。 |
POST /walletkit/callback HTTP/1.1
Content-Type: application/json;charset=utf-8
HMSSignType: SHA256WithRSA
HMSSign: ***
Accept: application/json;charset=utf-8
Host: partmer.host.com
{
"eventId": "0a1f133471c4102c8171f845919906f3",
"modelId": "loyaltyModelTest",
"instanceId": "40001",
"eventTime": "2020-04-27T07:40:24.259Z",
"eventType": "RECEIVE_CARD"
} private BaseResponse callbackSp(CallbackRequest requestBody) {
String priKey = "xxx";
Map<String, String> header = new HashMap<>(8);
header.put("Content-Type", "application/json;charset=UTF-8");
header.put("Accept", "application/json;charset=UTF-8");
header.put("HMSSignType", "SHA256WithRSA");
String hmsSign = RSAUtils.signByRSA(ToStringUtil.signString(requestBody), priKey);
header.put("HMSSign", hmsSign);
HttpEntity<CallbackRequest> httpEntity = new HttpEntity(requestBody, header);
return restful.postForObject(whiteCardCallbackTask.getCallbackUrl(), httpEntity, BaseResponse.class);
}