{
  "info": {
    "_postman_id": "6aef32b5-3f5a-4238-bbd1-b23d5bd0ba4e",
    "name": "bnpl-UAT_updated Copy 3",
    "description": "QPay API merchant integration UAT environment",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "_exporter_id": "54479396",
    "_collection_link": "https://go.postman.co/collection/54479396-6aef32b5-3f5a-4238-bbd1-b23d5bd0ba4e?source=collection_link"
  },
  "item": [
    {
      "name": "list-plans",
      "event": [
        {
          "listen": "prerequest",
          "script": {
            "exec": [
              "//generate unique message ID in every run",
              "const dynamicUuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {",
              "    var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);",
              "    return v.toString(16);",
              "});",
              "",
              "pm.collectionVariables.set('msgId', dynamicUuid);",
              "",
              "//set fixed values to prevent errors ",
              "pm.collectionVariables.set(\"plaintext_otp\", \"0\");",
              "pm.collectionVariables.set(\"hashed_otp\", \"\");",
              "pm.collectionVariables.set(\"customer_card\", \"\");",
              "",
              ""
            ],
            "type": "text/javascript",
            "packages": {},
            "requests": {}
          }
        },
        {
          "listen": "test",
          "script": {
            "exec": [
              ""
            ],
            "type": "text/javascript",
            "packages": {},
            "requests": {}
          }
        }
      ],
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "token",
            "value": "{{signature}}",
            "type": "text"
          },
          {
            "key": "x-Merchant-ID",
            "value": "{{X-Merchant-ID}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\"senderInfo\":{\"lang\":1,\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"msgId\":\"{{msgId}}\",\"deviceId\":\"{{device_id}}\"},\"amount\":\"{{amount_number}}\",\"merchantId\":\"{{merchant_id}}\"}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": {
          "raw": "{{hostname_uat}}/bnpl/mw/list-plans",
          "host": [
            "{{hostname_uat}}"
          ],
          "path": [
            "bnpl",
            "mw",
            "list-plans"
          ]
        }
      },
      "response": [
        {
          "name": "Successful Response (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"senderInfo\":{\"lang\":1,\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"msgId\":\"{{msgId}}\",\"deviceId\":\"{{device_id}}\"},\"amount\":\"{{amount_number}}\",\"merchantId\":\"{{merchant_id}}\"}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname_uat}}/bnpl/mw/list-plans",
              "host": [
                "{{hostname_uat}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "list-plans"
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "text",
          "header": [
            {
              "key": ":status",
              "value": 200
            },
            {
              "key": "token",
              "value": "AgLgK31RGEyHrPR0qD/4ejpaHjtsa7vJ1NySnI36eFqJEuHvZRl+tOh1UrhyoQoyoAw2yxQpIE3ZjlS5hEpMFdPJsQR1YfdHfcON0UXUMH1XSEdXvJFouw5gc0hSAYlGnS2rtyr9THCK0VBZZT21YL7r0ua7BAdSKr77vrcYKd4WtuO1RpjUSh4gKosfEDozYft1H/fEKSWm8a01WbGKyOD42JQFkcdI2Gy5JIjwAdwkSyA3TJfAsOLKIKJ9GAaXqCGv+VkJoMMEJFgeXDnlysOnYJPnQuKhDEcDWeSNvKA/h8jQSsvmKsSSDVbKpvz2luDW/PTXKkZ2tLNQcWtMuQ=="
            },
            {
              "key": "content-type",
              "value": "application/json"
            },
            {
              "key": "date",
              "value": "Tue, 23 Jun 2026 07:55:22 GMT"
            },
            {
              "key": "x-envoy-upstream-service-time",
              "value": "25"
            },
            {
              "key": "content-encoding",
              "value": "gzip"
            },
            {
              "key": "vary",
              "value": "Accept-Encoding"
            },
            {
              "key": "server",
              "value": "istio-envoy"
            }
          ],
          "cookie": [],
          "body": "{\n    \"responseInfo\": {\n        \"errorCd\": \"00\",\n        \"desc\": \"Success\",\n        \"statusCode\": \"1\",\n        \"loanId\": null,\n        \"failureReasons\": null\n    },\n    \"plans\": [\n        {\n            \"name\": \"QPAY BNPL\",\n            \"description\": null,\n            \"penalties\": [\n                \"No Penalties\"\n            ],\n            \"numberOfRepayments\": 4,\n            \"type\": \"MONTHLY\",\n            \"id\": 1,\n            \"installments\": [\n                {\n                    \"dueDate\": \"2026-06-23\",\n                    \"amount\": 0.25,\n                    \"period\": 1,\n                    \"loanBalanceAfterPayment\": 0.75\n                },\n                {\n                    \"dueDate\": \"2026-07-23\",\n                    \"amount\": 0.25,\n                    \"period\": 2,\n                    \"loanBalanceAfterPayment\": 0.5\n                },\n                {\n                    \"dueDate\": \"2026-08-23\",\n                    \"amount\": 0.25,\n                    \"period\": 3,\n                    \"loanBalanceAfterPayment\": 0.25\n                },\n                {\n                    \"dueDate\": \"2026-09-23\",\n                    \"amount\": 0.25,\n                    \"period\": 4,\n                    \"loanBalanceAfterPayment\": 0\n                }\n            ]\n        }\n    ],\n    \"principalId\": -208453800\n}"
        },
        {
          "name": "No response (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"senderInfo\":{\"lang\":1,\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"msgId\":\"{{msgId}}\",\"deviceId\":\"{{device_id}}\"},\"amount\":\"{{amount_number}}\",\"merchantId\":\"{{merchant_id}}\"}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname_uat}}/bnpl/mw/list-plans",
              "host": [
                "{{hostname_uat}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "list-plans"
              ]
            }
          },
          "_postman_previewlanguage": "Text",
          "header": [],
          "cookie": [],
          "body": ""
        },
        {
          "name": "Internal System Error (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"senderInfo\":{\"lang\":1,\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"msgId\":\"{{msgId}}\",\"deviceId\":\"{{device_id}}\"},\"amount\":\"{{amount_number}}\",\"merchantId\":\"{{merchant_id}}\"}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname_uat}}/bnpl/mw/list-plans",
              "host": [
                "{{hostname_uat}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "list-plans"
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "Text",
          "header": [
            {
              "key": ":status",
              "value": 200
            },
            {
              "key": "token",
              "value": "A1dJPuHQYRonAs9c8Ay6Pii0tnL79hSK9F4RoX0GkfMvaVkJXyUSEmniaTRqLiBA+qpWqQ/cOO+cpmLO+SFBOO2dUViJeZF40g2WGTwmR79ToC9FCpDTjrSMd3XpawXdpwgugRxg92KKufgwsizy+aXF8ZIieUHFv0ep84jklMOQQBEaxDTtXK7LyIuFzlhHeWcP4poJSNB/pD7aG1OIxP1vZxCRzPQc8JSGae5fn8uHLiJxIsxRQokDScXV1/QMa85Q3uHLgKkUv4ljDszJEv2M1dMi4XubdwmxNpUUt7PbGxpAqD8FxyCAtodl8S94aQSKVAADoRD+mckhBai/RA=="
            },
            {
              "key": "content-type",
              "value": "application/json"
            },
            {
              "key": "date",
              "value": "Tue, 23 Jun 2026 07:59:23 GMT"
            },
            {
              "key": "x-envoy-upstream-service-time",
              "value": "45"
            },
            {
              "key": "content-encoding",
              "value": "gzip"
            },
            {
              "key": "vary",
              "value": "Accept-Encoding"
            },
            {
              "key": "server",
              "value": "istio-envoy"
            }
          ],
          "cookie": [],
          "body": "{\n    \"responseInfo\": {\n        \"errorCd\": \"2\",\n        \"desc\": \"Internal System Error\",\n        \"statusCode\": \"3\",\n        \"loanId\": null,\n        \"failureReasons\": null\n    }\n}"
        },
        {
          "name": "Invalid Credentials (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"senderInfo\":{\"lang\":1,\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"msgId\":\"{{msgId}}\",\"deviceId\":\"{{device_id}}\"},\"amount\":\"{{amount_number}}\",\"merchantId\":\"{{merchant_id}}\"}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname_uat}}/bnpl/mw/list-plans",
              "host": [
                "{{hostname_uat}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "list-plans"
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "Text",
          "header": [
            {
              "key": ":status",
              "value": 200
            },
            {
              "key": "token",
              "value": "byL5xU5YxH3r3h+h2KDkdE9N4EiPm7EKkFKip6n4m0p831n9eyxHHPv0SZAFEWkDol0uWKVUqjlz2BD/hMOrhctSydEMfGK3jERl0PZ7MCqa2KiUDs4EYXZnrqtW06/xHe/dH8fLspv+eOOYnBTAmparRrC6YoN1ZD0SPEpk3hgLq2oSgNtqn/KCZSu7qGCRKfYyKdgiS5oJL3SjIzBAi8vHQu/NiQ88vG2mrUzKj7b2tic73nLa/Az72UbGv6pC3EZLN4I3NPysDVQBkzIvlwqSV+yDnocvrV3/tbX+YbpF/MTNH1qdbxslIK1hZfk+SNSSb/W8sOWXsbXpYsMksg=="
            },
            {
              "key": "content-type",
              "value": "application/json"
            },
            {
              "key": "date",
              "value": "Tue, 23 Jun 2026 08:00:29 GMT"
            },
            {
              "key": "x-envoy-upstream-service-time",
              "value": "9"
            },
            {
              "key": "content-encoding",
              "value": "gzip"
            },
            {
              "key": "vary",
              "value": "Accept-Encoding"
            },
            {
              "key": "server",
              "value": "istio-envoy"
            }
          ],
          "cookie": [],
          "body": "{\n    \"responseInfo\": {\n        \"errorCd\": \"49\",\n        \"desc\": \"Invalid Credentials\",\n        \"statusCode\": \"3\",\n        \"loanId\": null,\n        \"failureReasons\": null\n    }\n}"
        },
        {
          "name": "Duplicate Message (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"senderInfo\":{\"lang\":1,\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"msgId\":\"{{msgId}}\",\"deviceId\":\"{{device_id}}\"},\"amount\":\"{{amount_number}}\",\"merchantId\":\"{{merchant_id}}\"}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname_uat}}/bnpl/mw/list-plans",
              "host": [
                "{{hostname_uat}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "list-plans"
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "Text",
          "header": [
            {
              "key": ":status",
              "value": 200
            },
            {
              "key": "token",
              "value": "FZVl5RtMhDMqOLLZ8MUdNw4OA7GHgDQv4G8nsT1txcancv3dVF6S4EgJPuriLg/pJmZpVgtavePAMrTuieHHFx1vzKN9Q+XgMYwNX03iA85YNn33YWm0HEIonvYZhEn8Gy7MuWLYWkaJj1G57Xw6TUtfptDhuxkLUvjF0VoXzrvpAB240M8k82uJnCFSyDWyq88uStflj3ZUzBkih5mTy7e5ly907hBM5/B8orviZqfZOrJLrfCz8d9z8SybAt2FS2PFPRZcuIQTcb4IIwaOw/PqqueNDqn5GBo072pXwhy6RsMb8ctsU6veNEEr8oNmoTlKuHwl3F6ZDcO7GhV9jg=="
            },
            {
              "key": "content-type",
              "value": "application/json"
            },
            {
              "key": "date",
              "value": "Tue, 23 Jun 2026 08:01:22 GMT"
            },
            {
              "key": "x-envoy-upstream-service-time",
              "value": "19"
            },
            {
              "key": "content-encoding",
              "value": "gzip"
            },
            {
              "key": "vary",
              "value": "Accept-Encoding"
            },
            {
              "key": "server",
              "value": "istio-envoy"
            }
          ],
          "cookie": [],
          "body": "{\n    \"responseInfo\": {\n        \"errorCd\": \"46\",\n        \"desc\": \"Message Is Duplicated\",\n        \"statusCode\": \"3\",\n        \"loanId\": null,\n        \"failureReasons\": null\n    }\n}"
        },
        {
          "name": "Invalid Service ID (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"senderInfo\":{\"lang\":1,\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"msgId\":\"{{msgId}}\",\"deviceId\":\"{{device_id}}\"},\"amount\":\"{{amount_number}}\",\"merchantId\":\"{{merchant_id}}\"}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname_uat}}/bnpl/mw/list-plans",
              "host": [
                "{{hostname_uat}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "list-plans"
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "Text",
          "header": [
            {
              "key": ":status",
              "value": 200
            },
            {
              "key": "token",
              "value": "h/hI9nuLGEWUUDZPxWEGD+h01uzGYADl8vWO5V1h7v3R74paPoBIgCJ83Qtz4SbugQUMR/JchvLa80H1u1+j/+b3rwvGVOtrfVclbvgXhPc3PmzGSlf7DzMIOJ6l/xLVSihuyH27AB/Vr6pf4wqh6yPsCFakbc7JkImzCdhUZqYFHH+qBvWe0kjGOieX/rULKQbXqDwWZ06co2f64DwvPHXzLw5+iuibxki/Ivr0gKny7nTmzcNP6vPhCJPV0rz61V9ZfaKlsZqt2cilHCcPUAhza50kpcWIgkA47JbpxzpFBEx8sRVjWV4kiiouGGPxOerNlNExjLsfctqCZIO7Pw=="
            },
            {
              "key": "content-type",
              "value": "application/json"
            },
            {
              "key": "date",
              "value": "Tue, 23 Jun 2026 08:04:05 GMT"
            },
            {
              "key": "x-envoy-upstream-service-time",
              "value": "25"
            },
            {
              "key": "content-encoding",
              "value": "gzip"
            },
            {
              "key": "vary",
              "value": "Accept-Encoding"
            },
            {
              "key": "server",
              "value": "istio-envoy"
            }
          ],
          "cookie": [],
          "body": "{\n    \"responseInfo\": {\n        \"errorCd\": \"241\",\n        \"desc\": \"Invalid service id\",\n        \"statusCode\": \"3\",\n        \"loanId\": null,\n        \"failureReasons\": null\n    }\n}"
        },
        {
          "name": "Sender Mobile Inactive (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"senderInfo\":{\"lang\":1,\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"msgId\":\"{{msgId}}\",\"deviceId\":\"{{device_id}}\"},\"amount\":\"{{amount_number}}\",\"merchantId\":\"{{merchant_id}}\"}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname}}/bnpl/mw/list-plans",
              "host": [
                "{{hostname}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "list-plans"
              ]
            }
          },
          "_postman_previewlanguage": "Text",
          "header": [],
          "cookie": [],
          "body": ""
        },
        {
          "name": "Amount Exceeding Credit Limit (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"senderInfo\":{\"lang\":1,\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"msgId\":\"{{msgId}}\",\"deviceId\":\"{{device_id}}\"},\"amount\":\"{{amount_number}}\",\"merchantId\":\"{{merchant_id}}\"}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname}}/bnpl/mw/list-plans",
              "host": [
                "{{hostname}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "list-plans"
              ]
            }
          },
          "_postman_previewlanguage": "Text",
          "header": [],
          "cookie": [],
          "body": ""
        },
        {
          "name": "Mobile Not Registered (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"senderInfo\":{\"lang\":1,\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"msgId\":\"{{msgId}}\",\"deviceId\":\"{{device_id}}\"},\"amount\":\"{{amount_number}}\",\"merchantId\":\"{{merchant_id}}\"}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname}}/bnpl/mw/list-plans",
              "host": [
                "{{hostname}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "list-plans"
              ]
            }
          },
          "_postman_previewlanguage": "Text",
          "header": [],
          "cookie": [],
          "body": ""
        },
        {
          "name": "No Plans Available (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"senderInfo\":{\"lang\":1,\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"msgId\":\"{{msgId}}\",\"deviceId\":\"{{device_id}}\"},\"amount\":\"{{amount_number}}\",\"merchantId\":\"{{merchant_id}}\"}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname_uat}}/bnpl/mw/list-plans",
              "host": [
                "{{hostname_uat}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "list-plans"
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "Text",
          "header": [
            {
              "key": ":status",
              "value": 200
            },
            {
              "key": "token",
              "value": "GZ1kn3y3DThcDNojWu155n9/YLNbE4j0H3MRaBiTGyJKTunleVsSDAXsxSgo71vXcZ8I+JbZF950ltL7JwrYreUUcF1MBCE4V6lzx8XCB2YLeY62v6KHf4JqZMDfQcVQNfGnFmOztlJ6aS1dQEmweoV+UAg+/1KKvu5vo0Gpz1qYAbvPCvxe1exycdl61X0fXtS4YMEPIa+o0+BqSrOvO9OyUisYuiP/W2hDEYsD9pKGSOgsVBFSriUv6M8bYs4wtP7wEozwSkQdDE7PcyKK2ZiSldXMvj63vQcYtIYogbOEGDIfM7WDiyYE832tHhRqfavEY4OwGCfZlj0R/+j36g=="
            },
            {
              "key": "content-type",
              "value": "application/json"
            },
            {
              "key": "date",
              "value": "Wed, 24 Jun 2026 07:11:04 GMT"
            },
            {
              "key": "x-envoy-upstream-service-time",
              "value": "21"
            },
            {
              "key": "content-encoding",
              "value": "gzip"
            },
            {
              "key": "vary",
              "value": "Accept-Encoding"
            },
            {
              "key": "server",
              "value": "istio-envoy"
            }
          ],
          "cookie": [],
          "body": "{\n    \"responseInfo\": {\n        \"errorCd\": \"319\",\n        \"desc\": \"No Plans Available\",\n        \"statusCode\": \"3\",\n        \"loanId\": null,\n        \"failureReasons\": null\n    },\n    \"plans\": null,\n    \"principalId\": null\n}"
        },
        {
          "name": "Token Issue (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"senderInfo\":{\"lang\":1,\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"msgId\":\"{{msgId}}\",\"deviceId\":\"{{device_id}}\"},\"amount\":\"{{amount_number}}\",\"merchantId\":\"{{merchant_id}}\"}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname}}/bnpl/mw/list-plans",
              "host": [
                "{{hostname}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "list-plans"
              ]
            }
          },
          "_postman_previewlanguage": "Text",
          "header": [],
          "cookie": [],
          "body": ""
        },
        {
          "name": "Credit Score Not Found (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"senderInfo\":{\"lang\":1,\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"msgId\":\"{{msgId}}\",\"deviceId\":\"{{device_id}}\"},\"amount\":\"{{amount_number}}\",\"merchantId\":\"{{merchant_id}}\"}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname}}/bnpl/mw/list-plans",
              "host": [
                "{{hostname}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "list-plans"
              ]
            }
          },
          "_postman_previewlanguage": "Text",
          "header": [],
          "cookie": [],
          "body": ""
        }
      ]
    },
    {
      "name": "generate-otp",
      "event": [
        {
          "listen": "prerequest",
          "script": {
            "exec": [
              "//generate unique message ID in every run \r",
              "const dynamicUuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r",
              "    var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\r",
              "    return v.toString(16);\r",
              "});\r",
              "\r",
              "pm.collectionVariables.set('msgId', dynamicUuid);\r",
              "\r",
              "//set fixed values to prevent errors \r",
              "pm.collectionVariables.set(\"plaintext_otp\", \"0\");\r",
              "pm.collectionVariables.set(\"hashed_otp\", \"\");"
            ],
            "type": "text/javascript",
            "packages": {},
            "requests": {}
          }
        },
        {
          "listen": "test",
          "script": {
            "exec": [
              ""
            ],
            "type": "text/javascript",
            "packages": {},
            "requests": {}
          }
        }
      ],
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "token",
            "value": "{{signature}}",
            "type": "text"
          },
          {
            "key": "x-Merchant-ID",
            "value": "{{X-Merchant-ID}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\"senderInfo\":{\"lang\":1,\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"msgId\":\"{{msgId}}\"},\"storeInformation\":{\"name\":\"{{store_name}}\"}}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": {
          "raw": "{{hostname_uat}}/bnpl/mw/generate-otp",
          "host": [
            "{{hostname_uat}}"
          ],
          "path": [
            "bnpl",
            "mw",
            "generate-otp"
          ]
        }
      },
      "response": [
        {
          "name": "Successful Response (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"senderInfo\":{\"lang\":1,\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"msgId\":\"{{msgId}}\"},\"storeInformation\":{\"name\":\"{{store_name}}\"}}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname_uat}}/bnpl/mw/generate-otp",
              "host": [
                "{{hostname_uat}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "generate-otp"
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "Text",
          "header": [
            {
              "key": ":status",
              "value": 200
            },
            {
              "key": "token",
              "value": "UgBK/lb+ReuJJfF/hgT1M3dp+h9LyTyDEaAlJERxHPsD0vxawQEN2Cdln/CRuwOZoJIKRwxysoG1THI2xpBnlD6XgkQBYQYdr7r+CbvaObEsVMzEfg9NCNLH4VqETPnEKfPeSvoUd5m830oiOLStenRNru/GCFWalEgL3YOqrWlIORMBt/yqumQR3iX0+Sml79AM4tZmw5FC6MuIs6vgtYEv+TD/NUnVEqEFwZpiJhkrV5W6b7b+fM+RL6MXXuV68OGBbI6lO+peYz1HzW1i89FO0pT4+B/jaGcErh/yj2TVcpjXiQa1o2wqiFWGAggKrhxk8jCgiy0Xxd0VaSZIiA=="
            },
            {
              "key": "content-type",
              "value": "application/json"
            },
            {
              "key": "date",
              "value": "Tue, 23 Jun 2026 08:07:12 GMT"
            },
            {
              "key": "x-envoy-upstream-service-time",
              "value": "41"
            },
            {
              "key": "content-encoding",
              "value": "gzip"
            },
            {
              "key": "vary",
              "value": "Accept-Encoding"
            },
            {
              "key": "server",
              "value": "istio-envoy"
            }
          ],
          "cookie": [],
          "body": "{\n    \"responseInfo\": {\n        \"errorCd\": \"00\",\n        \"desc\": \"Success\",\n        \"statusCode\": \"1\",\n        \"loanId\": null,\n        \"failureReasons\": null\n    }\n}"
        },
        {
          "name": "Invalid Credentials (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"senderInfo\":{\"lang\":1,\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"msgId\":\"{{msgId}}\"},\"storeInformation\":{\"name\":\"{{store_name}}\"}}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname_uat}}/bnpl/mw/generate-otp",
              "host": [
                "{{hostname_uat}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "generate-otp"
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "Text",
          "header": [
            {
              "key": ":status",
              "value": 200
            },
            {
              "key": "token",
              "value": "hLXGPPVOQDJf41UsbSZQBDY+gMcr4KusLHxjsfZMgRJ2uTmQgB6GENzKIIwcip60u25mlHIiF4XIwD7dIyIOcZORp83tw7ZKABPxgCfSq4/tRskH+Gozzcdgb/GTd3WPxKpG9zpX8QBWKVkiPAuOpX/Uri/IR4rM/EGnczCBifDy1qvYJbhoYcyPbEytOfnZLlTfdMoUVuH81uLPTx9GhfgsC41LVYRlSnp2MBkiglYnFcN0aJCWtOnAvCxhOPuDUKHsxgf7RjC5BPDHy2glCwpZADNyVBvI9xV4dQcUMUhJDQybW2MbiE9cNMnMwxpfYdm1blsrXlF2mbMF1GDBXw=="
            },
            {
              "key": "content-type",
              "value": "application/json"
            },
            {
              "key": "date",
              "value": "Wed, 24 Jun 2026 06:39:55 GMT"
            },
            {
              "key": "x-envoy-upstream-service-time",
              "value": "14"
            },
            {
              "key": "content-encoding",
              "value": "gzip"
            },
            {
              "key": "vary",
              "value": "Accept-Encoding"
            },
            {
              "key": "server",
              "value": "istio-envoy"
            }
          ],
          "cookie": [],
          "body": "{\n    \"responseInfo\": {\n        \"errorCd\": \"4\",\n        \"desc\": \"Invalid Credentials\",\n        \"statusCode\": \"3\",\n        \"loanId\": null,\n        \"failureReasons\": null\n    }\n}"
        },
        {
          "name": "Duplicated Message (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"senderInfo\":{\"lang\":1,\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"msgId\":\"5a6babe4-4d1a-4fdf-8761-076c49de936e\"},\"storeInformation\":{\"name\":\"{{store_name}}\"}}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname_uat}}/bnpl/mw/generate-otp",
              "host": [
                "{{hostname_uat}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "generate-otp"
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "Text",
          "header": [
            {
              "key": ":status",
              "value": 200
            },
            {
              "key": "token",
              "value": "FZVl5RtMhDMqOLLZ8MUdNw4OA7GHgDQv4G8nsT1txcancv3dVF6S4EgJPuriLg/pJmZpVgtavePAMrTuieHHFx1vzKN9Q+XgMYwNX03iA85YNn33YWm0HEIonvYZhEn8Gy7MuWLYWkaJj1G57Xw6TUtfptDhuxkLUvjF0VoXzrvpAB240M8k82uJnCFSyDWyq88uStflj3ZUzBkih5mTy7e5ly907hBM5/B8orviZqfZOrJLrfCz8d9z8SybAt2FS2PFPRZcuIQTcb4IIwaOw/PqqueNDqn5GBo072pXwhy6RsMb8ctsU6veNEEr8oNmoTlKuHwl3F6ZDcO7GhV9jg=="
            },
            {
              "key": "content-type",
              "value": "application/json"
            },
            {
              "key": "date",
              "value": "Wed, 24 Jun 2026 06:44:33 GMT"
            },
            {
              "key": "x-envoy-upstream-service-time",
              "value": "16"
            },
            {
              "key": "content-encoding",
              "value": "gzip"
            },
            {
              "key": "vary",
              "value": "Accept-Encoding"
            },
            {
              "key": "server",
              "value": "istio-envoy"
            }
          ],
          "cookie": [],
          "body": "{\n    \"responseInfo\": {\n        \"errorCd\": \"46\",\n        \"desc\": \"Message Is Duplicated\",\n        \"statusCode\": \"3\",\n        \"loanId\": null,\n        \"failureReasons\": null\n    }\n}"
        }
      ]
    },
    {
      "name": "list of cards",
      "event": [
        {
          "listen": "prerequest",
          "script": {
            "exec": [
              "//generate unique message ID in every run",
              "const dynamicUuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {",
              "    var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);",
              "    return v.toString(16);",
              "});",
              "",
              "pm.collectionVariables.set('msgId', dynamicUuid);",
              "",
              "//fetch the OTP from collection variables",
              "const plainTextOtp = String(pm.collectionVariables.get(\"plaintext_otp\") || \"\").trim();",
              "",
              "    try {",
              "        //encode the string data into raw binary byte streams",
              "        const msgUint8 = new TextEncoder().encode(plainTextOtp);",
              "        ",
              "        //compute SHA-256 natively using top-level await ",
              "        const hashBuffer = await crypto.subtle.digest('SHA-256', msgUint8);",
              "        ",
              "        //convert the binary buffer directly into a Base64 string layout",
              "        const hashBase64 = btoa(String.fromCharCode(...new Uint8Array(hashBuffer)));",
              "        ",
              "        //commit the final hash to collection variables stack",
              "        pm.collectionVariables.set(\"hashed_otp\", hashBase64);",
              "        ",
              "        const rawRequestBody = pm.request.body.raw;",
              "        const privateKeyPem = pm.collectionVariables.get(\"private_key\");",
              "",
              "        if (!rawRequestBody || !privateKeyPem) {",
              "            pm.test(\"RSA sign engine initialization (Signing)\", () => {",
              "                pm.expect.fail(\"Aborting request: request body or private_key is missing.\");",
              "            });",
              "            pm.execution.skipRequest();",
              "        }",
              "",
              "        // resolve all curly placeholders inside the body text",
              "        const resolvedBody = pm.collectionVariables.replaceIn(rawRequestBody);",
              "        const parsedJsonObj = JSON.parse(resolvedBody);",
              "            ",
              "        // force assign the live hash directly into the JSON tree to guarantee it is never blank",
              "        if (parsedJsonObj.senderInfo) {",
              "            parsedJsonObj.senderInfo.otp = hashBase64;",
              "        }",
              "",
              "        // compact the unified JSON string using standard JSON formatting rules",
              "        const compactJsonString = JSON.stringify(parsedJsonObj);",
              "",
              "        // lock it down into the outbound body payload container",
              "        pm.request.body.update({",
              "            mode: 'raw',",
              "            raw: compactJsonString,",
              "            options: { raw: { language: 'json' } }",
              "        });",
              "",
              "        // re-apply content-type enforcement to prevent text/plain fallback",
              "        pm.request.headers.upsert({ key: \"Content-Type\", value: \"application/json\" });",
              "",
              "        console.log(\"Payload string signed:\", compactJsonString);",
              "",
              "        // import key structure using native Web Crypto API (RSASSA-PKCS1-v1_5)",
              "        const cryptoKey = await crypto.subtle.importKey(",
              "            \"pkcs8\", ",
              "            convertPemToBinary(privateKeyPem),",
              "            {",
              "                name: \"RSASSA-PKCS1-v1_5\",",
              "                hash: { name: \"SHA-256\" }",
              "            },",
              "            false,",
              "            [\"sign\"]",
              "        );",
              "",
              "        // compute the raw RSA digital signature over the compact JSON text",
              "        const encoder = new TextEncoder();",
              "        const dataUint8 = encoder.encode(compactJsonString);",
              "        const signatureBuffer = await crypto.subtle.sign(",
              "            \"RSASSA-PKCS1-v1_5\",",
              "            cryptoKey,",
              "            dataUint8",
              "        );",
              "",
              "        // generate output signature block formatted in Base64",
              "        const base64Signature = btoa(String.fromCharCode(...new Uint8Array(signatureBuffer)));",
              "        ",
              "        // commit generated signature directly to the 'signature' collection variable",
              "        pm.collectionVariables.set(\"signature\", base64Signature);",
              "",
              "    } catch (error) {",
              "        pm.test(\"Cryptography failure (Crypto)\", () => {",
              "            pm.expect.fail(\"The internal crypto machine failed to compute: \" + error.message);",
              "        });",
              "        pm.execution.skipRequest();",
              "    }",
              "",
              "// helper function: translates standard text base64 key definitions to binary array buffers",
              "function convertPemToBinary(pem) {",
              "    const cleanPem = pem",
              "        .replace(/-----BEGIN [A-Z ]+-----/, \"\")",
              "        .replace(/-----END [A-Z ]+-----/, \"\")",
              "        .replace(/\\s+/g, \"\");",
              "    const binaryDer = atob(cleanPem);",
              "    const bytes = new Uint8Array(binaryDer.length);",
              "    for (let i = 0; i < binaryDer.length; i++) {",
              "        bytes[i] = binaryDer.charCodeAt(i);",
              "    }",
              "    return bytes.buffer;",
              "}",
              ""
            ],
            "type": "text/javascript",
            "packages": {},
            "requests": {}
          }
        },
        {
          "listen": "test",
          "script": {
            "exec": [
              "// Check the raw format coming from API\r",
              "const responseBody = pm.response.json();\r",
              "console.log(\"Raw API response:\", responseBody);\r",
              "\r",
              "// Check if the API wrapped the cards inside an object property\r",
              "if (responseBody && Array.isArray(responseBody.cards)) {\r",
              "    const accountDetails = responseBody.cards[0].account;\r",
              "    pm.collectionVariables.set(\"customer_card\", accountDetails);\r",
              "    console.log(\"Success from wrapped object, saved:\", accountDetails);\r",
              "} \r",
              "// Check if the response is a flat array \r",
              "else if (Array.isArray(responseBody) && responseBody.length > 0) {\r",
              "    const accountDetails = responseBody[0].account;\r",
              "    pm.collectionVariables.set(\"customer_card\", accountDetails);\r",
              "    console.log(\"Success from flat array, saved:\", accountDetails);\r",
              "} \r",
              "\r",
              "// throw an error if payload structure are mismatched \r",
              "else {\r",
              "    console.error(\"Array not found. API payload structure mismatch.\");\r",
              "    if (responseBody.ResponseHeader || responseBody.desc) {\r",
              "        console.error(\"Error Code:\", responseBody.ResponseHeader?.errorCd || responseBody.errorCd);\r",
              "        console.error(\"Reason:\", responseBody.ResponseHeader?.desc || responseBody.desc);\r",
              "    }\r",
              "}\r",
              ""
            ],
            "type": "text/javascript",
            "packages": {},
            "requests": {}
          }
        }
      ],
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "token",
            "value": "{{signature}}",
            "type": "text"
          },
          {
            "key": "x-Merchant-ID",
            "value": "{{X-Merchant-ID}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\"senderInfo\":{\"lang\":1,\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"deviceId\":\"{{device_id}}\",\"msgId\":\"{{msgId}}\",\"otp\":\"{{hashed_otp}}\"}}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": {
          "raw": "{{hostname_uat}}/bnpl/mw/list-card",
          "host": [
            "{{hostname_uat}}"
          ],
          "path": [
            "bnpl",
            "mw",
            "list-card"
          ]
        }
      },
      "response": [
        {
          "name": "Successful Response (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"senderInfo\":{\"lang\":1,\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"deviceId\":\"{{device_id}}\",\"msgId\":\"{{msgId}}\",\"otp\":\"{{hashed_otp}}\"}}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname_uat}}/bnpl/mw/list-card",
              "host": [
                "{{hostname_uat}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "list-card"
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "Text",
          "header": [
            {
              "key": ":status",
              "value": 200
            },
            {
              "key": "token",
              "value": "dhI31/uVbHzRhRKnbVsTa/wKIET1+tHt9zDNn83FtNGZaYP2Fsp1JQnCS5LsPnwHHNyRR4m6GI/uzXh7FRbhfiQYXMRssrW0xmi0i442VPOGSWFwtDVf/Tb93yNPmGQAjIaZakfjNy0viHxzjoUzaL5SVhGnJ+CpchSbGx+bMdyg9GjNzZ2yLuA9A3R57fOTjaYP5o/6eDLgVSQAE08+z0JXf4fiFn34hzCD3e43d8WPI27LF5wsi+pDjz4EpHxBlQ/6yeO/JFzw2xFg8p3jLIOPfg+KXxZ4jlY6dukX1QFA2ECJDexlcqOrbFAZbXynRCqBACIKbQ/KZxaE2QNrvg=="
            },
            {
              "key": "content-type",
              "value": "application/json"
            },
            {
              "key": "date",
              "value": "Tue, 23 Jun 2026 08:08:16 GMT"
            },
            {
              "key": "x-envoy-upstream-service-time",
              "value": "21"
            },
            {
              "key": "content-encoding",
              "value": "gzip"
            },
            {
              "key": "vary",
              "value": "Accept-Encoding"
            },
            {
              "key": "server",
              "value": "istio-envoy"
            }
          ],
          "cookie": [],
          "body": "{\n    \"responseInfo\": {\n        \"errorCd\": \"00\",\n        \"desc\": \"Success\",\n        \"statusCode\": \"1\",\n        \"loanId\": null,\n        \"failureReasons\": null\n    },\n    \"cards\": [\n        {\n            \"account\": \"BNPL002\",\n            \"cardNumber\": \"xxxx-xxxx-xxxx-8785\",\n            \"expiryDate\": \"12/2030\",\n            \"cardHolderName\": null\n        },\n        {\n            \"account\": \"BNPL001\",\n            \"cardNumber\": \"xxxx-xxxx-xxxx-1111\",\n            \"expiryDate\": null,\n            \"cardHolderName\": null\n        }\n    ]\n}"
        },
        {
          "name": "Invalid OTP (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"senderInfo\":{\"lang\":1,\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"deviceId\":\"{{device_id}}\",\"msgId\":\"{{msgId}}\",\"otp\":\"{{hashed_otp}}\"}}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname_uat}}/bnpl/mw/list-card",
              "host": [
                "{{hostname_uat}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "list-card"
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "Text",
          "header": [
            {
              "key": ":status",
              "value": 200
            },
            {
              "key": "token",
              "value": "PDrTq2bzlCVz8z7XgZ219Fnyw8L40dK8Y0K5Fv7ECMWsYG0IturPPBpvXIIT9hHrCg+YRhljqu8sdJXOujLj1QzeVb6SgkBNMIoLqe4Wg6Ted+M3Ppihde697EOPKMbcFodRMmlym7XAcRxM1lSPO5++LUHq8X+c2J7aJe/0sIuanUwN9FYE4oXnpWaSNni/TqPXJqkdE3NEZd8elmnsA9jVG2dTyop93o/b493TAPlPBm75PG0Av9bYf80MLLvvpPwBDXUr+2v+d8Qp6iUoaQBslln6KShTb+1Qd2gEg3P721T+YP6ZFnZ1RdDF1qEfDxDIA9rXSLnWjgbWRxzUqQ=="
            },
            {
              "key": "content-type",
              "value": "application/json"
            },
            {
              "key": "date",
              "value": "Tue, 23 Jun 2026 08:09:35 GMT"
            },
            {
              "key": "x-envoy-upstream-service-time",
              "value": "29"
            },
            {
              "key": "content-encoding",
              "value": "gzip"
            },
            {
              "key": "vary",
              "value": "Accept-Encoding"
            },
            {
              "key": "server",
              "value": "istio-envoy"
            }
          ],
          "cookie": [],
          "body": "{\n    \"responseInfo\": {\n        \"errorCd\": \"89\",\n        \"desc\": \"Invalid OTP\",\n        \"statusCode\": \"3\",\n        \"loanId\": null,\n        \"failureReasons\": null\n    }\n}"
        },
        {
          "name": "Expired OTP (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"senderInfo\":{\"lang\":1,\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"msgId\":\"{{msgId}}\"},\"storeInformation\":{\"name\":\"{{store_name}}\"}}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname_uat}}/bnpl/mw/generate-otp",
              "host": [
                "{{hostname_uat}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "generate-otp"
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "Text",
          "header": [
            {
              "key": ":status",
              "value": 200
            },
            {
              "key": "token",
              "value": "UgBK/lb+ReuJJfF/hgT1M3dp+h9LyTyDEaAlJERxHPsD0vxawQEN2Cdln/CRuwOZoJIKRwxysoG1THI2xpBnlD6XgkQBYQYdr7r+CbvaObEsVMzEfg9NCNLH4VqETPnEKfPeSvoUd5m830oiOLStenRNru/GCFWalEgL3YOqrWlIORMBt/yqumQR3iX0+Sml79AM4tZmw5FC6MuIs6vgtYEv+TD/NUnVEqEFwZpiJhkrV5W6b7b+fM+RL6MXXuV68OGBbI6lO+peYz1HzW1i89FO0pT4+B/jaGcErh/yj2TVcpjXiQa1o2wqiFWGAggKrhxk8jCgiy0Xxd0VaSZIiA=="
            },
            {
              "key": "content-type",
              "value": "application/json"
            },
            {
              "key": "date",
              "value": "Wed, 24 Jun 2026 07:20:30 GMT"
            },
            {
              "key": "x-envoy-upstream-service-time",
              "value": "25"
            },
            {
              "key": "content-encoding",
              "value": "gzip"
            },
            {
              "key": "vary",
              "value": "Accept-Encoding"
            },
            {
              "key": "server",
              "value": "istio-envoy"
            }
          ],
          "cookie": [],
          "body": "{\n    \"responseInfo\": {\n        \"errorCd\": \"00\",\n        \"desc\": \"Success\",\n        \"statusCode\": \"1\",\n        \"loanId\": null,\n        \"failureReasons\": null\n    }\n}"
        },
        {
          "name": "Sender Blocked (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"senderInfo\":{\"lang\":1,\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"deviceId\":\"{{device_id}}\",\"msgId\":\"{{msgId}}\",\"otp\":\"{{hashed_otp}}\"}}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname_uat}}/bnpl/mw/list-card",
              "host": [
                "{{hostname_uat}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "list-card"
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "Text",
          "header": [
            {
              "key": ":status",
              "value": 200
            },
            {
              "key": "token",
              "value": "em94ISuHUIjWPDrbw009pUGlfjIeoY99tjoBMT8VimhRtuOa3pCWSV3PFJpqu2dZe5IBZrCnkWDpLeFAHx59tpEll2+QHzHdRaw92CBaCTSHIL3O5TDebyDT+f9ZuewXBCT7hPUm39cnJvzumUgz+7hUYnqinx8VX7HrbWAMi593l4etjYQAn2/e0Xh1muoHl+pTKNte85vTn7uhUwO3JgyASqUlzqjYZ2uebdRQT7oLaiE2/vfO9g+Xk1UOBJT6DxCGZvwJZWd7k2o15I/5vrwwR0W1DRV3chqMuUGI5p9m2jbkcVOVnyKkMRgz7Mna7bD/0xzFvMBy591bSo5RuA=="
            },
            {
              "key": "content-type",
              "value": "application/json"
            },
            {
              "key": "date",
              "value": "Tue, 23 Jun 2026 08:13:15 GMT"
            },
            {
              "key": "x-envoy-upstream-service-time",
              "value": "25"
            },
            {
              "key": "content-encoding",
              "value": "gzip"
            },
            {
              "key": "vary",
              "value": "Accept-Encoding"
            },
            {
              "key": "server",
              "value": "istio-envoy"
            }
          ],
          "cookie": [],
          "body": "{\n    \"responseInfo\": {\n        \"errorCd\": \"72\",\n        \"desc\": \"Sender Mobile Blocked\",\n        \"statusCode\": \"3\",\n        \"loanId\": null,\n        \"failureReasons\": null\n    }\n}"
        },
        {
          "name": "Duplicated Message (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"senderInfo\":{\"lang\":1,\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"deviceId\":\"{{device_id}}\",\"msgId\":\"{{msgId}}\",\"otp\":\"{{hashed_otp}}\"}}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname_uat}}/bnpl/mw/list-card",
              "host": [
                "{{hostname_uat}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "list-card"
              ]
            }
          },
          "_postman_previewlanguage": "Text",
          "header": [],
          "cookie": [],
          "body": ""
        }
      ]
    },
    {
      "name": "confirm plan",
      "event": [
        {
          "listen": "prerequest",
          "script": {
            "exec": [
              "//generate unique message ID in every run\r",
              "const dynamicUuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r",
              "    var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\r",
              "    return v.toString(16);\r",
              "});\r",
              "\r",
              "pm.collectionVariables.set('msgId', dynamicUuid);"
            ],
            "type": "text/javascript",
            "packages": {},
            "requests": {}
          }
        },
        {
          "listen": "test",
          "script": {
            "exec": [
              ""
            ],
            "type": "text/javascript",
            "packages": {},
            "requests": {}
          }
        }
      ],
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "token",
            "value": "{{signature}}",
            "type": "text"
          },
          {
            "key": "x-Merchant-ID",
            "value": "{{X-Merchant-ID}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\"senderInfo\":{\"lang\":1,\"otp\":\"{{hashed_otp}}\",\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"msgId\":\"{{msgId}}\",\"deviceId\":\"{{device_id}}\"},\"planInfo\":{\"planId\":1,\"principleId\":0,\"merchantId\":\"{{merchant_id}}\",\"account\":\"{{customer_card}}\"},\"amount\":\"{{amount_number}}\"}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": {
          "raw": "{{hostname_uat}}/bnpl/mw/confirm-plan",
          "host": [
            "{{hostname_uat}}"
          ],
          "path": [
            "bnpl",
            "mw",
            "confirm-plan"
          ]
        }
      },
      "response": [
        {
          "name": "Bank Integration Failure (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "// This example is for reference only and shouldn't be used in testing either in production or UAT. Please use your assigned credentials and test environment when integrating. \r\n// Do not run this endpoint. \r\n// Please note that currently the api endpoint (confirm-plan) will return \"Bank integration failure\" because of a temporary issue with the payment gateway for the UAT environment. \r\n// In this case, the tester can now move to production environment once the production credentials are generated. \r\n\r\n{\"senderInfo\":{\"lang\":1,\"otp\":\"{{hashed_otp}}\",\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"msgId\":\"{{msgId}}\",\"deviceId\":\"{{device_id}}\"},\"planInfo\":{\"planId\":1,\"principleId\":0,\"merchantId\":\"{{merchant_id}}\",\"account\":\"{{customer_card}}\"},\"amount\":\"{{amount_number}}\"}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname_uat}}/bnpl/mw/confirm-plan",
              "host": [
                "{{hostname_uat}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "confirm-plan"
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "Text",
          "header": [
            {
              "key": ":status",
              "value": 200
            },
            {
              "key": "token",
              "value": "hWNbbmUyh85uIdv7o6CzoVzL1TFuGJLNZ3rdhMKnT9PUiixuHN/PW756Dzsjwv7TOkHd4tMjbrbUrPWajf+SPQf5ovPkpsCpgcj8uE1U7KwCZOVkJqKcgz1voNngdP90W7sSMdqPndvGmP8F1iZ96XhRnhQ1RByCydSv9hi/evlE/6/4VZFJEqZo4niYBIhg/5zpMTB2XfTIILs5vEapru5G+nvkqKZKHvyPLgMEeiYE9Fl0QMfleXMgiTDQInN6H3DeSMB1ot0aQ2usCh2vzsT1nKFhFWkznaOdZnzK6prqhoSZqPYpg+CwhsvpfURM15+MdH+dCKi5vqoqDZFaew=="
            },
            {
              "key": "content-type",
              "value": "application/json"
            },
            {
              "key": "date",
              "value": "Tue, 23 Jun 2026 08:45:49 GMT"
            },
            {
              "key": "x-envoy-upstream-service-time",
              "value": "2454"
            },
            {
              "key": "content-encoding",
              "value": "gzip"
            },
            {
              "key": "vary",
              "value": "Accept-Encoding"
            },
            {
              "key": "server",
              "value": "istio-envoy"
            }
          ],
          "cookie": [],
          "body": "{\n    \"responseInfo\": {\n        \"errorCd\": \"36\",\n        \"desc\": \"Bank integration failure\",\n        \"statusCode\": \"5\",\n        \"loanId\": \"1234\",\n        \"failureReasons\": null\n    }\n}"
        },
        {
          "name": "Invalid OTP (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "// This example is for reference only and shouldn't be used in testing either in production or UAT. Please use your assigned credentials and test environment when integrating. \r\n// Do not run this endpoint. \r\n// If the assigned plaintext_otp is missing or invalid, it will display invalid OTP response. \r\n// If the assigned hashed_otp is missing or invalid, it will display invalid OTP response.  \r\n// OTP is required to confirm the payment plans. \r\n\r\n{\"senderInfo\":{\"lang\":1,\"otp\":\"{{hashed_otp}}\",\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"msgId\":\"{{msgId}}\",\"deviceId\":\"{{device_id}}\"},\"planInfo\":{\"planId\":1,\"principleId\":0,\"merchantId\":\"{{merchant_id}}\",\"account\":\"{{customer_card}}\"},\"amount\":\"{{amount_number}}\"}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname_uat}}/bnpl/mw/confirm-plan",
              "host": [
                "{{hostname_uat}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "confirm-plan"
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "Text",
          "header": [
            {
              "key": ":status",
              "value": 200
            },
            {
              "key": "token",
              "value": "PDrTq2bzlCVz8z7XgZ219Fnyw8L40dK8Y0K5Fv7ECMWsYG0IturPPBpvXIIT9hHrCg+YRhljqu8sdJXOujLj1QzeVb6SgkBNMIoLqe4Wg6Ted+M3Ppihde697EOPKMbcFodRMmlym7XAcRxM1lSPO5++LUHq8X+c2J7aJe/0sIuanUwN9FYE4oXnpWaSNni/TqPXJqkdE3NEZd8elmnsA9jVG2dTyop93o/b493TAPlPBm75PG0Av9bYf80MLLvvpPwBDXUr+2v+d8Qp6iUoaQBslln6KShTb+1Qd2gEg3P721T+YP6ZFnZ1RdDF1qEfDxDIA9rXSLnWjgbWRxzUqQ=="
            },
            {
              "key": "content-type",
              "value": "application/json"
            },
            {
              "key": "date",
              "value": "Tue, 23 Jun 2026 08:46:25 GMT"
            },
            {
              "key": "x-envoy-upstream-service-time",
              "value": "33"
            },
            {
              "key": "content-encoding",
              "value": "gzip"
            },
            {
              "key": "vary",
              "value": "Accept-Encoding"
            },
            {
              "key": "server",
              "value": "istio-envoy"
            }
          ],
          "cookie": [],
          "body": "{\n    \"responseInfo\": {\n        \"errorCd\": \"89\",\n        \"desc\": \"Invalid OTP\",\n        \"statusCode\": \"3\",\n        \"loanId\": null,\n        \"failureReasons\": null\n    }\n}"
        },
        {
          "name": "Internal System Error (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"senderInfo\":{\"lang\":1,\"otp\":\"{{hashed_otp}}\",\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"msgId\":\"{{msgId}}\",\"deviceId\":\"{{device_id}}\"},\"planInfo\":{\"planId\":1,\"principleId\":0,\"merchantId\":\"{{merchant_id}}\",\"account\":\"{{customer_card}}\"},\"amount\":\"{{amount_number}}\"}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname_uat}}/bnpl/mw/confirm-plan",
              "host": [
                "{{hostname_uat}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "confirm-plan"
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "Text",
          "header": [
            {
              "key": ":status",
              "value": 200
            },
            {
              "key": "token",
              "value": "A1dJPuHQYRonAs9c8Ay6Pii0tnL79hSK9F4RoX0GkfMvaVkJXyUSEmniaTRqLiBA+qpWqQ/cOO+cpmLO+SFBOO2dUViJeZF40g2WGTwmR79ToC9FCpDTjrSMd3XpawXdpwgugRxg92KKufgwsizy+aXF8ZIieUHFv0ep84jklMOQQBEaxDTtXK7LyIuFzlhHeWcP4poJSNB/pD7aG1OIxP1vZxCRzPQc8JSGae5fn8uHLiJxIsxRQokDScXV1/QMa85Q3uHLgKkUv4ljDszJEv2M1dMi4XubdwmxNpUUt7PbGxpAqD8FxyCAtodl8S94aQSKVAADoRD+mckhBai/RA=="
            },
            {
              "key": "content-type",
              "value": "application/json"
            },
            {
              "key": "date",
              "value": "Tue, 23 Jun 2026 08:47:46 GMT"
            },
            {
              "key": "x-envoy-upstream-service-time",
              "value": "1781"
            },
            {
              "key": "content-encoding",
              "value": "gzip"
            },
            {
              "key": "vary",
              "value": "Accept-Encoding"
            },
            {
              "key": "server",
              "value": "istio-envoy"
            }
          ],
          "cookie": [],
          "body": "{\n    \"responseInfo\": {\n        \"errorCd\": \"2\",\n        \"desc\": \"Internal System Error\",\n        \"statusCode\": \"3\",\n        \"loanId\": null,\n        \"failureReasons\": null\n    }\n}"
        },
        {
          "name": "Service Integration Failure (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "// This example is for reference only and shouldn't be used in testing either in production or UAT. Please use your assigned credentials and test environment when integrating. \r\n// Do not run this endpoint. \r\n// If the plan ID and principle ID is missing or invalid. It will display service integration failure response. \r\n\r\n{\"senderInfo\":{\"lang\":1,\"otp\":\"{{hashed_otp}}\",\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"msgId\":\"{{msgId}}\",\"deviceId\":\"{{device_id}}\"},\"planInfo\":{\"planId\":1,\"principleId\":0,\"merchantId\":\"{{merchant_id}}\",\"account\":\"{{customer_card}}\"},\"amount\":\"{{amount_number}}\"}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname_uat}}/bnpl/mw/confirm-plan",
              "host": [
                "{{hostname_uat}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "confirm-plan"
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "Text",
          "header": [],
          "cookie": [
            {
              "expires": "Invalid Date",
              "domain": "",
              "path": ""
            }
          ],
          "body": "{\r\n    \"responseInfo\": {\r\n        \"errorCd\": \"70\",\r\n        \"desc\": \"Service Integration Failure\",\r\n        \"statusCode\": \"3\",\r\n        \"loanId\": \"1234\",\r\n        \"failureReasons\": null\r\n    }, \r\n    planId: null,\r\n    principalId: null\r\n}"
        },
        {
          "name": "Bank Integration Rejection (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "// This example is for reference only and shouldn't be used in testing either in production or UAT. Please use your assigned credentials and test environment when integrating. \r\n// Do not run this endpoint. \r\n// If there is insufficient funds in the customer cards. It will display the bank integration failure response. \r\n\r\n{\"senderInfo\":{\"lang\":1,\"otp\":\"{{hashed_otp}}\",\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"msgId\":\"{{msgId}}\",\"deviceId\":\"{{device_id}}\"},\"planInfo\":{\"planId\":1,\"principleId\":0,\"merchantId\":\"{{merchant_id}}\",\"account\":\"{{customer_card}}\"},\"amount\":\"{{amount_number}}\"}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname_uat}}/bnpl/mw/confirm-plan",
              "host": [
                "{{hostname_uat}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "confirm-plan"
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "Text",
          "header": [],
          "cookie": [
            {
              "expires": "Invalid Date",
              "domain": "",
              "path": ""
            }
          ],
          "body": "{\r\n    \"responseInfo\": {\r\n        \"errorCd\": \"59\",\r\n        \"desc\": \"Bank Integration Rejection\",\r\n        \"statusCode\": \"3\",\r\n        \"loanId\": \"1234\",\r\n        \"failureReasons\": null\r\n    }, \r\n    planId: \"124\",\r\n    principalId: \"-3918282434\"\r\n}"
        },
        {
          "name": "Duplicate Message (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              },
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\"senderInfo\":{\"lang\":1,\"otp\":\"{{hashed_otp}}\",\"sender\":\"{{sender_number}}\",\"senderType\":\"M\",\"msgId\":\"{{msgId}}\",\"deviceId\":\"{{device_id}}\"},\"planInfo\":{\"planId\":1,\"principleId\":0,\"merchantId\":\"{{merchant_id}}\",\"account\":\"{{customer_card}}\"},\"amount\":\"{{amount_number}}\"}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname_uat}}/bnpl/mw/confirm-plan",
              "host": [
                "{{hostname_uat}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "confirm-plan"
              ]
            }
          },
          "_postman_previewlanguage": "Text",
          "header": [],
          "cookie": [],
          "body": ""
        }
      ]
    },
    {
      "name": "Refund",
      "event": [
        {
          "listen": "prerequest",
          "script": {
            "exec": [
              "//generate unique message ID in every run \r",
              "const dynamicUuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r",
              "    var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\r",
              "    return v.toString(16);\r",
              "});\r",
              "\r",
              "pm.collectionVariables.set('msgId', dynamicUuid);"
            ],
            "type": "text/javascript",
            "packages": {},
            "requests": {}
          }
        }
      ],
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "x-Merchant-ID",
            "value": "{{X-Merchant-ID}}",
            "type": "text"
          },
          {
            "key": "token",
            "value": "{{signature}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\"senderInfo\":{\"lang\":1,\"sender\":\"{{service_id}}\",\"senderType\":\"C\",\"otp\":null,\"deviceId\":\"{{device_id}}\",\"msgId\":\"{{msgId}}\"},\"refundInfo\":{\"loanId\":\"{{loan_id}}\",\"amount\":\"{{refund_amount}}\"}}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": {
          "raw": "{{hostname_uat}}/bnpl/mw/bnpl-refund",
          "host": [
            "{{hostname_uat}}"
          ],
          "path": [
            "bnpl",
            "mw",
            "bnpl-refund"
          ]
        }
      },
      "response": [
        {
          "name": "Transaction Amount Not Allowed (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "// This example is for reference only and shouldn't be used in testing either in production or UAT. Please use your assigned credentials and test environment when integrating. \r\n// Do not run this endpoint. \r\n// If the refund amount is incorrect. It will display the transaction amount not allowed response. \r\n\r\n{\"senderInfo\":{\"lang\":1,\"sender\":\"{{service_id}}\",\"senderType\":\"C\",\"otp\":null,\"deviceId\":\"{{device_id}}\",\"msgId\":\"{{msgId}}\"},\"refundInfo\":{\"loanId\":\"{{loan_id}}\",\"amount\":\"{{refund_amount}}\"}}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname_uat}}/bnpl/mw/bnpl-refund",
              "host": [
                "{{hostname_uat}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "bnpl-refund"
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "Text",
          "header": [],
          "cookie": [
            {
              "expires": "Invalid Date",
              "domain": "",
              "path": ""
            }
          ],
          "body": "{\r\n    \"responseInfo\": {\r\n        \"errorCd\": \"58\",\r\n        \"desc\": \"Transaction amount not allowed\",\r\n        \"statusCode\": \"3\",\r\n        \"loanId\": 1234,\r\n        \"failureReasons\": null\r\n    }\r\n}\r\n\r\n"
        },
        {
          "name": "No Transactions Found (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "// This example is for reference only and shouldn't be used in testing either in production or UAT. Please use your assigned credentials and test environment when integrating. \r\n// Do not run this endpoint. \r\n// If the transactions records are not found. It will display no transaction found response. \r\n\r\n{\"senderInfo\":{\"lang\":1,\"sender\":\"{{service_id}}\",\"senderType\":\"C\",\"otp\":null,\"deviceId\":\"{{device_id}}\",\"msgId\":\"{{msgId}}\"},\"refundInfo\":{\"loanId\":\"{{loan_id}}\",\"amount\":\"{{refund_amount}}\"}}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname_uat}}/bnpl/mw/bnpl-refund",
              "host": [
                "{{hostname_uat}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "bnpl-refund"
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "Text",
          "header": [],
          "cookie": [
            {
              "expires": "Invalid Date",
              "domain": "",
              "path": ""
            }
          ],
          "body": "{\r\n    \"responseInfo\": {\r\n        \"errorCd\": \"34\",\r\n        \"desc\": \"No transactions found\",\r\n        \"statusCode\": \"3\",\r\n        \"loanId\": \"12234\",\r\n        \"failureReasons\": null\r\n    }\r\n}"
        },
        {
          "name": "Transaction Already Refunded (200 OK)",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "x-Merchant-ID",
                "value": "{{X-Merchant-ID}}",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{signature}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "// This example is for reference only and shouldn't be used in testing either in production or UAT. Please use your assigned credentials and test environment when integrating. \r\n// Do not run this endpoint. \r\n// If the transaction was already refunded. It will display transaction is already refunded response. \r\n\r\n{\"senderInfo\":{\"lang\":1,\"sender\":\"{{service_id}}\",\"senderType\":\"C\",\"otp\":null,\"deviceId\":\"{{device_id}}\",\"msgId\":\"{{msgId}}\"},\"refundInfo\":{\"loanId\":\"{{loan_id}}\",\"amount\":\"{{refund_amount}}\"}}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{hostname_uat}}/bnpl/mw/bnpl-refund",
              "host": [
                "{{hostname_uat}}"
              ],
              "path": [
                "bnpl",
                "mw",
                "bnpl-refund"
              ]
            }
          },
          "status": "OK",
          "code": 200,
          "_postman_previewlanguage": "Text",
          "header": [],
          "cookie": [
            {
              "expires": "Invalid Date",
              "domain": "",
              "path": ""
            }
          ],
          "body": "{\r\n    \"responseInfo\": {\r\n        \"errorCd\": \"201\",\r\n        \"desc\": \"Transaction is already refunded\",\r\n        \"statusCode\": \"3\",\r\n        \"loanId\": \"1234\",\r\n        \"failureReasons\": null\r\n    }\r\n}"
        }
      ]
    }
  ],
  "auth": {
    "type": "digest",
    "digest": [
      {
        "key": "algorithm",
        "value": "MD5",
        "type": "string"
      }
    ]
  },
  "event": [
    {
      "listen": "prerequest",
      "script": {
        "type": "text/javascript",
        "packages": {},
        "requests": {},
        "exec": [
          "// Web Crypto RSA-SHA256 siging engine",
          "const rawRequestBody = pm.request.body.raw;",
          "const privateKeyPem = pm.collectionVariables.get(\"private_key\");",
          "",
          "if (!rawRequestBody || !privateKeyPem) {",
          "    pm.test(\"RSA Sign Engine Initialization\", () => {",
          "        pm.expect.fail(\"Aborting request: Request body or private_key is missing.\");",
          "    });",
          "    pm.execution.skipRequest();",
          "}",
          "",
          "// Resolve variables inside the body text",
          "const resolvedBody = pm.collectionVariables.replaceIn(rawRequestBody);",
          "",
          "// Strip only linebreaks and spaces",
          "const compactJsonString = resolvedBody.replace(/[\\r\\n]+/g, '').replace(/\\s{2,}/g, ' ').trim();",
          "",
          "// Update outbound payload data layout and keep content-type as JSON",
          "pm.request.body.update({",
          "    mode: 'raw',",
          "    raw: compactJsonString,",
          "    options: {",
          "        raw: {",
          "            language: 'json'",
          "        }",
          "    }",
          "});",
          "",
          "// Force header sync reinforcement to prevent Postman from flipping it back to text/plain",
          "pm.request.headers.upsert({ key: \"Content-Type\", value: \"application/json\" });",
          "",
          "try {",
          "    const cryptoKey = await crypto.subtle.importKey(",
          "        \"pkcs8\", ",
          "        convertPemToBinary(privateKeyPem),",
          "        {",
          "            name: \"RSASSA-PKCS1-v1_5\",",
          "            hash: { name: \"SHA-256\" }",
          "        },",
          "        false,",
          "        [\"sign\"]",
          "    );",
          "",
          "    const encoder = new TextEncoder();",
          "    const dataUint8 = encoder.encode(compactJsonString);",
          "    const signatureBuffer = await crypto.subtle.sign(",
          "        \"RSASSA-PKCS1-v1_5\",",
          "        cryptoKey,",
          "        dataUint8",
          "    );",
          "",
          "    const base64Signature = btoa(String.fromCharCode(...new Uint8Array(signatureBuffer)));",
          "    ",
          "    // Set the signature variable",
          "    pm.collectionVariables.set(\"signature\", base64Signature);",
          "",
          "    // print signature",
          "    console.log(\"Data String Signed:\", compactJsonString);",
          "    console.log(\"Signature Generated:\", base64Signature);",
          "",
          "} catch (error) {",
          "    pm.test(\"Signing Core Engine Exception (Encryption)\", () => {",
          "        pm.expect.fail(\"Crypto layer failed to execute: \" + error.message);",
          "    });",
          "    pm.execution.skipRequest();",
          "}",
          "",
          "//crypto api needs raw binary and pem key is a text so convert it into a raw binary to perform cryptographic operations",
          "function convertPemToBinary(pem) {",
          "    const cleanPem = pem",
          "        .replace(/-----BEGIN [A-Z ]+-----/, \"\")",
          "        .replace(/-----END [A-Z ]+-----/, \"\")",
          "        .replace(/\\s+/g, \"\");",
          "    const binaryDer = atob(cleanPem);",
          "    const bytes = new Uint8Array(binaryDer.length);",
          "    for (let i = 0; i < binaryDer.length; i++) {",
          "        bytes[i] = binaryDer.charCodeAt(i);",
          "    }",
          "    return bytes.buffer;",
          "}",
          ""
        ]
      }
    },
    {
      "listen": "test",
      "script": {
        "type": "text/javascript",
        "packages": {},
        "requests": {},
        "exec": [
          ""
        ]
      }
    }
  ],
  "variable": [
    {
      "key": "hostname_uat",
      "value": "https://bnpl-api.fintec.solutions"
    },
    {
      "key": "bnpl",
      "value": "https://quantum-bnplonboardi-master-bnpl-apis.mobile-dev.progressoft.cloud"
    },
    {
      "key": "pmlib_code",
      "value": "!function(t){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=t();else if(\"function\"==typeof define&&define.amd)define([],t);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).pmlib=t()}}((function(){for(var t,e,r=(t=function(t,n){(function(t){(function(){\"use strict\";function t(t){if(t>2147483647)throw new RangeError('The value \"'+t+'\" is invalid for option \"size\"');var e=new Uint8Array(t);return e.__proto__=r.prototype,e}function r(t,e,r){if(\"number\"==typeof t){if(\"string\"==typeof e)throw new TypeError('The \"string\" argument must be of type string. Received type number');return o(t)}return s(t,e,r)}function s(e,i,n){if(\"string\"==typeof e)return function(e,i){if(\"string\"==typeof i&&\"\"!==i||(i=\"utf8\"),!r.isEncoding(i))throw new TypeError(\"Unknown encoding: \"+i);var n=0|c(e,i),s=t(n),a=s.write(e,i);return a!==n&&(s=s.slice(0,a)),s}(e,i);if(ArrayBuffer.isView(e))return h(e);if(null==e)throw TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof e);if(V(e,ArrayBuffer)||e&&V(e.buffer,ArrayBuffer))return function(t,e,i){if(e<0||t.byteLength<e)throw new RangeError('\"offset\" is outside of buffer bounds');if(t.byteLength<e+(i||0))throw new RangeError('\"length\" is outside of buffer bounds');var n;return(n=void 0===e&&void 0===i?new Uint8Array(t):void 0===i?new Uint8Array(t,e):new Uint8Array(t,e,i)).__proto__=r.prototype,n}(e,i,n);if(\"number\"==typeof e)throw new TypeError('The \"value\" argument must not be of type number. Received type number');var s=e.valueOf&&e.valueOf();if(null!=s&&s!==e)return r.from(s,i,n);var a=function(e){if(r.isBuffer(e)){var i=0|u(e.length),n=t(i);return 0===n.length||e.copy(n,0,0,i),n}return void 0!==e.length?\"number\"!=typeof e.length||L(e.length)?t(0):h(e):\"Buffer\"===e.type&&Array.isArray(e.data)?h(e.data):void 0}(e);if(a)return a;if(\"undefined\"!=typeof Symbol&&null!=Symbol.toPrimitive&&\"function\"==typeof e[Symbol.toPrimitive])return r.from(e[Symbol.toPrimitive](\"string\"),i,n);throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof e)}function a(t){if(\"number\"!=typeof t)throw new TypeError('\"size\" argument must be of type number');if(t<0)throw new RangeError('The value \"'+t+'\" is invalid for option \"size\"')}function o(e){return a(e),t(e<0?0:0|u(e))}function h(e){for(var r=e.length<0?0:0|u(e.length),i=t(r),n=0;n<r;n+=1)i[n]=255&e[n];return i}function u(t){if(t>=2147483647)throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+2147483647..toString(16)+\" bytes\");return 0|t}function c(t,e){if(r.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||V(t,ArrayBuffer))return t.byteLength;if(\"string\"!=typeof t)throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var i=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===i)return 0;for(var s=!1;;)switch(e){case\"ascii\":case\"latin1\":case\"binary\":return i;case\"utf8\":case\"utf-8\":return N(t).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*i;case\"hex\":return i>>>1;case\"base64\":return O(t).length;default:if(s)return n?-1:N(t).length;e=(\"\"+e).toLowerCase(),s=!0}}function l(t,e,r){var i=t[e];t[e]=t[r],t[r]=i}function g(t,e,i,n,s){if(0===t.length)return-1;if(\"string\"==typeof i?(n=i,i=0):i>2147483647?i=2147483647:i<-2147483648&&(i=-2147483648),L(i=+i)&&(i=s?0:t.length-1),i<0&&(i=t.length+i),i>=t.length){if(s)return-1;i=t.length-1}else if(i<0){if(!s)return-1;i=0}if(\"string\"==typeof e&&(e=r.from(e,n)),r.isBuffer(e))return 0===e.length?-1:p(t,e,i,n,s);if(\"number\"==typeof e)return e&=255,\"function\"==typeof Uint8Array.prototype.indexOf?s?Uint8Array.prototype.indexOf.call(t,e,i):Uint8Array.prototype.lastIndexOf.call(t,e,i):p(t,[e],i,n,s);throw new TypeError(\"val must be string, number or Buffer\")}function p(t,e,r,i,n){var s,a=1,o=t.length,h=e.length;if(void 0!==i&&(\"ucs2\"===(i=String(i).toLowerCase())||\"ucs-2\"===i||\"utf16le\"===i||\"utf-16le\"===i)){if(t.length<2||e.length<2)return-1;a=2,o/=2,h/=2,r/=2}function u(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}if(n){var c=-1;for(s=r;s<o;s++)if(u(t,s)===u(e,-1===c?0:s-c)){if(-1===c&&(c=s),s-c+1===h)return c*a}else-1!==c&&(s-=s-c),c=-1}else for(r+h>o&&(r=o-h),s=r;s>=0;s--){for(var l=!0,f=0;f<h;f++)if(u(t,s+f)!==u(e,f)){l=!1;break}if(l)return s}return-1}function d(t,e,r,i){r=Number(r)||0;var n=t.length-r;i?(i=Number(i))>n&&(i=n):i=n;var s=e.length;i>s/2&&(i=s/2);for(var a=0;a<i;++a){var o=parseInt(e.substr(2*a,2),16);if(L(o))return a;t[r+a]=o}return a}function v(t,e,r,i){return j(N(e,t.length-r),t,r,i)}function y(t,e,r,i){return j(function(t){for(var e=[],r=0;r<t.length;++r)e.push(255&t.charCodeAt(r));return e}(e),t,r,i)}function m(t,e,r,i){return y(t,e,r,i)}function S(t,e,r,i){return j(O(e),t,r,i)}function x(t,e,r,i){return j(function(t,e){for(var r,i,n,s=[],a=0;a<t.length&&!((e-=2)<0);++a)i=(r=t.charCodeAt(a))>>8,n=r%256,s.push(n),s.push(i);return s}(e,t.length-r),t,r,i)}function E(t,e,r){return 0===e&&r===t.length?i.fromByteArray(t):i.fromByteArray(t.slice(e,r))}function w(t,e,r){r=Math.min(t.length,r);for(var i=[],n=e;n<r;){var s,a,o,h,u=t[n],c=null,l=u>239?4:u>223?3:u>191?2:1;if(n+l<=r)switch(l){case 1:u<128&&(c=u);break;case 2:128==(192&(s=t[n+1]))&&(h=(31&u)<<6|63&s)>127&&(c=h);break;case 3:s=t[n+1],a=t[n+2],128==(192&s)&&128==(192&a)&&(h=(15&u)<<12|(63&s)<<6|63&a)>2047&&(h<55296||h>57343)&&(c=h);break;case 4:s=t[n+1],a=t[n+2],o=t[n+3],128==(192&s)&&128==(192&a)&&128==(192&o)&&(h=(15&u)<<18|(63&s)<<12|(63&a)<<6|63&o)>65535&&h<1114112&&(c=h)}null===c?(c=65533,l=1):c>65535&&(c-=65536,i.push(c>>>10&1023|55296),c=56320|1023&c),i.push(c),n+=l}return function(t){var e=t.length;if(e<=b)return String.fromCharCode.apply(String,t);for(var r=\"\",i=0;i<e;)r+=String.fromCharCode.apply(String,t.slice(i,i+=b));return r}(i)}n.Buffer=r,n.INSPECT_MAX_BYTES=50,r.TYPED_ARRAY_SUPPORT=function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()}catch(e){return!1}}(),r.TYPED_ARRAY_SUPPORT||\"undefined\"==typeof console||\"function\"!=typeof console.error||console.error(\"This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.\"),Object.defineProperty(r.prototype,\"parent\",{enumerable:!0,get:function(){if(r.isBuffer(this))return this.buffer}}),Object.defineProperty(r.prototype,\"offset\",{enumerable:!0,get:function(){if(r.isBuffer(this))return this.byteOffset}}),\"undefined\"!=typeof Symbol&&null!=Symbol.species&&r[Symbol.species]===r&&Object.defineProperty(r,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),r.poolSize=8192,r.from=function(t,e,r){return s(t,e,r)},r.prototype.__proto__=Uint8Array.prototype,r.__proto__=Uint8Array,r.alloc=function(e,r,i){return function(e,r,i){return a(e),e<=0?t(e):void 0!==r?\"string\"==typeof i?t(e).fill(r,i):t(e).fill(r):t(e)}(e,r,i)},r.allocUnsafe=function(t){return o(t)},r.allocUnsafeSlow=function(t){return o(t)},r.isBuffer=function(t){return null!=t&&!0===t._isBuffer&&t!==r.prototype},r.compare=function(t,e){if(V(t,Uint8Array)&&(t=r.from(t,t.offset,t.byteLength)),V(e,Uint8Array)&&(e=r.from(e,e.offset,e.byteLength)),!r.isBuffer(t)||!r.isBuffer(e))throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');if(t===e)return 0;for(var i=t.length,n=e.length,s=0,a=Math.min(i,n);s<a;++s)if(t[s]!==e[s]){i=t[s],n=e[s];break}return i<n?-1:n<i?1:0},r.isEncoding=function(t){switch(String(t).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return!0;default:return!1}},r.concat=function(t,e){if(!Array.isArray(t))throw new TypeError('\"list\" argument must be an Array of Buffers');if(0===t.length)return r.alloc(0);var i;if(void 0===e)for(e=0,i=0;i<t.length;++i)e+=t[i].length;var n=r.allocUnsafe(e),s=0;for(i=0;i<t.length;++i){var a=t[i];if(V(a,Uint8Array)&&(a=r.from(a)),!r.isBuffer(a))throw new TypeError('\"list\" argument must be an Array of Buffers');a.copy(n,s),s+=a.length}return n},r.byteLength=c,r.prototype._isBuffer=!0,r.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError(\"Buffer size must be a multiple of 16-bits\");for(var e=0;e<t;e+=2)l(this,e,e+1);return this},r.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError(\"Buffer size must be a multiple of 32-bits\");for(var e=0;e<t;e+=4)l(this,e,e+3),l(this,e+1,e+2);return this},r.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError(\"Buffer size must be a multiple of 64-bits\");for(var e=0;e<t;e+=8)l(this,e,e+7),l(this,e+1,e+6),l(this,e+2,e+5),l(this,e+3,e+4);return this},r.prototype.toString=function(){var t=this.length;return 0===t?\"\":0===arguments.length?w(this,0,t):function(t,e,r){var i=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(e>>>=0))return\"\";for(t||(t=\"utf8\");;)switch(t){case\"hex\":return D(this,e,r);case\"utf8\":case\"utf-8\":return w(this,e,r);case\"ascii\":return F(this,e,r);case\"latin1\":case\"binary\":return A(this,e,r);case\"base64\":return E(this,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return I(this,e,r);default:if(i)throw new TypeError(\"Unknown encoding: \"+t);t=(t+\"\").toLowerCase(),i=!0}}.apply(this,arguments)},r.prototype.toLocaleString=r.prototype.toString,r.prototype.equals=function(t){if(!r.isBuffer(t))throw new TypeError(\"Argument must be a Buffer\");return this===t||0===r.compare(this,t)},r.prototype.inspect=function(){var t=\"\",e=n.INSPECT_MAX_BYTES;return t=this.toString(\"hex\",0,e).replace(/(.{2})/g,\"$1 \").trim(),this.length>e&&(t+=\" ... \"),\"<Buffer \"+t+\">\"},r.prototype.compare=function(t,e,i,n,s){if(V(t,Uint8Array)&&(t=r.from(t,t.offset,t.byteLength)),!r.isBuffer(t))throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===i&&(i=t?t.length:0),void 0===n&&(n=0),void 0===s&&(s=this.length),e<0||i>t.length||n<0||s>this.length)throw new RangeError(\"out of range index\");if(n>=s&&e>=i)return 0;if(n>=s)return-1;if(e>=i)return 1;if(this===t)return 0;for(var a=(s>>>=0)-(n>>>=0),o=(i>>>=0)-(e>>>=0),h=Math.min(a,o),u=this.slice(n,s),c=t.slice(e,i),l=0;l<h;++l)if(u[l]!==c[l]){a=u[l],o=c[l];break}return a<o?-1:o<a?1:0},r.prototype.includes=function(t,e,r){return-1!==this.indexOf(t,e,r)},r.prototype.indexOf=function(t,e,r){return g(this,t,e,r,!0)},r.prototype.lastIndexOf=function(t,e,r){return g(this,t,e,r,!1)},r.prototype.write=function(t,e,r,i){if(void 0===e)i=\"utf8\",r=this.length,e=0;else if(void 0===r&&a...\n"
    },
    {
      "key": "private_key",
      "value": ""
    },
    {
      "key": "merchant_id",
      "value": ""
    },
    {
      "key": "sender_number",
      "value": "0096891412923"
    },
    {
      "key": "amount_number",
      "value": ""
    },
    {
      "key": "device_id",
      "value": ""
    },
    {
      "key": "store_name",
      "value": ""
    },
    {
      "key": "plaintext_otp",
      "value": ""
    },
    {
      "key": "msgId",
      "value": ""
    },
    {
      "key": "signature",
      "value": ""
    },
    {
      "key": "X-Merchant-ID",
      "value": ""
    },
    {
      "key": "hashed_otp",
      "value": ""
    },
    {
      "key": "customer_card",
      "value": ""
    },
    {
      "key": "service_id",
      "value": ""
    },
    {
      "key": "loan_id",
      "value": ""
    },
    {
      "key": "refund_amount",
      "value": ""
    }
  ]
}