参数签名

安全支付

帮助阻止未经授权的第三方访问请求。签名必须附加在URL的末尾。

URL签名步骤

  1. 将您的支付组件里的URL参数发送到后端服务器

  2. 使用BlockATM收银台中的密钥生成签名

  3. 返回签名或完整的已签名URL

  4. 使用SDK或URL展示支付组件

签名生成方法

  1. 使用SHA-256哈希算法创建HMAC(基于哈希的消息认证码)

  2. 使用收银台的Secret Key作为密钥

  3. 使用原始URL的查询字符串作为消息内容

  4. 特别注意:基于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&currencyCode=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