订阅代扣演示 Demo
📋
订阅类型
💡
订阅类型说明
普通订阅:直接按周期扣款,无优惠
N天试用:试用期结束后按周期扣款
前N期优惠:前几期优惠价,之后恢复原价
试用+优惠:amount=0表示免费试用,amount>0表示低价试用
⚙️
参数配置
🏪
商户自管模式说明
• 商户自主管理订阅计划,无需调用 subscriptionCreate API
• 只区分绑定类型:0元绑定(只授权)或 >0元绑定支付(绑定+支付)
• 商户自主决定后续扣款时机和金额
• 绑定成功后通过 Webhook 获取 paymentTokenID
📋
绑定类型
⚙️
首次绑定参数配置
🚀
后端创建订阅计划 — subscriptionCreate

使用第一步填写的参数,调用 subscriptionCreate API 创建订阅计划,获取 subscriptionNo 用于后续激活。

普通订阅
N天试用
前N期优惠
试用+优惠
📤 请求
subscriptionCreate Request - 普通订阅
{
  "version": "1.5",
  "keyVersion": "1",
  "requestTime": "{{requestTime}}",
  "appId": "67eff2f3b29a4ecf...f658",
  "merchantNo": "SDP0XXXXX93",
  "data": {
    "subscriptionRequestId": "sub_req_1741490400000",
    "userId": "test10001",
    "callbackUrl": "https://your.server/callback",
    "subscriptionPlan": {
      "subject": "订阅计划标题",
      "totalPeriods": 12,
      "periodRule": {
        "periodUnit": "M",
        "periodCount": 1
      },
      "periodAmount": {
        "amount": 9.99,
        "currency": "USD"
      }
    }
  }
}
📥 返回示例
subscriptionCreate Response
{
  "msg": "",
  "code": "APPLY_SUCCESS",
  "data": {
    "subscriptionRequestId": "sub_req_1741490400000",
    "subscriptionPlan": {
      "subscriptionStatus": "INACTIVE",
      "subscriptionNo": "SUB260318XXXXXXX9847003"
    }
  }
}
创建成功 — 返回订阅计划号
subscriptionNo: SUB2026XXXxxxxxx2112
🔌
加载前置组件

使用 applyDropinSession 接口获取 Session Key,然后初始化前端组件完成支付绑定。

📤 请求 SessionKey
applyDropinSession Request
{
  "version": "1.5",
  "keyVersion": "1",
  "requestTime": "2026-03-10T12:00:00+08:00",
  "appId": "67eff2f3b29a4ecf...f658",
  "merchantNo": "SDP0XXXXX93",
  "data": {
    "country": "MY",
    "totalAmount": 9.99, // 激活金额:trial时为0,trial-discount时为试用期金额
    "currency": "USD",
    "mitType": "SCHEDULED", // 周期性订阅固定值
    "userId": "test10001",
    "componentList": ["CARD", "APPLEPAY", "GOOGLEPAY"] // 根据支付方式选择
  }
}
返回 Session 信息
sessionKey: 02d764a032804ee5...
clientKey: 67eff2f3b29a4ecf...
🎨 前端组件加载
等待获取...
激活订阅计划 — orderAndPay

使用第二步返回的 subscriptionNo 发起 orderAndPay 请求,引导用户完成首次支付并绑定支付方式,激活订阅计划。

ℹ️
收银台模式
integrate:固定值 Hosted_Checkout
• 用户将跳转到 PayerMax 收银台完成支付
• 支持 CARD、ApplePay、GooglePay、APM 等多种支付方式
📤 请求
orderAndPay Request - 收银台模式
{
  "version": "1.5",
  "keyVersion": "1",
  "requestTime": "2026-03-18T18:17:00.000+08:00",
  "appId": "67eff2f3b29a4ecf...f658",
  "merchantNo": "SDP0XXXXX93",
  "data": {
    "outTradeNo": "ORD_20260310_001",
    "subject": "订阅计划标题", // 保持和订阅计划的subject一致
    "totalAmount": 9.99, // 激活金额:trial时为0,trial-discount时为试用期金额
    "currency": "USD", // 保持和订阅币种一致
    "country": "US",
    "userId": "test10001", // 保持和订阅计划的用户号一致
    "language": "en",
    "reference": "test subscription",
    "frontCallbackUrl": "https://your.app/return",
    "notifyUrl": "https://your.server/callback", // 保持和订阅计划的回调地址一致
    "integrate": "Hosted_Checkout", // 收银台模式固定值
    "expireTime": "1800",
    "subscriptionPlan": {
      "subscriptionNo": "SUB2026XXXxxxxxx2112" // 需要激活的订阅单号
    },
    "mitManagementUrl": "https://your.domain/subscription-management",
    "paymentDetail": {
      "paymentMethodType": "CARD", // CARD/APPLEPAY/GOOGLEPAY时必传;APM全量收银台时可不传
      "mitType": "SCHEDULED", // 必传,周期性订阅固定值
      "tokenForFutureUse": true, // 必传true,生成paymentTokenID用于后续代扣
      "merchantInitiated": false // 必传false,用户参与发起
    }
  }
}
📥 返回示例
orderAndPay Response
{
  "msg": "Success.",
  "code": "APPLY_SUCCESS",
  "data": {
    "redirectUrl": "https://cashier...",
    "outTradeNo": "UATTest1774168793846",
    "tradeToken": "T2026032208377782045789",
    "status": "PENDING"
  }
}
跳转收银台
用户完成支付后,通过Webhook回调确认激活状态
🔗
后端支付方式绑定 — orderAndPay

使用前置组件获取的 paymentTokensessionKey, 调用 orderAndPay API 完成后端支付方式绑定并激活订阅计划。

📤 请求 (激活订阅)
orderAndPay Request — Component + CARD
{
  "version": "1.5",
  "keyVersion": "1",
  "requestTime": "2022-01-17T09:05:52.194+00:00",
  "appId": "67eff2f3b29a4ecf...f658",
  "merchantNo": "SDP0XXXXX93",
  "data": {
    "outTradeNo": "ORD_20260310_001",
    "subject": "订阅计划的标题", // 保持和订阅计划的subject一致
    "totalAmount": 10, // 保持和订阅金额一致
    "country": "UN",
    "currency": "USD", // 保持和订阅币种一致
    "userId": "test1111", // 保持和订阅计划的用户号一致
    "language": "en",
    "reference": "test subscription",
    "frontCallbackUrl": "https://your.app/return",
    "notifyUrl": "https://your.server/callback",
    "integrate": "Direct_Payment", // 激活时为固定值:Direct_Payment
    "expireTime": "1800",
    "subscriptionPlan": { // 订阅信息
      "subscriptionNo": "SUB2026XXXxxxxxx2112" // 需要激活的订阅单号
    },
    "mitManagementUrl": "https://your.domain/subscription-management",
    "terminalType": "WEB", // 终端类型,WEB、WAP or APP
    "osType": "ANDROID", // 操作系统类型 ANDROID or IOS
    "paymentDetail": {
      "paymentToken": "CPT4f200d278f3a454b9e91c81edc641e2b", // 激活时必传,从前置组件获取
      "sessionKey": "bdsf8982348974hhf82934bf8239424", // 激活时必传,从 applyDropinSession 获取
      "mitType": "SCHEDULED", // 必传,MIT类型,周期性订阅时为SCHEDULED
      "tokenForFutureUse": true, // 必传,值为true,生成paymentTokenID,用于后续代扣
      "merchantInitiated": false, // 必传,false标识不是商户主动发起,有用户参与
      "buyerInfo": {
        "firstName": "Deborah",
        "lastName": "Swinstead",
        "email": "your@gmail.com",
        "phoneNo": "0609 031 114",
        "address": "Test Address",
        "city": "Holden Hill",
        "region": "SA",
        "zipCode": "5088",
        "clientIp": "211.52.321.225",
        "userAgent": "Mozilla/5.0"
      }
    }
  }
}
📥 返回示例
orderAndPay Response — Activation Success
{
  "msg": "Success.",
  "code": "APPLY_SUCCESS",
  "data": {
    "redirectUrl": "https://cashier...",
    "outTradeNo": "UATTest1774167584460",
    "tradeToken": "T2026032208327882045715",
    "status": "PENDING"
  }
}
订阅计划激活成功
subscriptionNo: SUB2026XXXxxxxxx2112
paymentTokenID: PMTOKEN20260310XXX
后续扣款由PayerMax自动管理
订阅计划已成功激活!
后续扣款由 PayerMax 根据订阅计划自动发起,
每期扣款结果将通过 Webhook 回调通知您的服务器。
订阅计划号
SUB2026XXXxxxxxx2112
扣款周期
每 1 月 · 共 12 期
每期金额
USD 9.99
首期扣款时间
📬
后续扣款 Webhook 通知
Webhook Notification (PMX Auto Charge)
{
  "keyVersion": "1",
  "merchantNo": "P01000116980333",
  "msg": "Success.",
  "notifyTime": "2023-04-24T09:44:40.761Z",
  "notifyType": "SUBSCRIPTION_PAYMENT",
  "appId": "6c556bcd56c84652176b3c5abc389296",
  "code": "APPLY_SUCCESS",
  "data": {
    "subscriptionRequestId": "requestMWRkgX5iHaTmf45ePdEP",
    "merchantNo": "P01010113865434",
    "userId": "10003",
    "subscriptionPlan": {
      "subscriptionNo": "SUB20221212174716894496912"
    },
    "subscriptionPaymentDetail": {
      "subscriptionIndex": 1, // 扣款期数
      "paymentStatus": "SUCCESS", // 本期订单状态
      "periodStartTime": "2025-10-13T15:59:59+0000", // 本期开始时间
      "periodEndTime": "2025-12-13T15:59:59+0000", // 本期结束时间
      "payAmount": { // 扣款金额
        "amount": 10,
        "currency": "USD"
      },
      "paymentMethodType": "CARD",
      "cardOrg": "VISA",
      "lastPaymentInfo": {
        "tradeToken": "T20221212174800970116912", // 支付单号 tradeToken可用于发起退款
        "lastPaymentStatus": "SUCCESS", // 最新扣款结果
        "payTime": "2025-02-13T15:59:59+0000" // 支付时间
      }
    }
  }
}
订阅计划已成功激活!
后续扣款由 PayerMax 根据订阅计划自动发起,
每期扣款结果将通过 Webhook 回调通知您的服务器。
订阅计划号
SUB2026XXXxxxxxx2112
扣款周期
每 1 月 · 共 12 期
每期金额
USD 9.99
首期扣款时间
📬
后续扣款 Webhook 通知
Webhook Notification (PMX Auto Charge)
{
  "keyVersion": "1",
  "merchantNo": "P01000116980333",
  "msg": "Success.",
  "notifyTime": "2023-04-24T09:44:40.761Z",
  "notifyType": "SUBSCRIPTION_PAYMENT",
  "appId": "6c556bcd56c84652176b3c5abc389296",
  "code": "APPLY_SUCCESS",
  "data": {
    "subscriptionRequestId": "requestMWRkgX5iHaTmf45ePdEP",
    "merchantNo": "P01010113865434",
    "userId": "10003",
    "subscriptionPlan": {
      "subscriptionNo": "SUB20221212174716894496912"
    },
    "subscriptionPaymentDetail": {
      "subscriptionIndex": 1, // 扣款期数
      "paymentStatus": "SUCCESS", // 本期订单状态
      "periodStartTime": "2025-10-13T15:59:59+0000", // 本期开始时间
      "periodEndTime": "2025-12-13T15:59:59+0000", // 本期结束时间
      "payAmount": { // 扣款金额
        "amount": 10,
        "currency": "USD"
      },
      "paymentMethodType": "CARD",
      "cardOrg": "VISA",
      "lastPaymentInfo": {
        "tradeToken": "T20221212174800970116912", // 支付单号 tradeToken可用于发起退款
        "lastPaymentStatus": "SUCCESS", // 最新扣款结果
        "payTime": "2025-02-13T15:59:59+0000" // 支付时间
      }
    }
  }
}
🔌
加载前置组件

使用 applyDropinSession 接口获取 Session Key,然后初始化前端组件完成支付绑定。

📤 请求 SessionKey
applyDropinSession Request
{
  "version": "1.5",
  "keyVersion": "1",
  "requestTime": "2026-03-10T12:00:00+08:00",
  "appId": "67eff2f3b29a4ecf...f658",
  "merchantNo": "SDP0XXXXX93",
  "data": {
    "country": "MY",
    "totalAmount": 9.99,
    "currency": "USD",
    "mitType": "SCHEDULED", // 周期性订阅固定值
    "userId": "test10001",
    "componentList": ["CARD", "APPLEPAY", "GOOGLEPAY"] // 根据支付方式选择
  }
}
返回 Session 信息
sessionKey: 02d764a032804ee5...
clientKey: 67eff2f3b29a4ecf...
🎨 前端组件加载
等待获取...
🔗
首次绑定支付方式 — orderAndPay

商户自管模式下,无需调用 subscriptionCreate。直接使用 orderAndPay 引导用户首次支付并绑定支付方式, 绑定成功后通过异步 Webhook 回调获取 paymentTokenID,用于后续商户主动发起扣款。

📤 请求 (绑定)
orderAndPay Request — Bind (收银台模式)
{
  "version": "1.5",
  "keyVersion": "1",
  "requestTime": "2026-03-18T18:17:00.000+08:00",
  "appId": "67eff2f3b29a4ecf...f658",
  "merchantNo": "SDP0XXXXX93",
  "data": {
    "outTradeNo": "bind_1741490400000",
    "subject": "代扣标题",
    "totalAmount": 9.99, // 金额 > 0: 首次绑定时需要支付; 金额 = 0: 只授权
    "currency": "USD",
    "country": "KR", // APM支付时必传,国家代码
    "userId": "test1111111",
    "language": "en",
    "reference": "test subscription",
    "frontCallbackUrl": "https://your.app/return",
    "notifyUrl": "https://your.server/callback",
    "integrate": "Hosted_Checkout", // 收银台模式固定值
    "expireTime": "1800",
    "subscriptionPlan": { // 必填,订阅信息
      "subject": "订阅计划标题",
      "description": "商户自管周期性订阅",
      "totalPeriods": 12,
      "periodRule": {
        "periodUnit": "M", // 按月(M),D(日),W(周),Y(年)扣款
        "periodCount": 1 // 1个月扣款一次
      },
      "periodAmount": { // 固定期扣款金额
        "amount": 20,
        "currency": "USD"
      }
    },
    "mitManagementUrl": "https://your.domain/subscription-management", // 必填,
    "paymentDetail": {
      "paymentMethodType": "CARD", // CARD/APPLEPAY/GOOGLEPAY/ONE_TOUCH
      "targetOrg": "NAVERPAY", // APM支付时可选,目标机构
      "mitType": "SCHEDULED", // 周期性代扣
      "tokenForFutureUse": true, // 必传true,生成paymentTokenID
      "merchantInitiated": false // 必传false,用户参与发起
    }
  }
}
📥 返回示例
orderAndPay Response — Bind
{
  "msg": "Success.",
  "code": "APPLY_SUCCESS",
  "data": {
    "redirectUrl": "https://cashier...", // 跳转收银台地址
    "outTradeNo": "bind_1741...",
    "tradeToken": "T2026032208327882045715",
    "status": "PENDING"
  }
}
Webhook — Bind Success
{
  "code": "0000",
  "data": {
    "tradeNo": "TRD20260310XXX",
    "status": "SUCCESS",
    "paymentTokenID":
      "PMTOKEN177XXXXX1000551",
    "userId": "test1111111"
  }
}
绑定成功 — 获取 paymentTokenID
paymentTokenID: PMTOKEN177XXXXX1000551
保存此token,用于后续商户主动发起扣款
🔗
后端支付方式绑定 — orderAndPay

使用前置组件获取的 paymentTokensessionKey, 调用 orderAndPay API 完成后端支付方式绑定,获取 paymentTokenID 用于后续扣款。

📤 请求
orderAndPay Request - 前置组件绑定
{
  "version": "1.5",
  "keyVersion": "1",
  "requestTime": "2026-03-10T12:00:00+00:00",
  "appId": "67eff2f3b29a4ecf...f658",
  "merchantNo": "SDP0XXXXX93",
  "data": {
    "outTradeNo": "bind_component_1741490400000",
    "subject": "代扣标题",
    "totalAmount": 9.99, // 绑定金额
    "currency": "USD",
    "userId": "test1111111",
    "language": "en",
    "reference": "test mit",
    "frontCallbackUrl": "https://your.app/return",
    "notifyUrl": "https://your.server/callback",
    "integrate": "Direct_Payment", // 前置组件固定值
    "expireTime": "1800",
    "terminalType": "WEB", // 终端类型:WEB、WAP 或 APP
    "osType": "ANDROID", // 操作系统类型:ANDROID 或 IOS
    "subscriptionPlan": { // 非必填,订阅信息
      "subject": "订阅计划标题",
      "description": "商户自管周期性订阅",
      "totalPeriods": 12,
      "periodRule": {
        "periodUnit": "M", // 按月(M),D(日),W(周),Y(年)扣款
        "periodCount": 1 // 1个月扣款一次
      },
      "periodAmount": { // 固定期扣款金额
        "amount": 20,
        "currency": "USD"
      }
    },
    "mitManagementUrl": "https://your.domain/subscription-management", // 非必填,
    "paymentDetail": {
      "paymentToken": "CPT4f200d278f3a454b9e91c81edc641e2b", // 必传,从前置组件获取
      "sessionKey": "bdsf8982348974hhf82934bf8239424", // 必传,从 applyDropinSession 获取
      "mitType": "SCHEDULED", // 必传,周期性代扣时为SCHEDULED
      "tokenForFutureUse": true, // 必传true,生成paymentTokenID
      "merchantInitiated": false, // 必传false,用户参与发起
      "buyerInfo": {
        "firstName": "Deborah",
        "lastName": "Swinstead",
        "email": "your@gmail.com",
        "phoneNo": "0609 031 114",
        "address": "Test Address",
        "city": "Holden Hill",
        "region": "SA",
        "zipCode": "5088",
        "clientIp": "211.52.321.225",
        "userAgent": "Mozilla/5.0..."
      }
    }
  }
}
📥 返回示例
orderAndPay Response
{
  "code": "0000",
  "message": "success",
  "data": {
    "tradeNo": "TRD20260310XXX",
    "status": "SUCCESS",
    "paymentTokenID": "PMTOKEN20260310XXX" // 用于后续代扣的Token
  }
}
Webhook — Bind Success
{
  "code": "0000",
  "data": {
    "tradeNo": "TRD20260310XXX",
    "status": "SUCCESS",
    "paymentTokenID":
      "PMTOKEN177XXXXX1000551",
    "userId": "test1111111"
  }
}
绑定成功 — 获取 paymentTokenID
paymentTokenID: PMTOKEN20260310XXX
保存此token,用于后续商户主动发起扣款
💳
后续发起扣款 — orderAndPay

商户根据自己管理的订阅计划,在需要扣款时,使用第二步绑定成功后返回的 paymentTokenID 调用 orderAndPay 主动发起后续扣款, merchantInitiated: true 表示商户主动发起。

📤 请求 (后续扣款)
orderAndPay Request — Deduct
{
  "version": "1.5",
  "keyVersion": "1",
  "requestTime": "2026-03-18T18:17:00.000+08:00",
  "appId": "67eff2f3b29a4ecf...f658",
  "merchantNo": "SDP0XXXXX93",
  "data": {
    "outTradeNo": "deduct_1741490400000",
    "subject": "代扣标题",
    "totalAmount": 9.99,
    "currency": "USD",
    "country": "US", // 必传,国家代码
    "userId": "test1111111",
    "language": "en",
    "notifyUrl": "https://your.server/callback",
    "integrate": "Direct_Payment",
    "expireTime": "1800",
    "terminalType": "WEB",
    "osType": "ANDROID",
    "subscriptionPlan": {
      "merchantSubscriptionNo": "SUB_1741490400000", // 商户的订阅计划ID
      "deductNo": "DEDUCT_1741490400002", // 本期扣款唯一单号
      "currentPeriod": 2, // 当前期数(第2期)
      "totalPeriods": 12, // 总期数
      "startTime": "2026-04-10", // 本期开始时间
      "endTime": "2026-05-10" // 本期结束时间
    },
    "paymentDetail": {
      "paymentMethodType": "CARD",
      "mitType": "SCHEDULED",
      "tokenForFutureUse": false,
      "merchantInitiated": true, // 商户主动发起 (MIT)
      "paymentTokenID": "PMTOKEN177XXXXX1000551", // 来自Step2 Webhook回调
      "buyerInfo": {
        "firstName": "Deborah",
        "lastName": "Swinstead",
        "email": "your@gmail.com",
        "phoneNo": "0609 031 114",
        "address": "Test Address",
        "city": "Holden Hill",
        "region": "SA",
        "zipCode": "5088",
        "clientIp": "211.52.321.225",
        "userAgent": "Mozilla/5.0..."
      }
    }
  }
}
📥 扣款结果
orderAndPay Response — Deduct
{
  "code": "0000",
  "message": "success",
  "data": {
    "tradeNo": "TRD_MCH_P2_2026",
    "status": "SUCCESS",
    "chargeAmount": {
      "amount": 9.99,
      "currency": "USD"
    }
  }
}
Webhook — Deduct Notification
{
  "code": "0000",
  "data": {
    "tradeNo": "TRD_MCH_P2_2026",
    "outTradeNo": "deduct_1741...",
    "status": "SUCCESS",
    "paymentMethodType": "CARD",
    "amount": 9.99,
    "currency": "USD"
  }
}
扣款成功!
商户自主管理扣款周期,
每次扣款均使用相同 paymentTokenID 发起
📋
收集用户业务数据

非周期性订阅代扣无需提前建立订阅计划,商户根据业务需求灵活发起扣款。 首先收集本次绑定/支付的订单参数,用于向 PayerMax 发起首次绑定支付。

ℹ️
与周期性代扣的区别
mitType = UNSCHEDULED:非固定周期扣款,由商户按需发起
无 subscriptionPlan:不传订阅计划,商户自行管理业务逻辑
paymentTokenID:绑定成功后获取,用于后续所有扣款
⚙️
订单参数配置
🔌
加载前置组件

使用 applyDropinSession 接口获取 Session Key,然后初始化前端组件完成支付绑定。

📤 请求 SessionKey
applyDropinSession Request
{
  "version": "1.5",
  "keyVersion": "1",
  "requestTime": "2026-03-10T12:00:00+08:00",
  "appId": "67eff2f3b29a4ecf...f658",
  "merchantNo": "SDP0XXXXX93",
  "data": {
    "country": "MY",
    "totalAmount": 9.99,
    "currency": "USD",
    "mitType": "UNSCHEDULED", // 非周期性固定值
    "userId": "test10001",
    "componentList": ["CARD", "APPLEPAY", "GOOGLEPAY"] // 根据支付方式选择
  }
}
返回 Session 信息
sessionKey: 02d764a032804ee5...
clientKey: 67eff2f3b29a4ecf...
🎨 前端组件加载
等待获取...
🔗
后端支付方式绑定 — orderAndPay

使用前置组件获取的 paymentTokensessionKey, 调用 orderAndPay API 完成后端支付方式绑定。

📤 请求 (绑定支付)
orderAndPay Request — Component + CARD
{
  "version": "1.5",
  "keyVersion": "1",
  "requestTime": "2022-01-17T09:05:52.194+00:00",
  "appId": "bbd8d2639a7c4dfd8df7d005294390df",
  "merchantNo": "020113838535952",
  "data": {
    "outTradeNo": "APIFOXDEV1745388079422", // 商户下单唯一单号
    "subject": "代扣标题", // 标题
    "totalAmount": 10, // 代扣金额
    "currency": "USD", // 代扣币种
    "userId": "test1111", // 用户号
    "language": "en",
    "reference": "test mit",
    "frontCallbackUrl": "https://[your domain name]/[your callback URL]",
    "notifyUrl": "https://[your domain name]/[your notify URL]",
    "integrate": "Direct_Payment", // 固定值:Direct_Payment
    "expireTime": "1800",
    "terminalType": "WEB", // 终端类型,WEB、WAP or APP
    "osType": "ANDROID", // 操作系统类型 ANDROID or IOS
    "paymentDetail": {
      "paymentToken": "CPT4f200d278f3a454b9e91c81edc641e2b", // 必传
      "sessionKey": "bdsf8982348974hhf82934bf8239424", // 必传
      "mitType": "UNSCHEDULED", // 必传,MIT类型,非周期性代扣时为UNSCHEDULED
      "tokenForFutureUse": true, // 必传,值为true,生成paymentTokenID,用于后续代扣
      "merchantInitiated": false, // 必传,false标识不是商户主动发起,有用户参与
      "buyerInfo": {
        "firstName": "Deborah",
        "lastName": "Swinstead",
        "email": "your@gmail.com",
        "phoneNo": "0609 031 114",
        "address": "Test Address",
        "city": "Holden Hill",
        "region": "SA",
        "zipCode": "5088",
        "clientIp": "211.52.321.225",
        "userAgent": "Mozilla/5.0"
      }
    }
  }
}
📥 响应
orderAndPay Response
{
  "code": "APPLY_SUCCESS",
  "msg": "success",
  "psn": "2022011709052194000000",
  "data": {
    "paymentTokenID": "PTI_20260310_001", // 用于后续代扣的令牌ID
    "outTradeNo": "APIFOXDEV1745388079422",
    "tradeNo": "2022011709052194000000",
    "totalAmount": 10,
    "currency": "USD",
    "status": "TRADE_SUCCESS"
  }
}
Webhook — Bind/Pay Success
{
  "code": "0000",
  "data": {
    "tradeNo": "TRD20260310XXX",
    "outTradeNo": "bind_1741...",
    "status": "SUCCESS",
    "paymentTokenID":
      "PMTOKEN177XXXXX1000551",
    "userId": "test1111111",
    "amount": 10,
    "currency": "USD"
  }
}
绑定/支付成功 — 获取 paymentTokenID
paymentTokenID: PMTOKEN177XXXXX1000551
保存此token,商户可随时按业务需求发起后续扣款
🔗
首次创建绑定/支付订单 — orderAndPay

调用 orderAndPay 引导用户首次支付并绑定支付方式, mitType: UNSCHEDULED 表示非周期性代扣。 绑定/支付成功后通过 Webhook 异步回调返回 paymentTokenID,用于后续商户按需发起扣款。

📤 请求 (绑定/支付)
orderAndPay Request — Non-periodic Bind
{
  "version": "1.5",
  "keyVersion": "1",
  "requestTime": "2026-03-18T18:17:00.000+08:00",
  "appId": "67eff2f3b29a4ecf...f658",
  "merchantNo": "SDP0XXXXX93",
  "data": {
    "outTradeNo": "bind_1741490400000",
    "subject": "代扣标题",
    "totalAmount": 9.99,
    "currency": "USD",
    "userId": "test1111111",
    "language": "en",
    "reference": "test unscheduled mit",
    "frontCallbackUrl": "https://your.app/return",
    "notifyUrl": "https://your.server/callback",
    "integrate": "Hosted_Checkout", // 收银台: Hosted_Checkout; API直连: Direct_Payment
    "expireTime": "1800",
    "paymentDetail": {
      "paymentMethodType": "CARD", // CARD/APPLEPAY/GOOGLEPAY/ONE_TOUCH
      "mitType": "UNSCHEDULED", // 非周期性代扣,固定值
      "tokenForFutureUse": true, // 必传true,生成paymentTokenID
      "merchantInitiated": false // 必传false,用户参与发起
    }
  }
}
📥 返回示例
orderAndPay Response — Bind
{
  "msg": "Success.",
  "code": "APPLY_SUCCESS",
  "data": {
    "redirectUrl": "https://cashier...", // 跳转收银台地址
    "outTradeNo": "bind_1741...",
    "tradeToken": "T2026032208327882045715",
    "status": "PENDING"
  }
}
Webhook — Bind/Pay Success
{
  "code": "0000",
  "data": {
    "tradeNo": "TRD20260310XXX",
    "outTradeNo": "bind_1741...",
    "status": "SUCCESS",
    "paymentTokenID":
      "PMTOKEN177XXXXX1000551",
    "userId": "test1111111",
    "amount": 9.99,
    "currency": "USD"
  }
}
绑定/支付成功 — 获取 paymentTokenID
paymentTokenID: PMTOKEN177XXXXX1000551
保存此token,商户可随时按业务需求发起后续扣款
💳
后续发起扣款(商户发起) — orderAndPay

商户根据业务需求(如会员到期、消费达到阈值等),使用步骤二返回的 paymentTokenID 主动调用 orderAndPay 发起后续扣款。 无需传 subscriptionPlanmerchantInitiated: true 表示商户主动发起。

📤 请求 (后续扣款)
orderAndPay Request — Subsequent Deduct
{
  "version": "1.5",
  "keyVersion": "1",
  "requestTime": "2026-03-18T18:17:00.000+08:00",
  "appId": "67eff2f3b29a4ecf...f658",
  "merchantNo": "SDP0XXXXX93",
  "data": {
    "outTradeNo": "deduct_1741490400000",
    "subject": "代扣标题",
    "totalAmount": 9.99,
    "currency": "USD",
    "country": "UN",
    "userId": "test1111111",
    "language": "en",
    "notifyUrl": "https://your.server/callback",
    "integrate": "Direct_Payment",
    "expireTime": "1800",
    "terminalType": "WEB",
    "osType": "ANDROID",
    // ⚠️ 非周期性代扣无需传 subscriptionPlan
    "paymentDetail": {
      "paymentMethodType": "CARD",
      "mitType": "UNSCHEDULED", // 固定值,非周期性
      "tokenForFutureUse": false,
      "merchantInitiated": true, // 商户主动发起 (MIT)
      "paymentTokenID": "PMTOKEN177XXXXX1000551" // Step2 Webhook返回的Token
    }
  }
}
📥 扣款结果
orderAndPay Response — Deduct Success
{
  "code": "APPLY_SUCCESS",
  "msg": "success",
  "data": {
    "tradeNo": "TRD20260310XXX",
    "outTradeNo": "deduct_1741...",
    "status": "SUCCESS",
    "amount": 9.99,
    "currency": "USD"
  }
}
Webhook — Deduct Notification
{
  "code": "0000",
  "data": {
    "tradeNo": "TRD_MCH_P2_2026",
    "outTradeNo": "deduct_1741...",
    "status": "SUCCESS",
    "paymentMethodType": "CARD",
    "amount": 9.99,
    "currency": "USD"
  }
}
扣款成功
商户可根据业务需求重复调用此API进行后续扣款
💳
后续发起扣款(商户发起) — orderAndPay

商户根据业务需求(如会员到期、消费达到阈值等),使用步骤二返回的 paymentTokenID 主动调用 orderAndPay 发起后续扣款。 无需传 subscriptionPlanmerchantInitiated: true 表示商户主动发起。

📤 请求 (后续扣款)
orderAndPay Request — Subsequent Deduct
{
  "version": "1.5",
  "keyVersion": "1",
  "requestTime": "2026-03-18T18:17:00.000+08:00",
  "appId": "67eff2f3b29a4ecf...f658",
  "merchantNo": "SDP0XXXXX93",
  "data": {
    "outTradeNo": "deduct_1741490400000",
    "subject": "代扣标题",
    "totalAmount": 9.99,
    "currency": "USD",
    "country": "UN",
    "userId": "test1111111",
    "language": "en",
    "notifyUrl": "https://your.server/callback",
    "integrate": "Direct_Payment",
    "expireTime": "1800",
    "terminalType": "WEB",
    "osType": "ANDROID",
    // ⚠️ 非周期性代扣无需传 subscriptionPlan
    "paymentDetail": {
      "paymentMethodType": "CARD",
      "mitType": "UNSCHEDULED", // 固定值,非周期性
      "tokenForFutureUse": false,
      "merchantInitiated": true, // 商户主动发起 (MIT)
      "paymentTokenID": "PMTOKEN177XXXXX1000551" // Step2 Webhook返回的Token
    }
  }
}
📥 扣款结果
orderAndPay Response — Deduct
{
  "code": "0000",
  "message": "success",
  "data": {
    "tradeNo": "TRD_NP_20260315",
    "outTradeNo": "deduct_1741...",
    "status": "SUCCESS",
    "chargeAmount": {
      "amount": 9.99,
      "currency": "USD"
    }
  }
}
Webhook — Deduct Notification
{
  "code": "0000",
  "data": {
    "tradeNo": "TRD_MCH_P2_2026",
    "outTradeNo": "deduct_1741...",
    "status": "SUCCESS",
    "paymentMethodType": "CARD",
    "amount": 9.99,
    "currency": "USD"
  }
}
扣款成功!
非周期性代扣完成,
商户可随时根据业务需求再次使用
paymentTokenID 发起新的扣款