签名算法
- 签名算法用于使用私钥对您的支付 API 请求进行签名,以获得额外的安全性。
- 数据对象需要按字母顺序排序, 嵌套对象也需要按字母顺序排序。
第 1 步:准备请求参数
方法 : POST
- 请参阅您正在调用的 API 端点,下面的请求参数只是一个 例子
创建付款 URL 示例
参数 | 类型 | 必填 | 说明 | 示例 |
---|---|---|---|---|
order | Object | 是 | 订单信息,对象字段为 [id, title, amount, currencyType, additionalData] | |
customer | Object | 是 | 客户信息,对象字段为 [name, phone, email] | |
method | String | 否 | 列表 充值/付款 - Financial Process Exchange (FPX) , 如果传入接口是有提供,用户将被直接重定向到特定的第 3 方支付页面。 如果没有,用户将被重定向到付款页面以选择付款方式 |
Order [Object]
参数 | 类型 | 必填 | 说明 | 示例 |
---|---|---|---|---|
title | String | 是 | 标题, max: 32 | "Deposit" |
additionalData | String | 否 | 说明 | |
amount | String | 是 | 数额。 100 = RM 100.00 | 100 |
currencyType | String | 是 | 币种 (目前只支持 MYR , USDT ) | "MYR" |
id | String | 是 | 订单ID |
Customer [Object]
参数 | 类型 | 必填 | 说明 | 示例 |
---|---|---|---|---|
name | String | 是 | 名字 | "Long Wan" |
email | String | 是 | 邮箱 | "" |
phone | String | 是 | 电话号码 | "" |
Example Request
{
"order": {
"id": "A20221111",
"title": "Payment",
"amount": "88.50",
"currencyType": "MYR",
"additionalData": ""
},
"customer": {
"name": "Long Wan",
"phone": "0123456789",
"email": "[email protected]"
},
"method": "CIMB_MY"
}
- 对上面的json键按字母顺序排序并使其紧凑
第 2 步:使用 Base64 格式对数据进行编码
ewogICAgIm9yZGVyIjogewogICAgCSJ0aXRsZSI6ICJoZWxsbyIsCiAgICAJImRldGFpbCI6ICIiLAogICAgCSJhZGRpdGlvbmFsRGF0YSI6ICJ3b3JsZCIsCgkgICAgImFtb3VudCI6IDEwLAoJICAgICJjdXJyZW5jeVR5cGUiOiAiTVlSIiwKCSAgICAiaWQiOiAgIjcyMTEiCiAgICB9LAogICAgImN1c3RvbWVyIjogewogICAgInVzZXJJZCI6ICIiLAogICAgImVtYWlsIjogIiIKfSwKICAgICJtZXRob2QiOltdLAogICAgInR5cGUiOiAiV0VCX1BBWU1FTlQiLAogICAgInN0b3JlSWQiOiAiMTYwODEyMzAzNTU2NDUzODEyMSIsCiAgICAicmVkaXJlY3RVcmwiOiAiaHR0cHM6Ly9yZXZlbnVlbW9uc3Rlci5teSIsCiAgICAibm90aWZ5VXJsIjogImh0dHBzOi8vZGV2LXJtLWFwaS5hcC5uZ3Jvay5pbyIsCiAgICAibGF5b3V0VmVyc2lvbiI6InYzIgp9
第 3 步:构造纯文本参数
- 如果正文为空,则可以跳过
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" |
Example
data=ewogICAgIm9yZGVyIjogewogICAgCSJ0aXRsZSI6ICJoZWxsbyIsCiAgICAJImRldGFpbCI6ICIiLAogICAgCSJhZGRpdGlvbmFsRGF0YSI6ICJ3b3JsZCIsCgkgICAgImFtb3VudCI6IDEwLAoJICAgICJjdXJyZW5jeVR5cGUiOiAiTVlSIiwKCSAgICAiaWQiOiAgIjcyMTEiCiAgICB9LAogICAgImN1c3RvbWVyIjogewogICAgInVzZXJJZCI6ICIiLAogICAgImVtYWlsIjogIiIKfSwKICAgICJtZXRob2QiOltdLAogICAgInR5cGUiOiAiV0VCX1BBWU1FTlQiLAogICAgInN0b3JlSWQiOiAiMTYwODEyMzAzNTU2NDUzODEyMSIsCiAgICAicmVkaXJlY3RVcmwiOiAiaHR0cHM6Ly9yZXZlbnVlbW9uc3Rlci5teSIsCiAgICAibm90aWZ5VXJsIjogImh0dHBzOi8vZGV2LXJtLWFwaS5hcC5uZ3Jvay5pbyIsCiAgICAibGF5b3V0VmVyc2lvbiI6InYzIgp9&method=post&nonceStr=VYNknZohxwicZMaWbNdBKUrnrxDtaRhN&requestUrl=gateway/v1/createPayment&signType=sha256×tamp=1527407052
第 4 步:使用 CLIENT PRIVATE KEY 签名
- 使用带有 rsa private key 的
sha256
签署此内容,并确保 public key 已上传到 DIRECTPAY 商家平台
类型 | 必填 | 说明 | 示例 |
---|---|---|---|
String | 是 | 使用 PRIVATE_KEY 对步骤 3 中的请求数据进行签名 | 示例显示如下 |
签名例子
sha256 IrBg6t73VsH7ieEnQDB4CXHFjMWUkp8Dtddpxqw+4Gvz6Tag7Dx6nrfAt2ofYK8xZN9aBCvAKAfmAOGWIXnsTXfhFBnMA2kadiga7ufUJ81ozyhllbiliRM2ugw1OcqSTLRHWBPhrVwhHBxgDiG9wbuI3FKURrz+CufYYakFoCw=
第 5 步:放入请求Header头部
将此签名 放入 X-Signature 下的 header 中,构造请求并调用接下来 API 接口