接受及响应格式:JSON;字符编码:UTF-8 ;无BOM头 ContentType:application/json; charset=utf-8
HTTPS协议,全部接口使用 POST请求方式
公共请求参数,通过header传输,值、类型及对应释义
| 参数名 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| X-App-Key | string | 91856bd5-8622-4b18-aebb-79ce5e010f88 | 登录网站后台自行获取 |
| X-Timestamp | string | 1688194275 | 请求时间戳(秒级),超出 60s 服务端将拒绝响应 |
| X-Nonce | string | 0123456789-_abcd | 唯一随机数:长度不小于16位且不大于36位, [0-9, a-z, A-Z, -,_],5分钟内唯一 |
| X-Body-SHA256 | string | a1b2c3d4e5f67890... (hex 小写字符) | 原始 Body 的 SHA256 摘要,采用小写十六进制编码。编码前不做任何格式化、缩进、转义处理 |
| Authorization | string | HMAC-SHA256 {signature} | HMAC-SHA256 为固定签名算法标识 {signature} 为请求签名串。将结果进行Base64编码的字符串 |
公共响应参数
| 参数名 | 类型 | 参数值 | 描述 |
|---|---|---|---|
| code | int | 0 | 状态码,非0为异常 |
| message | string | 操作成功 | 提示信息 |
| data | array/object | 1688194275 | 响应详细内容 |
| traceId | string | 91856bd5-8622-4b18-aebb-79ce5e010f88 | 返回请求唯一id,需要技术接入排查时,需要提供此id |
| timestamp | integer | 1767252208 | 当前服务器时间的 Unix 时间戳(秒) |
4.2.1 签名生成规则: 按照下面的顺序拼接参数名和值,拼接为一个字符串 stringToSign:X-App-Key值X-Timestamp值X-Nonce值X-Body-Sha256值4.2.2 使用 AppSecret 作为密钥,对待签名字符串进行 HMAC-SHA256 计算,得到二进制结果
4.2.3 将上述结果进行 Base64 编码,得到最终签名 signature
4.2.4 签名通过请求头 Authorization 传输,格式为:Authorization: HMAC-SHA256 {signature}
bodySha256 : 小写十六进制(SHA256(rawBody)):2cf24dba5fb0a30e.. stringToSign:X-App-Keymy_app_key_123X-Timestamp1717401600X-Nonceabc123def456X-Body-SHA256e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 signature = Base64(HMAC-SHA256(appSecret, stringToSign))
登录网站后台,自行设置IP白名单,多个时以英文逗号分隔,最多可设置10个,只有白名单内的IP,才可以正常访问接口服务
为保证系统安全、稳定的提供服务,接口调用频次不到超过:300次/分钟(滑动窗口),超过该频次会直接返回 请求频繁
POSTapplication/json; charset=utf-8JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES Accept: application/json
Content-Type: application/json; charset=utf-8
X-App-Key: {appKey}
X-Timestamp: {timestamp}
X-Nonce: {nonce}
X-Sign: {sign}
X-Sign-Type: HMAC-SHA256| 参数名 | 类型 | 说明 |
|---|---|---|
| X-App-Key | string | 用户appKey |
| X-Timestamp | string | 系统发送回调时 Unix 时间戳(秒) |
| X-Nonce | string | 随机字符串,当前为 16 位 hex |
| X-Sign | string | Base64 字符串,HMAC-SHA256 签名结果,hex小写,然后进行Base64编码 |
| X-Sign-Type | string | 固定 HMAC-SHA256,签名算法标识 |
signContent = X-App-Key{appKey}X-Timestamp{timestamp}X-Nonce{nonce}body{body}X-Sign = Base64( HMAC-SHA256( signContent, appSecret ) ) {
"notifyType": "assetChangeResult",
"eventNo": "EVT202605260001",
"bizOrderNo": "OAPI202605260001",
"requestSn": "third_request_001",
"orderSn": "third_order_001",
"merchantUid": "merchant_xxx",
"memberUid": "member_xxx",
"asset": {
"type": {
"code": 1,
"name": "COUPON",
"text": "红包"
},
"changeType": {
"code": 1,
"name": "ADD",
"text": "增加"
},
"amount": 1000,
"validDays": 30
},
"requestStatus": {
"code": 3,
"name": "DONE",
"text": "已完成"
},
"resultStatus": {
"code": 1,
"name": "SUCCESS",
"text": "成功"
},
"result": {
"success": true,
"errorMessage": ""
},
"createdAt": "2026-05-26T15:30:00+08:00",
"processedAt": "2026-05-26T15:35:00+08:00",
"remark": "红包充值"
}| 字段 | 类型 | 说明 |
|---|---|---|
| notifyType | string | 通知类型,当前固定 assetChangeResult |
| eventNo | string | 本系统通知事件编号 |
| bizOrderNo | string | 本系统资产变更业务单号 |
| requestSn | string | 商户请求唯一编号 |
| orderSn | string | 商户业务系统单号,可能为空字符串 |
| merchantUid | string | 商户编号 |
| memberUid | string | 会员编号 |
| asset.type | object | 资产类型 |
| asset.changeType | object | 变更类型 |
| asset.amount | int | 变更金额,最小单位 |
| asset.validDays | int | 有效天数,红包时有意义 |
| requestStatus | object | 请求单状态 |
| resultStatus | object | 业务处理结果 |
| result.success | bool | 是否处理成功 |
| result.errorMessage | string | 失败原因,成功时为空字符串 |
| createdAt | string | 商户请求进入本系统时间,RFC3339 |
| processedAt | string | 业务处理完成时间,RFC3339;未处理时为空字符串 |
| remark | string | 备注 |
| code | name | text |
|---|---|---|
| 1 | COUPON | 红包 |
| 2 | BALANCE | 储值 |
| 3 | POINT | 积分 |
| code | name | text |
|---|---|---|
| 1 | ADD | 增加 |
| 2 | DEDUCT | 扣减 |
| code | name | text |
|---|---|---|
| 1 | PENDING | 已受理 |
| 2 | PROCESSING | 处理中 |
| 3 | DONE | 已完成 |
| 4 | REJECTED | 已拒绝 |
| code | name | text |
|---|---|---|
| 0 | PENDING | 未处理 |
| 1 | SUCCESS | 成功 |
| 2 | FAILED | 失败 |
{
"code": 0,
"message": "success"
}60s、300s、900s、1800s。