创建支付链接
步骤 1:获取访问令牌
请参考
访问令牌
了解如何获取 访问令牌, 然后将其放入请求头
Authorization.
步骤 2:准备请求参数
生成, 将被放入请求头 并用于创建签名.
| 参数 | 类型 | 必填 | 描述 | 示例 |
|---|---|---|---|---|
nonceStr |
字符串 | 是 | 随机字符串 | 7a70f55482a5566c |
timestamp |
字符串 | 是 | 请求的 UNIX 时间戳 | 1667061151361 |
请求参数
| 参数 | 类型 | 必填 | 描述 | 示例 |
|---|---|---|---|---|
order |
对象 | 是 | 订单信息,包含键 [id, title, amount, currencyType, additionalData] | |
customer |
对象 | 是 | 客户信息,包含键 [name, phone, email] | |
redirectUrl |
字符串 | 否 | 支付完成后跳转客户的 URL。如商户后台未配置,则此字段必填。 | https://merchant.example.com/payment/return |
callbackUrl |
字符串 | 否 | 用于接收支付交易状态更新的 Notify URL 或 Callback URL。如省略,将使用商户后台配置的回调 URL。 | https://merchant.example.com/payment/callback |
method |
字符串 | 否 |
方法参数是钱包代码或银行代码。指的是
支付方式代码
.
如果您的账户已开启结账跳过功能,提供特定的银行或电子钱包代码会将客户直接跳转到对应的支付页面。 如果结账跳过功能未开启,并且您的账户已启用独立分类结账,客户会看到 SuperPay 结账页面,但页面只会显示对应的父级分类。例如,MB2U_MY、FPX_B2C 或 FPX 会显示可用的 FPX B2C 银行;TNG_MY、EWALLET_MY 或 E_WALLET_MY 会显示可用的马来西亚电子钱包。相关结账分类必须已为您的账户启用。如果省略此字段,或未启用独立分类结账,客户需从所有已启用的结账分类中自行选择。
|
要使用结账跳过功能,让客户跳过 SuperPay 选择页面并直接进入银行或电子钱包支付页面:
1. 联系 SuperPay 客服团队 为您的账户开启该功能。
2. 在 method 参数中提供特定的银行代码(例如:MB2U_MY)或电子钱包代码(例如:TNG_MY)。
如果未开启结账跳过功能,并且已启用独立分类结账,您仍可传入特定代码或父级代码(例如:FPX、FPX_B2C、EWALLET_MY、E_WALLET_MY);只要相关分类已启用,SuperPay 会在结账页面只显示对应分类。
订单 [对象]
| 参数 | 类型 | 必填 | 描述 | 示例 |
|---|---|---|---|---|
title |
字符串 | 是 | 订单标题,最多 32 字符 | "Deposit" |
additionalData |
字符串 | 否 | 订单描述 | |
amount |
字符串 | 是 | 订单金额:100 = 100.00 马币 | 100 |
currencyType |
字符串 | 是 | 货币标识(目前仅支持 MYR) | "MYR" |
id |
字符串 | 是 | 订单 ID,最多 40 字符 |
客户 [对象]
| 参数 | 类型 | 必填 | 描述 | 示例 |
|---|---|---|---|---|
name |
字符串 | 是 | 客户姓名 | "Long Wan" |
email |
字符串 | 是 | 客户邮箱 | "" |
phone |
字符串 | 是 | 客户手机号 | "" |
请求示例
{
"order": {
"id": "A20221111",
"title": "Payment",
"amount": "88.50",
"currencyType": "MYR",
"additionalData": ""
},
"customer": {
"name": "Long Wan",
"phone": "0123456789",
"email": "longwan@gmail.com"
},
"method": "CIMB_MY"
}
按字母顺序排序 JSON 键并压缩格式
{"order":{"id":"10006","amount":"1","currencyType":"MYR"},"recipient":{"name":"Long Wan","phone":"0123456789","email":"longwan@gmail.com","methodType":"CIBBMYKL","methodValue":"8044591766","methodRef":""}}
将数据编码为 Base64 格式
eyJjdXN0b21lciI6eyJuYW1lIjoiTGVvbiBUYW4iLCJwaG9uZSI6IjAxMjM0NTY3ODkiLCJlbWFpbCI6Imxlb25AZ2dncGF5Lm9yZyJ9LCJtZXRob2QiOiJGUFgiLCJvcmRlciI6eyJpZCI6IkEyMDIyMTExMSIsInRpdGxlIjoiUGF5bWVudCIsImFtb3VudCI6Ijg4LjUwIiwiY3VycmVuY3lUeXBlIjoiTVlSIiwiYWRkaXRpb25hbERhdGEiOiIifX0=
使用 CLIENT_SYMMETRIC_KEY 加密 Base64 数据
e4e9ac1120ed867a7af108af8b1ab9183319f8a334bcdbbea47232359ae0a5c9c4ad1e46450ef4b36775aeb624b14b722a6884abd9b1f7572f1fdb33ce7a8bfec3d69d3e2e1aa77487c55b181613bfbef1028c8da984f5b59c8d6241eefcaf70
步骤 3:生成签名
请参考
签名算法
了解如何获取签名
签名,
然后将其放入请求头
X-Signature.
步骤 4:POST 到
/gateway/v1/createPayment
端点
方法 :
POST
请求
请求头
| 参数 | 类型 | 描述 |
|---|---|---|
Authorization |
字符串 | 步骤 1 获取的 Token |
X-Nonce-Str |
字符串 | 步骤 2 生成的 nonceStr |
X-Timestamp |
字符串 | 步骤 2 生成的 timestamp |
X-Signature |
字符串 | 步骤 3 生成的 Signature |
请求体
| 参数 | 类型 | 描述 | 示例 |
|---|---|---|---|
data |
字符串 | 使用 CLIENT_SYMMETRIC_KEY 加密的数据 | e4e9ac1127af1...b59c8d62af70 |
请求头与 Body 示例
{
"headers": {
"Authorization": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBJZCI6IjEwMDIOjE2NjczMTYwOTJ9.UnVBt6Opxd_ZOMns1gCT40Ihdj1nbndi2V43Xt3fIuE",
"X-Nonce-Str": "7a70f55482a5566c",
"X-Timestamp": "1667061151361",
"X-Signature": "sha256 zOzjz8QoGTbesuAO5CCFbPCF3EMDtohKtkQPro8O61jbXhurgl+wIYzTv1BQPB6z1+bRn7gXx1YpsItk+Zed+Wd9PqmexoGdDrAAoUKjCcMks9g0/kiVui381jscVAyCUzdMtkW25P4QyTeq5+ES7D66j/Jwk+9JqYXhMnX5aAUdMjlrADp1RC1zrZUc1Mfqs+MA26J3X5uQ8xLhh9FaAhDdoyWctKQSTHZyMVuDtmFaGdzaGI3LCWm5w1gvtHC43mTMccc3WrlirYbDrZvN2c81cNMfRJjgJZNnjjY27OAMvGsJJgpo0b+EW4UO74QzZ2VI60fgf7uIajIOgQRzzA=="
},
"body": {
"data": "e4e9ac1120ed867a7af108af8b1ab918cbec6db7b4d7c29908085a73e2b29e97547da6eae91928b3330241f1fb898eebd8c3355105fdd5c68b6ceea761f41dc3085ed888d3c0473beef128ebd208c4f60299df64a622d04d21d81513c02e2d47bfcce2a6c246eabcc1c823aaf3d9133004cf7c4c08236395a05dc19a98c33a301c8b73d4e7fd33cd911619de86dfdb45"
}
}
响应
请求体
| 参数 | 类型 | 描述 | 示例 |
|---|---|---|---|
code |
字符串 | 业务响应代码,字符串格式:"1" 表示成功,"0" 表示失败。不是 HTTP 状态码。 | "1" |
encryptedData |
字符串 | 需使用 CLIENT_SYMMETRIC_KEY 解密的加密数据 |
a83cf72884cbbb....3ddf0744646e0cf0b482 |
message |
字符串 | 此请求的信息明文 | 成功 |
响应示例
{
"code": "1",
"encryptedData": "e4e9ac1120ed867a7af108af8b1ab918cbec6db7b4d7c29908085a73e2b29e97547da6eae91928b3330241f1fb898eebd8c3355105fdd5c68b6ceea761f41dc3085ed888d3c0473beef128ebd208c4f60299df64a622d04d21d81513c02e2d47bfcce2a6c246eabcc1c823aaf3d9133004cf7c4c08236395a05dc19a98c33a301c8b73d4e7fd33cd911619de86dfdb45",
"message": "Success"
}
步骤 5:使用 CLIENT_SYMMETRIC_KEY 解密 encryptedData
使用对称方式解密 encryptedData
e4e9ac1120ed867a7af108af8b1ab918cbec6db7b4d7c29908085a73e2b29e97547da6eae91928b3330241f1fb898eebd8c3355105fdd5c68b6ceea761f41dc3085ed888d3c0473beef128ebd208c4f60299df64a622d04d21d81513c02e2d47bfcce2a6c246eabcc1c823aaf3d9133004cf7c4c08236395a05dc19a98c33a301c8b73d4e7fd33cd911619de86dfdb45
使用 CLIENT_SYMMETRIC_KEY
PCd1dlEmFnBXaVce06Pzp7Vike0oHnVJ
明文结果如下
{
"data": {
"paymentUrl": "https://api.superpay.club/gateway/v1/createPayment/checkout/payment?orderId=1234567890/",
"transactionId": "1234567890"
}
}