访问令牌
访问令牌是对我们资源服务器的后续请求以获取受保护资源所必需的。
第 1 步:获取客户端 ID 和客户端密码
有关如何获取 CLIENT_ID 和 CLIENT_SECRET 的信息,请参阅 Setup
参数 | 类型 | 必填 | 说明 | 示例 |
---|---|---|---|---|
CLIENT_ID | String | 是 | Client ID/ AppID 可以从 https://merchant.directpay.asia 获取。 | 10020 |
CLIENT_SECRET | String | 是 | Client secret/ AppSecret 可以从 https://merchant.directpay.asia 获取。 | F0NfID1ftdGdu27ybGMfT3vqqCMM9gwO |
第 2 步:将第 1 步中的参数编码为 Base 64 格式
格式:
CLIENT_ID
:CLIENT_SECRET
例子:
Base64 编码之前:
10020:F0NfID1ftdGdu27ybGMfT3vqqCMM9gwO
Base64编码后:
MTAwMjA6RjBOZklEMWZ0ZEdkdTI3eWJHTWZUM3ZxcUNNTTlnd08=
第 3 步:使用 SERVER PUBLIC KEY 加密最终结果
接下来,用SERVER_PUB_KEY
来 非对称加密 上一步的最终结果。
SERVER_PUB_KEY="-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApkgv8hWMIReydv2wkA7z
0cy8SLCCDN+Rnz1G50QMPF+THkRdvks5F9FBMzpJWVHpnxmj7TDUEWAc1xJDcr3b
qkqId1cdgNeQ5KYDnER+UsVvQOkWPh3P+kDc9wvDIR6XKqeZnhtWvsYtI1cbivs/
bTqV18iIhEE0zHLkWL7aMO/n4KcMyu0gjqnC1RdhCGRPw1iUFvoX4EIrcnhZQUe3
KbA9Ko15EgwGLIC36KuB6iYWWnck9mRi2sWVXK3ve8rRANCWq7zQ2lxj5bSUb1I9
2eA4/GJQubNU0ShA8Y36/MEpep5q+YNHSEe0b9L4ObP5kI7RxLAXf2+oRkSpnXmJ
9QIDAQAB
-----END PUBLIC KEY-----"
最终获得加密后的结果为 0ef5e6fa91589dd1da1f2e23bb878e7a99dd67db392e61189af50f2da6dbca7698faa7421af9558b3b183c84912f931c0eb5dd52a17ba9339c9926142bfeeebb5579428f1220b30578873b1d91fb9d33963c7608bea53d9c8fd9fa1160d845ba33aabae183ea2ec97a15ecafe224133012e77783ef38e1ae5b3f1cd2709775d11d97bfd65ea029d00b821853ec8c319ddcebda9597aba08da7b8fe6bcca40da0b0c55fa75bd07f22702d5a78774e72a316379740bad92d896d979d5b5c2145c045d44d68e2ad901d961ac791b7ad70546c56fb8ec9f2c4af59fd7f4ee44be65f54dc57c063d8990ad1ea098adcfb5e043482875681ff8efd5fa5ea0e09b5921b
第 4 步: POST 请求到 /gateway/v1/createToken
接口
请求方法 : POST
请求
Headers
参数 | 类型 | 值 |
---|---|---|
content-type | String | application/json |
Body
参数 | 类型 | 说明 | 例子 |
---|---|---|---|
data | String | 通过 SERVER PUBLIC KEY 来加密 | 0ef5e6fa91589dd1da1f2e23bb......a5ea0e09b5921b |
返回
Body
参数 | 类型 | 说明 | 例子 |
---|---|---|---|
code | String | 请求的返回结果 | 200 |
encryptedToken | String | 加密的数据,需要通过 CLIENT_SYMMETRIC_KEY 来解密 | a83cf72884cbbb....3ddf0744646e0cf0b482 |
message | String | 本次请求信息明文 | 'Success' |
Example Response
{
"code": 200,
"encryptedToken": "a83cf72884cbbb341bdc6bcf46092752d48dba47658687432a1a103937a98976bcd85a89353ac704669311780f9f8caf75eea561af067b981401f05d5f5a97c058d7f793a7c3865fbeb3fdee31ecd2a6510b79f5a0e012a757862ee510fb6f2979ffd4e70eb0446ea27780cfdd1803e665f5604f995f07671319ee292799183f4d891a617a410c78e10b3e945d71e955046be62ad4d33ddf0744646e0cf0b482",
"message": "Success",
}
第 5 步: 通过 CLIENT_SYMMETRIC_KEY 来解密 encryptedToken
用 CLIENT_SYMMETRIC_KEY, PCd1dlEmFnBXaVce06Pzp7Vike0oHnVJ
, 来
对称解密 encryptedToken, a83cf72884cbbb341bdc6bcf46092752d48dba47658687432a1a103937a98976bcd85a89353ac704669311780f9f8caf75eea561af067b981401f05d5f5a97c058d7f793a7c3865fbeb3fdee31ecd2a6510b79f5a0e012a757862ee510fb6f2979ffd4e70eb0446ea27780cfdd1803e665f5604f995f07671319ee292799183f4d891a617a410c78e10b3e945d71e955046be62ad4d33ddf0744646e0cf0b482
最终结果为 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBJZCI6IjEwMDIwIiwiaWF0IjoxNjY3MDU2ODkyLCJleHAiOjE2NjczMTYwOTJ9.UnVBt6Opxd_ZOMns1gCT40Ihdj1nbndi2V43Xt3fIuE
第 6 步: 将 Token 值放入 Header 的 Authorization 中,用于后续请求
{
headers: {
Authorization: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBJZCI6IjEwMDIwIiwiaWF0IjoxNjY3MDU2ODkyLCJleHAiOjE2NjczMTYwOTJ9.UnVBt6Opxd_ZOMns1gCT40Ihdj1nbndi2V43Xt3fIuE",
... //The Rest of the headers
}
}