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&timestamp=12345678901

*区别于接口签名,此签名规则将时间戳放置在请求参数当中,而非直接追加在待签名串后面。

生成签名字符串

签名前原字符串:GETpay.satogate.io/order?apiKey=123&merchantOrderId=abc123&merchantOrderAmount=10.5&merchantOrderExpireTime=900&timestamp=12345678901

首先使用 HMAC-SHA1 算法对上一步中获得的签名原文字符串进行签名,然后将生成的签名串使用 Base64 进行编码,即可获得最终的签名串。(与接口签名一致)

具体代码如下,以 PHP 语言为例:

$apiSecret = '0CDE6743F18F3DA********49FD47C1576671FD5';
$srcStr = 'GETpay.satogate.io/order?apiKey=123&merchantOrderId=abc123&merchantOrderAmount=10.5&merchantOrderExpireTime=900&timestamp=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&timestamp=12345678901&sign=zmmjn35mikh6pM3V7sUEuX4wyYM=

最后,可通过js打开新窗口(或标签页)加载此链接。

results matching ""

    No results matching ""