2.2.4 通用推送
接口地址:/hc_sync/common
请求方式:POST
请求数据类型:application/json
响应数据类型:application/json
接口描述:
通用推送是由商户提供,并且在商户后台进行配置,请按照以下约定进行接口定义。为了方便扩展更多的通知类型,在推送的通知报文中使用notify_type字段进行业务区分。商户在开发此接口时先判断业务类型,再根据业务类型解析报文。
如果已经配置了2.2.1至2.2.3的推送url,则对应的业务优先使用这些url进行推送;并且报文与2.2.1至2.2.3定义的一致。
注意⚠️:在接口的请求和返回报文后续可能会增加更多字段;因此在使用此接口时需要忽略不识别的新字段,防止报错
开卡业务
请求示例:
{
"notify_type": "OPEN_CARD",
"card_type_id": "40000002",
"email": "example@gmail.com",
"mobile": "18301523750",
"mobile_code": "86",
"result": 1,
"remark": "备注",
"mc_trade_no": "48d2741747a449361739208"
}
请求参数:
参数名称 | 数据类型 | 是否必须 | 参数说明 |
---|---|---|---|
notify_type | string | true | OPEN_CARD:开卡 |
card_type_id | string | true | 卡种ID |
string | true | 邮箱;字符长度最大64位 | |
mobile | string | true | 手机号;字符长度最小6位最大11位 |
mobile_code | string | true | 手机号区号;字符长度最大5位 |
result | number | true | 开卡结果:1成功;2失败-商户余额不足; |
remark | string | false | 备注信息,如果遇到失败可以关注一下该字段的返回值 |
mc_trade_no | string | false | 如果您在请求开卡时有mc_trade_no字段,则通知回调时也会有次字段;否则没有此字段 |
充值业务
请求示例:
{
"notify_type": "RECHARGE",
"card_id": "00003454323400000028888",
"mc_trade_no": "48d2741747a4493223feb22",
"result": "1"
}
请求参数:
参数名称 | 数据类型 | 是否必须 | 参数说明 |
---|---|---|---|
notify_type | string | true | RECHARGE:卡片充值 |
card_id | string | true | 卡片ID |
mc_trade_no | string | true | 商户订单号 |
result | number | true | 充值结果:1成功;2失败 |
remark | string | false | 备注 |
卡片操作业务
请求示例:
{
"notify_type": "OPERATION",
"request_number": "48d2741747a449b2968a91e2523feb22",
"operate_status": "1",
"card_id": "00003454323400000028888"
}
请求参数:
参数名称 | 数据类型 | 是否必须 | 参数说明 |
---|---|---|---|
notify_type | string | true | OPERATION:卡片操作 |
card_id | string | true | 卡片id |
request_number | string | true | 请求号,同卡片操作申请 接口的request_number |
operate_status | integer | true | 状态码: 0处理中;1第三方成功;2失败;98待支付;99待提交到第三方 |
卡片消费业务
此业务的通知报文中不包含具体的消费数据,只通知商户指定卡片有新的消费数据产生,商户在收到消息之后通过查询账单接口获取交易数据。 交易有状态,如果查询到的交易数据不是最终状态,商户需要在再次收到此卡片的交易通知后再次查询交易数据,以便更新状态。
请求示例:
{
"notify_type": "CONSUME",
"card_id": "6654358889900018888"
}
请求参数:
参数名称 | 数据类型 | 是否必须 | 参数说明 |
---|---|---|---|
notify_type | string | true | CONSUME:卡片交易 |
card_id | string | true | 卡片id |
买币业务
请求示例:
{
"notify_type": "BUY_COIN",
"reason": "余额不足",
"mc_trade_no": "48d2741747a4493223feb24",
"tx_id": "20230413145817505390",
"card_id": "6283244889900010107",
"status": "2"
}
请求参数:
参数名称 | 数据类型 | 是否必须 | 参数说明 |
---|---|---|---|
notify_type | string | true | BUY_COIN:买币 |
card_id | string | true | 卡片id |
mc_trade_no | string | true | 商户订单号 |
status | number | true | 交易状态;取值范围:0:待处理中,1:买币成功,2:买币失败 |
tx_id | string | true | 交易流水号 |
reason | string | false | 失败原因 |
销卡业务
请求示例:
{
"notify_type": "CANCEL_CARD",
"card_id": "20230413145817505390",
"refund_amount": "100.00"
}
请求参数:
参数名称 | 数据类型 | 是否必须 | 参数说明 |
---|---|---|---|
notify_type | string | true | CANCEL_CARD:销卡 |
card_id | string | true | 卡片id |
refund_amount | string | true | 销卡退款金额 |
3ds交易授权通知业务
请求示例:
{
"notify_type": "AUTH_3DS",
"auth_id": 283,
"card_id": "15723682800000053333",
"card_no": "103411******3333",
"txn_currency": "EUR",
"txn_amount": "1.00",
"card_acceptor_merchant_name": "亚马逊",
"card_acceptor_location_country": 1,
"auth_result": 2,
"expired_time": 1706650873,
"created_Time": 1699865734,
"updated_Time": 1699865734,
"app_card_id": "crd_y37fq5widtmubgavtthyoqpwia",
"app3ds_auth_transaction_id": "aa61a6ca-a455-4740-9c56-ae83e4dd3798"
}
请求参数:
参数名称 | 数据类型 | 是否必须 | 参数说明 |
---|---|---|---|
notify_type | string | true | AUTH_3DS: 3ds交易授权通知 |
auth_id | int | true | 3ds授权交易id |
card_id | string | true | 卡片id |
card_no | string | true | 卡号 |
txn_currency | string | true | 交易法币;ISO标准法币编码 |
txn_amount | string | true | 交易金额 |
card_acceptor_merchant_name | string | true | 交易商户名称 |
card_acceptor_location_country | string | true | 交易国家:ISO3166-2规范的国家编码 |
auth_result | int | true | 授权结果;授权结果编码 |
expired_time | int | true | 过期时间,时间戳,精确到秒;如果在此时间之前没有授权或拒绝,则自动过期 |
created_Time | int | true | 交易创建时间,时间戳,精确到秒 |
updated_Time | int | true | 交易更新时间,时间戳,精确到秒 |
app_card_id | string | false | APP Card ID, 在sdk中使用; 仅特定卡片才有此字段 |
app3ds_auth_transaction_id | string | false | APP 3DS Auth Transaction ID, 在sdk中使用; 仅特定卡片才有此字段 |
验证码业务
请求示例:
{
"notify_type": "OPT_CODE",
"card_id": "1085185460000094505",
"code": "888666",
"create_time": 1710412477
}
请求参数:
参数名称 | 数据类型 | 是否必须 | 参数说明 |
---|---|---|---|
notify_type | string | true | OPT_CODE: 验证码业务 |
card_id | string | true | 卡片id |
code | string | true | 验证码 |
create_time | int | true | 验证码创建时间;时间戳,精确到秒 |
卡片配置变更业务
请求示例:
{
"notify_type": "CARD_CONFIG_CHANGE",
"card_type_id": "40000002",
"modify_time": 1710412477
}
请求参数:
参数名称 | 数据类型 | 是否必须 | 参数说明 |
---|---|---|---|
notify_type | string | true | CARD_CONFIG_CHANGE: 卡片配置变更业务 |
card_type_id | string | true | 卡种ID |
modify_time | int | true | 卡片配置修改时间;时间戳,精确到秒 |
期望响应参数:
参数名称 | 类型 | 参数说明 |
---|---|---|
code | int | 结果状态:1 成功;其他状态都会被认为是失败,失败后会继续尝试通知,直到成功 |
msg | string | 结果信息 |
data | object | 响应数据;预留字段 |
响应示例:
{
"code": 1,
"msg": "ok",
"data": {}
}