参数签名
安全支付
帮助阻止未经授权的第三方访问请求。签名必须附加在URL的末尾。
URL签名步骤
将您的支付组件里的URL参数发送到后端服务器
使用BlockATM收银台中的密钥生成签名
返回签名或完整的已签名URL
使用SDK或URL展示支付组件
签名生成方法
使用SHA-256哈希算法创建HMAC(基于哈希的消息认证码)
使用收银台的Secret Key作为密钥
使用原始URL的查询字符串作为消息内容
特别注意:基于URL的集成方案中,所有查询参数值都必须先进行URL编码再生成签名
简单代码示例:
import crypto from 'crypto';
import { URL } from 'url';
// Configuration - replace with your actual values
const originalUrl = 'https://cashier.blockatm.com?apiKey=pck_payment_my3T68cbuIXf1x3QOEbWtFEfcJPxeBr8wTewDVM¤cyCode=eth&walletAddress=0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae';
const secretKey = 'sck_QOoPSlHDSsgXYeNyTP2i0ug1HKLRjHw9Ug7mCc1Q0';
// Process URL and parameters
const urlObj = new URL(originalUrl);
const params = urlObj.searchParams;
// URL encode all parameter values
params.forEach((v, k) => params.set(k, encodeURIComponent(v)));
// Generate signature using HMAC-SHA256
const signature = crypto.createHmac('sha256', secretKey)
.update(params.toString())
.digest('hex');
// Append signature to URL
urlObj.searchParams.set('signature', signature);
console.log('Signed URL:\n' + urlObj.toString());签名示例:
Secret Key:
URL's 参数:
签名结果:
Last updated