{
  "info": {
    "_postman_id": "e5ca7d0f-1f96-4311-bd57-477a088185f8",
    "name": "Hyronpay Merchant API Starter",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "description": "Starter collection for merchant integration: payment, hosted UI flow, payout signature, and webhook verification helpers."
  },
  "item": [
    {
      "name": "Profile - GET /api/v1/profile",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "X-API-Key",
            "value": "{{apiKey}}"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/profile",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "profile"
          ]
        }
      }
    },
    {
      "name": "Create Payment - POST /api/v1/payment/create",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "X-API-Key",
            "value": "{{apiKey}}"
          },
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"amount\": 100,\n  \"orderId\": \"{{orderId}}\",\n  \"description\": \"Topup\",\n  \"metadata\": {\n    \"senderAccountNumber\": \"1673585481\",\n    \"memberName\": \"นาย ทองดี ใจงาม\",\n    \"customerId\": \"u_123\"\n  }\n}"
        },
        "url": {
          "raw": "{{baseUrl}}/payment/create",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "payment",
            "create"
          ]
        }
      },
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "pm.test('status is 201', function () {",
              "  pm.response.to.have.status(201);",
              "});",
              "",
              "let json = {};",
              "try { json = pm.response.json(); } catch (e) {}",
              "",
              "if (json && json.transaction && json.transaction.id) {",
              "  pm.environment.set('transactionId', json.transaction.id);",
              "  pm.environment.set('paymentUrl', `${pm.environment.get('frontendBaseUrl').replace(/\\/$/, '')}/pay/${json.transaction.id}`);",
              "}"
            ]
          }
        }
      ]
    },
    {
      "name": "Get Payment By Order - GET /api/v1/payment/order/:orderId",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "X-API-Key",
            "value": "{{apiKey}}"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/payment/order/{{orderId}}",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "payment",
            "order",
            "{{orderId}}"
          ]
        }
      }
    },
    {
      "name": "Payment Accounts - GET /api/v1/payment/accounts",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "X-API-Key",
            "value": "{{apiKey}}"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/payment/accounts",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "payment",
            "accounts"
          ]
        }
      }
    },
    {
      "name": "Payout Signature Settings - GET /api/v1/payout/signature-settings",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "X-API-Key",
            "value": "{{apiKey}}"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/payout/signature-settings",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "payout",
            "signature-settings"
          ]
        }
      }
    },
    {
      "name": "Create Payout (Signed) - POST /api/v1/payout/create",
      "event": [
        {
          "listen": "prerequest",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const rawBody = pm.request.body && pm.request.body.raw ? pm.request.body.raw : '{}';",
              "const ts = Math.floor(Date.now() / 1000).toString();",
              "const secret = pm.environment.get('apiKey') || '';",
              "const payload = `${ts}.${rawBody}`;",
              "const signature = CryptoJS.HmacSHA256(payload, secret).toString(CryptoJS.enc.Hex);",
              "",
              "pm.environment.set('payoutTimestamp', ts);",
              "pm.environment.set('payoutSignature', signature);",
              "",
              "if (!pm.environment.get('idempotencyKey')) {",
              "  pm.environment.set('idempotencyKey', `idem-${Date.now()}`);",
              "}",
              "",
              "pm.request.headers.upsert({ key: 'X-Signature-Timestamp', value: ts });",
              "pm.request.headers.upsert({ key: 'X-Signature', value: signature });",
              "pm.request.headers.upsert({ key: 'Idempotency-Key', value: pm.environment.get('idempotencyKey') });"
            ]
          }
        }
      ],
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "X-API-Key",
            "value": "{{apiKey}}"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{idempotencyKey}}"
          },
          {
            "key": "X-Signature-Timestamp",
            "value": "{{payoutTimestamp}}"
          },
          {
            "key": "X-Signature",
            "value": "{{payoutSignature}}"
          },
          {
            "key": "X-Signature-Nonce",
            "value": "{{payoutNonce}}"
          },
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"amount\": 5,\n  \"destination\": {\n    \"bankCode\": \"SCB\",\n    \"accountNumber\": \"4190621964\",\n    \"accountName\": \"เจษฎา\"\n  },\n  \"metadata\": {\n    \"sourceSystem\": \"merchant-backoffice\",\n    \"memberId\": \"member_1001\"\n  }\n}"
        },
        "url": {
          "raw": "{{baseUrl}}/payout/create",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "payout",
            "create"
          ]
        }
      }
    }
  ],
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://hyronpay.com/api/v1"
    },
    {
      "key": "frontendBaseUrl",
      "value": "https://hyronpay.com"
    },
    {
      "key": "apiKey",
      "value": "sk_live_xxxxxxxxx"
    },
    {
      "key": "orderId",
      "value": "ORD-10001"
    },
    {
      "key": "transactionId",
      "value": ""
    },
    {
      "key": "paymentUrl",
      "value": ""
    },
    {
      "key": "idempotencyKey",
      "value": "idem-001"
    },
    {
      "key": "payoutTimestamp",
      "value": ""
    },
    {
      "key": "payoutSignature",
      "value": ""
    },
    {
      "key": "payoutNonce",
      "value": "nonce-001"
    }
  ]
}
