{
    "info": {
        "name": "MagicPay API v3",
        "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
    },
    "variable": [
        {
            "key": "baseUrl",
            "value": "https://gamio.site/api/v3"
        },
        {
            "key": "mchId",
            "value": "YOUR_MERCHANT_ID"
        },
        {
            "key": "mchKey",
            "value": "YOUR_API_KEY"
        },
        {
            "key": "mchSecret",
            "value": "YOUR_API_SECRET"
        }
    ],
    "item": [
        {
            "name": "Pay-in",
            "event": [
                {
                    "listen": "prerequest",
                    "script": {
                        "type": "text/javascript",
                        "exec": [
                            "const body = JSON.parse(pm.variables.replaceIn(pm.request.body.raw)); delete body.sign;",
                            "const s = Object.keys(body).filter(k => body[k] !== '' && body[k] != null).sort().map(k => k + '=' + body[k]).join('&');",
                            "body.sign = CryptoJS.MD5(s + '&key=' + pm.variables.get('mchKey')).toString().toUpperCase();",
                            "pm.request.body.raw = JSON.stringify(body, null, 2);"
                        ]
                    }
                }
            ],
            "request": {
                "method": "POST",
                "header": [
                    {
                        "key": "Content-Type",
                        "value": "application/json"
                    }
                ],
                "body": {
                    "mode": "raw",
                    "raw": "{\n    \"mchId\": \"{{mchId}}\",\n    \"mchOrderNo\": \"ORDER-1001\",\n    \"amount\": \"500.00\",\n    \"tradeType\": \"INRUPI\",\n    \"notifyUrl\": \"https://merchant.example.com/webhook\",\n    \"sign\": \"\"\n}"
                },
                "url": {
                    "raw": "{{baseUrl}}/payin",
                    "host": [
                        "{{baseUrl}}"
                    ],
                    "path": [
                        "payin"
                    ]
                }
            }
        },
        {
            "name": "Query pay-in",
            "event": [
                {
                    "listen": "prerequest",
                    "script": {
                        "type": "text/javascript",
                        "exec": [
                            "const body = JSON.parse(pm.variables.replaceIn(pm.request.body.raw)); delete body.sign;",
                            "const s = Object.keys(body).filter(k => body[k] !== '' && body[k] != null).sort().map(k => k + '=' + body[k]).join('&');",
                            "body.sign = CryptoJS.MD5(s + '&key=' + pm.variables.get('mchKey')).toString().toUpperCase();",
                            "pm.request.body.raw = JSON.stringify(body, null, 2);"
                        ]
                    }
                }
            ],
            "request": {
                "method": "POST",
                "header": [
                    {
                        "key": "Content-Type",
                        "value": "application/json"
                    }
                ],
                "body": {
                    "mode": "raw",
                    "raw": "{\n    \"mchId\": \"{{mchId}}\",\n    \"mchOrderNo\": \"ORDER-1001\",\n    \"sign\": \"\"\n}"
                },
                "url": {
                    "raw": "{{baseUrl}}/check-order-status",
                    "host": [
                        "{{baseUrl}}"
                    ],
                    "path": [
                        "check-order-status"
                    ]
                }
            }
        },
        {
            "name": "Pay-out (bank)",
            "event": [
                {
                    "listen": "prerequest",
                    "script": {
                        "type": "text/javascript",
                        "exec": [
                            "const body = JSON.parse(pm.variables.replaceIn(pm.request.body.raw)); delete body.sign;",
                            "const s = Object.keys(body).filter(k => body[k] !== '' && body[k] != null).sort().map(k => k + '=' + body[k]).join('&');",
                            "body.sign = CryptoJS.MD5(s + '&key=' + pm.variables.get('mchSecret')).toString().toUpperCase();",
                            "pm.request.body.raw = JSON.stringify(body, null, 2);"
                        ]
                    }
                }
            ],
            "request": {
                "method": "POST",
                "header": [
                    {
                        "key": "Content-Type",
                        "value": "application/json"
                    }
                ],
                "body": {
                    "mode": "raw",
                    "raw": "{\n    \"mchId\": \"{{mchId}}\",\n    \"mchOrderNo\": \"PAYOUT-77\",\n    \"amount\": \"1000.00\",\n    \"payType\": \"bank\",\n    \"bankCode\": \"HDFC Bank\",\n    \"accountName\": \"Test User\",\n    \"accountNumber\": \"123456789012\",\n    \"ifsc\": \"HDFC0001234\",\n    \"sign\": \"\"\n}"
                },
                "url": {
                    "raw": "{{baseUrl}}/payout",
                    "host": [
                        "{{baseUrl}}"
                    ],
                    "path": [
                        "payout"
                    ]
                }
            }
        },
        {
            "name": "Query pay-out",
            "event": [
                {
                    "listen": "prerequest",
                    "script": {
                        "type": "text/javascript",
                        "exec": [
                            "const body = JSON.parse(pm.variables.replaceIn(pm.request.body.raw)); delete body.sign;",
                            "const s = Object.keys(body).filter(k => body[k] !== '' && body[k] != null).sort().map(k => k + '=' + body[k]).join('&');",
                            "body.sign = CryptoJS.MD5(s + '&key=' + pm.variables.get('mchSecret')).toString().toUpperCase();",
                            "pm.request.body.raw = JSON.stringify(body, null, 2);"
                        ]
                    }
                }
            ],
            "request": {
                "method": "POST",
                "header": [
                    {
                        "key": "Content-Type",
                        "value": "application/json"
                    }
                ],
                "body": {
                    "mode": "raw",
                    "raw": "{\n    \"mchId\": \"{{mchId}}\",\n    \"mchOrderNo\": \"PAYOUT-77\",\n    \"sign\": \"\"\n}"
                },
                "url": {
                    "raw": "{{baseUrl}}/check-order-status",
                    "host": [
                        "{{baseUrl}}"
                    ],
                    "path": [
                        "check-order-status"
                    ]
                }
            }
        },
        {
            "name": "Balance",
            "event": [
                {
                    "listen": "prerequest",
                    "script": {
                        "type": "text/javascript",
                        "exec": [
                            "const body = JSON.parse(pm.variables.replaceIn(pm.request.body.raw)); delete body.sign;",
                            "const s = Object.keys(body).filter(k => body[k] !== '' && body[k] != null).sort().map(k => k + '=' + body[k]).join('&');",
                            "body.sign = CryptoJS.MD5(s + '&key=' + pm.variables.get('mchSecret')).toString().toUpperCase();",
                            "pm.request.body.raw = JSON.stringify(body, null, 2);"
                        ]
                    }
                }
            ],
            "request": {
                "method": "POST",
                "header": [
                    {
                        "key": "Content-Type",
                        "value": "application/json"
                    }
                ],
                "body": {
                    "mode": "raw",
                    "raw": "{\n    \"mchId\": \"{{mchId}}\",\n    \"sign\": \"\"\n}"
                },
                "url": {
                    "raw": "{{baseUrl}}/check-gateway-balance",
                    "host": [
                        "{{baseUrl}}"
                    ],
                    "path": [
                        "check-gateway-balance"
                    ]
                }
            }
        }
    ]
}