加签

为了更高的安全性,高级合作伙伴必须对URL 进行签名

URL接口加签

申请集成中,您将生成 SecretKey。URL请求接口的签名就是基于其生成,所以请千万注意不要泄漏。

加签步骤

API 接口请求加签主要由以下几个步骤组成。

  1. 获取参数

  2. 参数排序

    • 接着按所有参数名的字典序(ASCII码)升序排序,注意只有参数里的 key 名进行排序,值不参与排序

  3. 拼字符串

    • 先将格式转化为参数名=参数值形式,并用&符连接,得到拼接字符串;

  4. 摘要签名

    • 然后对待加签字符串使用 SecretKeyHMAC-SHA256 算法进行摘要签名,并进行urlencoding,生成最终的签名。

  5. 签名赋值

    • 最后,将上一步得到的签名赋值到 url 里的 signature,集成FaTPay页面。FaTPay 网关收到请求后,会统一使用 SecretKey 校验签名,如果通过校验则返回相应的服务端数据。

加签示例

假设需要默认钱包地址,且对用户锁定并隐藏钱包地址页

请求参数如下:

{
  "walletAddress": 0xF0C35891CAf1cCa9b1daB1291c61fF232E6D5888,
  "walletAddressHidden": 1,
  "walletAddressLocked": 1,
  "ext": ext
}

公共参数如下:

{
  "nonce": 748219,
  "partnerId": "mqMBpCIP630LJxLY",
  "timestamp": 1656600459
}

获取参数

首先,获取url接口需要签名的GET入参,组成一个数组,去掉 key 或 value 为空的 item。即可得到这样一个数组:

ext=ext&nonce=54335363&partnerId=mqMBpCIP630LJxJK&partnerUrl=https://yoururl.com&timestamp=1657854065&walletAddress=xxxx&walletAddressHidden=1&walletAddressLocked=1
{
  "partnerId": "mqMBpCIP630LJxLY",
  "timestamp": 1656600459,
  "nonce": 748219,
  "walletAddress": "0xF0C35891CAf1cCa9b1daB1291c61fF232E6D5888",
  "walletAddressHidden": 1,
  "walletAddressLocked": 1,
  "ext": "ext"
}

参数排序

接着按所有参数名的字典序(ASCII码)升序排序,得到:

{
  "ext": "ext",
  "nonce": 748219,
  "partnerId": "mqMBpCIP630LJxLY",
  "timestamp": 1656600459,
  "walletAddress": "0xF0C35891CAf1cCa9b1daB1291c61fF232E6D5888",
  "walletAddressHidden": 1,
  "walletAddressLocked": 1
}

拼字符串

先将格式转化为参数名=参数值形式,并用&符连接,得到拼接字符串:

ext=ext&nonce=54335363&partnerId=mqMBpCIP630LJxJK&timestamp=1657854065&walletAddress=0xF0C35891CAf1cCa9b1daB1291c61fF232E6D5888&walletAddressHidden=1&walletAddressLocked=1

摘要签名

然后对待加签字符串使用 SecretKeyHMAC-SHA256 算法进行摘要签名,对摘要字串进行base64编码生成签名:

4UoZ2gIm3bcLTw5K6WdBJIaYBiXgQF3uvOfY4Ovc6+4=

对签名 urlencode:

4UoZ2gIm3bcLTw5K6WdBJIaYBiXgQF3uvOfY4Ovc6%2B4%3D

签名赋值

最后,将上一步得到的签名赋值到 url 里的 signature,集成FaTPay页面。页面跳转至FaTPay后,FaTPay会统一使用 SecretKey 校验签名,如果通过校验则展示对应的下单流程。

https://ramp.fatpay.xyz/home?ext=ext&nonce=748219&partnerId=mqMBpCIP630LJxLY&timestamp=1656600459&walletAddress=0xF0C35891CAf1cCa9b1daB1291c61fF232E6D5888&walletAddressHidden=1&walletAddressLocked=1&signature=4UoZ2gIm3bcLTw5K6WdBJIaYBiXgQF3uvOfY4Ovc6%2B4%3D

Last updated