Skip to main content

签名算法

注意
  • 签名算法用于使用私钥对支付 API 请求进行签名,以提供额外安全性。
信息
  • 数据对象 需要排序, 嵌套对象 也需要排序.

步骤 1:准备请求参数

方法 : POST

注意
  • 请参考您所调用的 API 端点,以下请求参数仅为示例。

创建支付链接示例

参数 类型 必填 描述 示例
order Object 订单信息,包含键:[id, title, amount, currencyType, additionalData]
customer Object 客户信息,包含键:[name, phone, email]
method String 类型列表,请参阅 Deposit / Payment - Financial Process Exchange (FPX)。如果提供此字段,用户将被直接跳转至第三方支付页面;否则,将跳转至支付页面进行支付方式选择。

订单 [对象]

参数 类型 必填 描述 示例
title String 订单标题,最多 32 字符 "Deposit"
additionalData String 订单描述
amount String 订单金额(以元为单位)。100 = RM 100.00 100
currencyType String 货币类型(目前仅支持 MYR , USDT) "MYR"
id String 订单 ID

客户 [对象]

参数 类型 必填 描述 示例
name String 客户姓名 "Long Wan"
email String 客户邮箱 ""
phone String 客户手机号 ""

请求示例

{
"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 键,并压缩格式。

步骤 2:将数据编码为 Base64 格式

注意

ewogICAgIm9yZGVyIjogewogICAgCSJ0aXRsZSI6ICJoZWxsbyIsCiAgICAJImRldGFpbCI6ICIiLAogICAgCSJhZGRpdGlvbmFsRGF0YSI6ICJ3b3JsZCIsCgkgICAgImFtb3VudCI6IDEwLAoJICAgICJjdXJyZW5jeVR5cGUiOiAiTVlSIiwKCSAgICAiaWQiOiAgIjcyMTEiCiAgICB9LAogICAgImN1c3RvbWVyIjogewogICAgInVzZXJJZCI6ICIiLAogICAgImVtYWlsIjogIiIKfSwKICAgICJtZXRob2QiOltdLAogICAgInR5cGUiOiAiV0VCX1BBWU1FTlQiLAogICAgInN0b3JlSWQiOiAiMTYwODEyMzAzNTU2NDUzODEyMSIsCiAgICAicmVkaXJlY3RVcmwiOiAiaHR0cHM6Ly9yZXZlbnVlbW9uc3Rlci5teSIsCiAgICAibm90aWZ5VXJsIjogImh0dHBzOi8vZGV2LXJtLWFwaS5hcC5uZ3Jvay5pbyIsCiAgICAibGF5b3V0VmVyc2lvbiI6InYzIgp9

步骤 3:构建明文参数

信息
  • 如果 body 为空,则可跳过 data 参数。
参数 类型 必填 描述 示例
data String 步骤 2 的 Base64 数据 参考步骤 2。
method String 所使用的 HTTP 方法 "post"
nonceStr String 随机字符串 "VYNknZohxwicZMaWbNdBKUrnrxDtaRhN"
requestURL String 调用的 API URL 必须完全一致,包括 URL。 gateway/v1/createPayment
signType String 签名类型,建议 SHA-256 "sha256"
timestamp String 请求的 UNIX 时间戳 "1527407052"

示例

注意

data=ewogICAgIm9yZGVyIjogewogICAgCSJ0aXRsZSI6ICJoZWxsbyIsCiAgICAJImRldGFpbCI6ICIiLAogICAgCSJhZGRpdGlvbmFsRGF0YSI6ICJ3b3JsZCIsCgkgICAgImFtb3VudCI6IDEwLAoJICAgICJjdXJyZW5jeVR5cGUiOiAiTVlSIiwKCSAgICAiaWQiOiAgIjcyMTEiCiAgICB9LAogICAgImN1c3RvbWVyIjogewogICAgInVzZXJJZCI6ICIiLAogICAgImVtYWlsIjogIiIKfSwKICAgICJtZXRob2QiOltdLAogICAgInR5cGUiOiAiV0VCX1BBWU1FTlQiLAogICAgInN0b3JlSWQiOiAiMTYwODEyMzAzNTU2NDUzODEyMSIsCiAgICAicmVkaXJlY3RVcmwiOiAiaHR0cHM6Ly9yZXZlbnVlbW9uc3Rlci5teSIsCiAgICAibm90aWZ5VXJsIjogImh0dHBzOi8vZGV2LXJtLWFwaS5hcC5uZ3Jvay5pbyIsCiAgICAibGF5b3V0VmVyc2lvbiI6InYzIgp9&method=post&nonceStr=VYNknZohxwicZMaWbNdBKUrnrxDtaRhN&requestUrl=gateway/v1/createPayment&signType=sha256×tamp=1527407052

步骤 4:使用客户端私钥签名

信息
  • 使用私钥对该内容执行 sha256 签名,并确保公钥已上传到 SUPERPAY 商户后台
类型 必填 描述 示例
字符串 使用 PRIVATE_KEY 对步骤 3 的请求数据进行签名 响应示例如下
注意

签名示例

sha256 IrBg6t73VsH7ieEnQDB4CXHFjMWUkp8Dtddpxqw+4Gvz6Tag7Dx6nrfAt2ofYK8xZN9aBCvAKAfmAOGWIXnsTXfhFBnMA2kadiga7ufUJ81ozyhllbiliRM2ugw1OcqSTLRHWBPhrVwhHBxgDiG9wbuI3FKURrz+CufYYakFoCw=

步骤 5:放入请求头中

注意

将此签名放入请求头 X-Signature 中,构建请求并调用 API 端点