Payment Page 接入说明
商户通过请求打开Satogate支付页面,用户将在此页面上获取链上收款地址等支付信息,并进行充值/支付操作。因为区块链转账一般需时1分钟或更多,所以此页面不会回调通知商家是否已经完成支付。商户需要通过交易回调,及充值流水接口获取最终充值结果。
1. 用户充值页面
Satogate可以为每个商户的用户提供一个固定的区块链收款地址。用户无需登录商户平台生成订单就可以往该收款地址转账数字货币,进而充值资产到商户平台。
请求URL:https://pay.satogate.io/charge
请求方式:GET方法,打开新浏览器窗口/标签页
请求参数:
| 参数名称 | 说明 |
|---|---|
| merchantAddressId | 商家用户ID |
| apiKey | 商户API KEY |
| timestamp | 请求发起的时间戳(秒) |
| sign | 请求签名 |
注:单次请求10分钟内有效,过时需要重新签名并打开新支付页面。
2. 订单支付页面
Satogate可以为商户的每个订单提供一个区块链收款地址。用户往收款地址转账,就能完成支付订单。
请求URL:https://pay.satogate.io/order
请求方式:GET方法,打开新浏览器窗口/标签页
请求参数:
| 参数名称 | 说明 |
|---|---|
| merchantOrderId | 商户订单ID |
| merchantOrderAmount | 商户订单金额(单位:USD) |
| merchantOrderExpireTime | 商户订单超时时间(单位:秒) |
| apiKey | 商户API KEY |
| timestamp | 请求发起的时间戳(秒) |
| sign | 请求签名 |
注:单次请求10分钟内有效,过时需要重新签名并打开新支付页面。
签名方式说明
签名方式与接口签名方式大致相同,请参考https://satogate.io/api-docs.html
以下是不同点:
apiKey,timestamp及sign放在URL上,而非请求头上!
如下例:
请求参数
| 名称 | 值 |
|---|---|
| merchantOrderId | abc123 |
| merchantOrderAmount | 10.5 |
| merchantOrderExpireTime | 900 |
| apiKey | 123 |
| timestamp | 12345678901 |
请求URL:https://satogate.io/order
请求方式:GET
签名方式:
规则:Method + HOST + URL + ? + QueryString
要求:
QueryString:对所有请求参数按参数名的字典序( ASCII 码)升序排序,并格式化为“参数名称=参数值”的形式,然后将各个参数用"&"拼接在一起,最终生成的请求字符串如下:
apiKey=123&merchantOrderId=abc123&merchantOrderAmount=10.5&merchantOrderExpireTime=900×tamp=12345678901
*区别于接口签名,此签名规则将时间戳放置在请求参数当中,而非直接追加在待签名串后面。
生成签名字符串
签名前原字符串:GETpay.satogate.io/order?apiKey=123&merchantOrderId=abc123&merchantOrderAmount=10.5&merchantOrderExpireTime=900×tamp=12345678901
首先使用 HMAC-SHA1 算法对上一步中获得的签名原文字符串进行签名,然后将生成的签名串使用 Base64 进行编码,即可获得最终的签名串。(与接口签名一致)
具体代码如下,以 PHP 语言为例:
$apiSecret = '0CDE6743F18F3DA********49FD47C1576671FD5';
$srcStr = 'GETpay.satogate.io/order?apiKey=123&merchantOrderId=abc123&merchantOrderAmount=10.5&merchantOrderExpireTime=900×tamp=12345678901';
$macHex = hash_hmac('sha1', $srcStr, $apiSecret, false); // 十六进制字符串
$signStr = base64_encode($macHex);
echo $signStr;
最终得到的签名串为:
zmmjn35mikh6pM3V7sUEuX4wyYM=
把签名串放置在请求URL上,参数为sign,最终请求URL如下:
https://pay.satogate.io/charge?apiKey=123&merchantOrderId=abc123&merchantOrderAmount=10.5&merchantOrderExpireTime=900×tamp=12345678901&sign=zmmjn35mikh6pM3V7sUEuX4wyYM=
最后,可通过js打开新窗口(或标签页)加载此链接。