🔑Encryption (New)

How to generate our signature

วิธีการที่เราใช้ในการ encrypt จะมีขั้นตอนตามวิธีด้านล่าง

private flattenObject(obj, prefix = '',) {
  let result = {};
  
  for (const key of Object.keys(obj)) {
    const value = obj[key];
    const fullKey = prefix ? `${prefix}.${key}` : key;

    if (value !== null && typeof value === 'object' && !Array.isArray(value)) {
      result = { ...result, ...this.flattenObject(value, fullKey) };
    } else {
      result[fullKey] = value;
    }
  }

  return result;
}
  
private buildKeyValueString(obj) {
  // Flatten all keys (including nested like extendParams.foo, extendParams.bar)
  const flat = this.flattenObject(obj);
  const sortedKeys = Object.keys(flat).sort();

  const keyValuePairs = sortedKeys.map((key) => {
    const value = flat[key];
    return `${key}=${value}`;
  });

  return keyValuePairs.join('&');
}

generateSignature(secret, body) {
  const keyString = `${partnerId}:${this.buildKeyValueString(body)}`;

  // นำ signature ที่ได้ไปใส่ใน x-wildpay-signature
  const signature = createHmac('sha256', secret)
    .update(keyString)
    .digest('hex');

  return signature;
}

Last updated