Skip to content

🔐 Tạo chữ ký giao dịch Pay2S bằng Postman

1. Thiết lập biến môi trường

Thêm 3 biến trong Postman Environment:

Tên biếnGiá trị mẫu
accessKey66e862c8...b2eb3
partnerCodePAY2S7EPF0SB1ZP27W71
secretKey... (bí mật từ Pay2S)

2. Pre-request Script mẫu

javascript
const date = Date.now();
const requestId = date.toString();
const orderId = requestId;
const requestType = "pay2s";
const redirectUrl = "https://webhook.site/your-return-url";
const ipnUrl = "https://webhook.site/your-ipn-url";
const amount = "10000";
const orderInfo = "DH" + orderId;
const extraData = "";

const accessKey = pm.environment.get("accessKey") || "";
const partnerCode = pm.environment.get("partnerCode") || "";
const secretKey = pm.environment.get("secretKey") || "";

// Chuỗi ký: Pay2S yêu cầu dùng 'Array' cố định cho bankAccounts
const rawSignature =
  "accessKey=" + accessKey +
  "&amount=" + amount +
  "&bankAccounts=Array" +
  "&ipnUrl=" + ipnUrl +
  "&orderId=" + orderId +
  "&orderInfo=" + orderInfo +
  "&partnerCode=" + partnerCode +
  "&redirectUrl=" + redirectUrl +
  "&requestId=" + requestId +
  "&requestType=" + requestType;

console.log("🧾 rawSignature:", rawSignature);

const hash = CryptoJS.HmacSHA256(rawSignature, secretKey);
const signature = CryptoJS.enc.Hex.stringify(hash);

// Gán vào biến môi trường
pm.environment.set("requestId", requestId);
pm.environment.set("orderId", orderId);
pm.environment.set("signature", signature);

3. Body mẫu gửi lên API

json

{
  "accessKey": "{{accessKey}}",
  "partnerCode": "{{partnerCode}}",
  "partnerName": "Test Partner",
  "requestId": "{{requestId}}",
  "amount": 10000,
  "orderId": "{{orderId}}",
  "orderInfo": "DH{{orderId}}",
  "orderType": "pay2s",
  "bankAccounts": [
    {
      "account_number": "99999999",
      "bank_id": "ACB"
    }
  ],
  "redirectUrl": "{{redirectUrl}}",
  "ipnUrl": "{{ipnUrl}}",
  "requestType": "pay2s",
  "signature": "{{signature}}"
}

4. 📌 Lưu ý

  • Trường bankAccounts=Array phải giữ nguyên trong rawSignature

  • Luôn log rawSignature để đối chiếu với server

  • requestId nên theo timestamp để đảm bảo duy nhất