风控准实时消息推送
- Endpoint:
POST /riskResultNotifyUrl - Tags: 风控
Description
交易完成后,PayerMax 会把支付相关的风控信息通过数据流的形式发送给商户,商户需要接收处理,并按文档规范返回应答。 提示:该地址无需商户主动请求,以下request.body为payermax对订单的回调内容,商户收到回调后需要响应
Parameters
| Field | In | Type | Required | Constraints | Description |
|---|---|---|---|---|---|
Content-Type | header | string | Yes | ||
sign | header | string | Yes | 签名信息请参考技术文档 |
Parameter Examples
Content-Type:"application/json"sign:"FPFVT3o227JrFRbqu19boZCpVVTF9KznxyRawUmxpfXilHV/0yK46haPhAjNu1hPUMy7Vw/ILXhfzffNm4Fj0apWknlTY9OJxnSoQxS9BTFtc61tn5yV1q69x/kkBl82/qwg+XTJ4fOzy7Mar3VaC1E2PlDA6RkkKBUyNE6RYgsdB+Su7an4+4HVTNAnoe74WyvBgxTLMNg28igBTdqxaO3w/UBY6ObVp7vkqkQGdL1Y+HgmMYaAVwrM3+ALWGId0sJ+YqTY4WJ+0xCRGhaSnybiIjZsQEYyID68WNUfuavDLDsEhaMm/HfQvf5p0R1Ltovp3wwJnEbQcjY458iX5A=="
Request Body
Content-Type: application/json
| Field | Type | Required | Constraints | Description | Enum |
|---|---|---|---|---|---|
code | string | Yes | maxLength: 32 | 返回码,'APPLY_SUCCESS'代表成功 | |
msg | string | Yes | maxLength: 256 | 返回描述,'Success.' | |
keyVersion | string | Yes | maxLength: 8 | 密钥版本。当前值为:1 | |
appId | string | Yes | maxLength: 64 | 商户app id | |
merchantNo | string | No | maxLength: 15 | 商户Id | |
notifyTime | string | Yes | maxLength: 32 | 通知时间,符合rfc3339规范,格式:yyyy-MM-dd'T'HH:mm:ss.SSSXXX | |
notifyType | string | Yes | maxLength: 16 | 通知类型 RISK | |
data | object | Yes | |||
data.outTradeNo | string | Yes | maxLength: 64 | 商户订单号 | |
data.tradeToken | string | Yes | maxLength: 64 | PayerMax交易流水号 | |
data.paymentDetails | array[object] | No | 支付信息 | ||
data.paymentDetails[].payStatus | string | Yes | 支付状态:PENDING- 待 支 付 ,PAY_SUCCESS- 支 付 成功,PAY_FAIL-支付 失败 | ||
data.paymentDetails[].fingerPrint | string | Yes | maxLength: 32 | 设备标识 | |
data.paymentDetails[].cardToken | string | Yes | maxLength: 64 | 支付账户标识 | |
data.paymentDetails[].ua | string | Yes | 支 付 完 成 后 的 useragent | ||
data.paymentDetails[].ip | string | Yes | maxLength: 3 | 用户IP | |
data.paymentDetails[].payAmount | string | Yes | 支付金额 | ||
data.paymentDetails[].payCurrency | string | Yes | 支付币种 | ||
data.paymentDetails[].openId | string | Yes | openId | ||
data.paymentDetails[].paymentMethod | string | Yes | 新架构 支付方式 | ||
data.paymentDetails[].paymentTypeCode | string | Yes | 老架构 支付方式 | ||
data.paymentDetails[].cardType | string | Yes | 卡类型 | ||
data.paymentDetails[].cardOrg | string | Yes | 卡组 | ||
data.paymentDetails[].cardBinIssueOrg | string | Yes | 发卡行 | ||
data.paymentDetails[].cardBinCountryName | string | Yes | 发卡行国家 | ||
data.paymentDetails[].cardBin | string | Yes | 卡 bin | ||
data.paymentDetails[].eci | string | Yes | ECI | ||
data.paymentDetails[].do3ds | string | No | 是否3DS认证:YES-是,NO-否 | ||
data.paymentDetails[].authResult | string | No | 3DS认证结果:PASS-通过,NOT PASS-未通过 | ||
data.paymentDetails[].riskReason | string | No | 风控失败原因分类 | ||
data.paymentDetails[].riskReasonGuide | string | No | 风控失败原因引导说明 | ||
data.paymentDetails[].userID | string | Yes | 用户ID | ||
data.paymentDetails[].frictionType3DS | string | No | 3DS有无摩擦:Y-有摩擦,无摩擦或不出3D时则为空字符串 | ||
data.paymentDetails[].cardStart6End4 | string | No | 卡的前六后四位,中间掩码形式 | ||
data.paymentDetails[].cardExpiryDate | string | No | 卡过期时间 |
Example
json
{
"code": "APPLY_SUCCESS",
"msg": "Success.",
"keyVersion": "1",
"appId": "7538be94f250404d848b9d6d6db01da8",
"merchantNo": "P01010114360883",
"notifyTime": "2023-02-21T07:07:02.857Z",
"notifyType": "RISK",
"data": {
"outTradeNo": "Rtest20221230000031",
"tradeToken": "TOKEN202302210001906253",
"paymentDetails": [
{
"cardToken": "t621dc350e4b0e90a1cc30c12_400555****0001",
"fingerPrint": "49a3648741affeb04143b08df47923a6",
"ip": "159.138.88.145",
"payAmount": "10000.00",
"payCurrency": "IDR",
"payStatus": "PAY_FAIL",
"ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36",
"openId": "210220900020037675121",
"paymentMethod": "CARD",
"paymentTypeCode": "A34",
"cardType": "DEBIT",
"cardOrg": "VISA",
"cardBinIssueOrg": "BANKMUSCAT (SAOG)",
"cardBinCountryName": "OMAN",
"cardBin": "483791",
"eci": "",
"do3ds": "",
"authResult": "",
"riskReason": "single payment decline",
"riskReasonGuide": "high risk card,need change card and try again",
"userID": "228590310",
"frictionType3DS": "",
"cardStart6End4": "400555****0001",
"cardExpiryDate": "2025/03"
},
{
"cardToken": "t621dc350e4b0e90a1cc30c12_400555****0001",
"fingerPrint": "49a3648741affeb04143b08df47923a6",
"ip": "140.206.135.50",
"payAmount": "10000.00",
"payCurrency": "IDR",
"payStatus": "PAY_SUCCESS",
"ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36",
"openId": "210220900020037675121",
"paymentMethod": "CARD",
"paymentTypeCode": "A34",
"cardType": "DEBIT",
"cardOrg": "VISA",
"cardBinIssueOrg": "BANKMUSCAT (SAOG)",
"cardBinCountryName": "OMAN",
"cardBin": "483791",
"eci": "05",
"do3ds": "YES",
"authResult": "PASS",
"riskReason": "",
"riskReasonGuide": "",
"userID": "228590310",
"frictionType3DS": "Y",
"cardStart6End4": "400555****0001",
"cardExpiryDate": "2025/03"
}
]
}
}Responses
200
| Field | Type | Required | Constraints | Description | Enum |
|---|---|---|---|---|---|
code | string | Yes | 仅可响应 ‘SUCCESS’(代表成功收到通知) | ||
msg | string | Yes | 响应 ‘Success’(代表成功收到通知) |
Response Example
json
{
"code": "SUCCESS",
"msg": "Success"
}