扣款结果通知
- Endpoint:
POST /subscriptionPaymentResultNotifyUrl - Tags: 收单/订阅计划管理
Description
当订阅计划激活后,PayerMax会按照商户创建订阅计划时指定的扣款周期进行扣款,每一期扣款成功后,都会通知商户扣款结果;当某期扣款失败后,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 | 返回码。 | |
msg | string | Yes | maxLength: 256 | 返回描述。 | |
keyVersion | string | Yes | maxLength: 8 | 密钥版本。当前值为:1 | |
appId | string | Yes | maxLength: 64 | 商户app id | |
merchantNo | string | No | maxLength: 32 | 商户Id | |
notifyTime | string | Yes | maxLength: 32 | 通知时间,符合rfc3339规范,格式:yyyy-MM-dd'T'HH:mm:ss.SSSXXX | |
notifyType | string | Yes | maxLength: 32 | 通知类型:SUBSCRIPTION_PAYMENT | |
data | object | Yes | |||
data.subscriptionRequestId | string | Yes | maxLength: 64 | 商户创建订阅计划的单号。 | |
data.userId | string | Yes | maxLength: 64 | 用户ID。 | |
data.subscriptionPlan | object | Yes | 订阅计划 | ||
data.subscriptionPlan.subscriptionNo | string | Yes | maxLength: 64 | PMMAX订阅计划号。 | |
data.subscriptionPaymentDetail | object | Yes | 扣款详情。 | ||
data.subscriptionPaymentDetail.subscriptionIndex | number | Yes | 扣款期数。 | ||
data.subscriptionPaymentDetail.paymentStatus | string | Yes | maxLength: 32 | 本期订单状态。 PENDING:支付中 SUCCESS:支付成功 FAILED:支付失败 | |
data.subscriptionPaymentDetail.periodStartTime | string | Yes | 本期开始时间。如:2025-01-13T15:59:59+0000 | ||
data.subscriptionPaymentDetail.periodEndTime | string | Yes | 本期结束时间,如:2025-02-13T15:59:59+0000。 | ||
data.subscriptionPaymentDetail.payAmount | object | Yes | 支付金额。 | ||
data.subscriptionPaymentDetail.payAmount.amount | number | No | 金额。 | ||
data.subscriptionPaymentDetail.payAmount.currency | string | No | maxLength: 3 | 币种。 | |
data.subscriptionPaymentDetail.paymentMethodType | string | Yes | maxLength: 64 | 支付方式。 | |
data.subscriptionPaymentDetail.cardOrg | string | Yes | maxLength: 64 | 卡组。 | |
data.subscriptionPaymentDetail.lastPaymentInfo | object | Yes | 本期最新一次支付详情。 | ||
data.subscriptionPaymentDetail.lastPaymentInfo.lastPaymentStatus | string | Yes | maxLength: 32 | 支付结果。 PENDING:支付中 SUCCESS:支付成功 FAILED:支付失败 | |
data.subscriptionPaymentDetail.lastPaymentInfo.payTime | string | Yes | 支付时间,如:2025-01-12T15:59:59+0000。 | ||
data.subscriptionPaymentDetail.lastPaymentInfo.tradeToken | string | No | maxLength: 64 | 支付单号,可用于退款。 注:成功时必有该值。 | |
data.subscriptionPaymentDetail.lastPaymentInfo.errorCode | string | No | maxLength: 64 | 扣款失败code。 | |
data.subscriptionPaymentDetail.lastPaymentInfo.errorMsg | string | No | maxLength: 512 | 扣款失败msg。 | |
data.subscriptionPaymentDetail.cardInfo | object | No | 卡信息 | ||
data.subscriptionPaymentDetail.cardInfo.cardOrg | string | No | maxLength: 32 | 卡组织,当paymentMethodType为CARD时返回,只有交易成功且用户选择卡组织支付时才返回 | |
data.subscriptionPaymentDetail.cardInfo.country | string | No | maxLength: 2 | 发卡国家 | |
data.subscriptionPaymentDetail.cardInfo.cardType | string | No | maxLength: 32 | 卡类型,DEBIT、CREDIT等。 | |
data.subscriptionPaymentDetail.cardInfo.totalCardOrg | array[string] | No | 卡的所有卡组织,双标卡会返回两个。 | ||
data.subscriptionPaymentDetail.cardInfo.type | string | No | maxLength: 32 | 卡性质。PAN为真实卡;NETWORK_TOKEN为虚拟卡,如APPLEPAY。 | |
data.subscriptionPaymentDetail.cardInfo.source | string | No | maxLength: 32 | 卡信息来源。CARD、APPLEPAY、GOOGLEPAY_PAN、GOOGLEPAY_CRYPTOGRAM、NETWORK_TOKEN | |
data.subscriptionPaymentDetail.cardInfo.cardBinNo | string | No | maxLength: 16 | 卡bin号。 | |
data.subscriptionPaymentDetail.cardInfo.cardNumber | string | No | maxLength: 32 | 卡号,掩码返回。 | |
data.subscriptionPaymentDetail.cardInfo.cardHolderName | string | No | maxLength: 128 | 持卡人姓名,掩码返回。 | |
data.subscriptionPaymentDetail.cardInfo.cardLast4 | string | No | maxLength: 4 | 真实卡号后四位。 | |
data.subscriptionPaymentDetail.cardInfo.cardExpirationYear | string | No | maxLength: 2 | 卡有效年。 | |
data.subscriptionPaymentDetail.cardInfo.cardExpirationMonth | string | No | maxLength: 2 | 卡有效月。 |
Example: 1
扣款成功
json
{
"code": "APPLY_SUCCESS",
"msg": "",
"keyVersion": "1",
"appId": "3b242b56a8b64274bcc37dac281120e3",
"merchantNo": "020213827212251",
"notifyTime": "2022-01-17T09:33:54.540+00:00",
"notifyType": "SUBSCRIPTION_PAYMENT",
"data": {
"subscriptionRequestId": "testRequestId0001",
"userId": "testUserId0001",
"subscriptionPlan": {
"subscriptionNo": "SUB20250417120949065211234"
},
"subscriptionPaymentDetail": {
"subscriptionIndex": 0,
"paymentStatus": "SUCCESS",
"periodStartTime": "2025-01-13T15:59:59+0000",
"periodEndTime": "2025-02-13T15:59:59+0000",
"payAmount": {
"amount": 128.39,
"currency": "USD"
},
"paymentMethodType": "CARD",
"cardOrg": "VISA",
"lastPaymentInfo": {
"tradeToken": "T20250417174800970112345",
"lastPaymentStatus": "SUCCESS",
"payTime": "2025-01-12T15:59:59+0000"
}
}
}
}Example: 2
扣款失败
json
{
"code": "APPLY_SUCCESS",
"msg": "",
"keyVersion": "1",
"appId": "3b242b56a8b64274bcc37dac281120e3",
"merchantNo": "020213827212251",
"notifyTime": "2022-01-17T09:33:54.540+00:00",
"notifyType": "SUBSCRIPTION_PAYMENT",
"data": {
"subscriptionRequestId": "testRequestId0001",
"userId": "testUserId0001",
"subscriptionPlan": {
"subscriptionNo": "SUB20250417120949065211234"
},
"subscriptionPaymentDetail": {
"subscriptionIndex": 0,
"paymentStatus": "PENDING",
"periodStartTime": "2025-01-13T15:59:59+0000",
"periodEndTime": "2025-02-13T15:59:59+0000",
"payAmount": {
"amount": 128.39,
"currency": "USD"
},
"paymentMethodType": "CARD",
"cardOrg": "VISA",
"lastPaymentInfo": {
"tradeToken": "T20250417174800970112345",
"lastPaymentStatus": "FAILED",
"payTime": "2025-01-12T15:59:59+0000",
"errorCode": "BALANCE_INSUFFICIENT",
"errorMsg": "Insufficient balance to pay, please confirm payment account available balance."
}
}
}
}Responses
200
| Field | Type | Required | Constraints | Description | Enum |
|---|---|---|---|---|---|
code | string | Yes | 仅可响应 ‘SUCCESS’(仅代表成功收到通知,不代表订单状态) | ||
msg | string | Yes | 响应 ‘Success’(仅代表成功收到通知,不代表订单状态) |
Response Example
json
{
"msg": "Success",
"code": "SUCCESS"
}