{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"4ac9b7f5-83df-48ba-9f94-b114f18f4de8","name":"Singhapay API Docs","description":"**This document provides technical specs for our Operator to perform integration and integration tests with Singhapay Payment Gateway. This documentation includes functions, parameters, results, and error responses.**\n\n# **Terms & Definition**\n\n| **Name** | **Description** |\n| --- | --- |\n| **Operator** | **Partners who want to integrate with Singhapay payment gateway** |\n| **Payment Provider** | **Provider API Payment for Operator** |\n| **BO Site** | **Backoffice site, used for Operator to verify transaction** |\n| **Member Site** | **A website for member to log in and create transaction through Singhapay Payment Gateway** |\n| **User/Member** | **Customer who create transaction through Singhapay Payment Gateway** |\n\n# **Workflow**\n\n<img src=\"https://content.pstmn.io/0869fac4-14b3-4789-a57e-e957e87997aa/U2NyZWVuc2hvdCAyMDI1LTA4LTI3IGF0IDIzLjExLjU2LnBuZw==\">\n\n# **API Features**\n\n**4.1 Pre Requirement Provide by Provider**\n\n- **Server info & API URL**\n    \n- **Credential api : api key, secret key, merchant code**\n    \n- **Credential BO : username , password**\n    \n\n**4.2 Pre Requirement Provide by Operator :**\n\n- **API Callback URL ( mandatory )**\n    \n- **Call back success url page ( optional )**\n    \n- **Call back failed url page ( optional )**\n    \n\n**4.3 Api Security**\n\n- **Token and transaction key ( Need to create token and key for each transaction )**\n    \n- **IP White list for Back Office login**\n    \n\n# **Encrypt Decrypt Function**\n\nThis Function provides secure AES-256-CBC encryption and decryption capabilities for sensitive data transmission. It uses industry-standard cryptographic methods with proper key derivation and initialization vector generation for secure data exchange between systems.\n\n## Encryption Process\n\nWhen `action = \"encrypt\"`:\n\n1. **Authentication**: Validates the provided API key and secret key\n    \n2. **Key Derivation**: Generates a 256-bit encryption key using SHA-256 hash of the API key\n    \n3. **IV Generation**: Creates a 128-bit initialization vector using SHA-256 hash of the secret key\n    \n4. **Encryption**: Encrypts the input data using AES-256-CBC algorithm\n    \n5. **Encoding**: Applies Base64 encoding followed by URL encoding for safe transmission\n    \n6. **Response**: Returns the URL-encoded, Base64-encoded encrypted string\n    \n\n## Decryption Process\n\nWhen `action = \"decrypt\"`:\n\n1. **Authentication**: Validates the provided API key and secret key\n    \n2. **Decoding**: URL decodes then Base64 decodes the input data\n    \n3. **Key/IV Regeneration**: Uses the same derivation process as encryption\n    \n4. **Decryption**: Decrypts the data using AES-256-CBC algorithm\n    \n5. **Response**: Returns the original plaintext data\n    \n\n## Technical Specifications\n\n- **Encryption Algorithm**: AES-256-CBC (Advanced Encryption Standard with 256-bit key)\n    \n- **Key Size**: 256 bits (32 bytes)\n    \n- **IV Size**: 128 bits (16 bytes)\n    \n- **Hash Algorithm**: SHA-256 for key and IV derivation\n    \n- **Encoding**: Base64 + URL encoding for encrypted output\n    \n- **Content-Type**: Supports both `application/json` and `application/x-www-form-urlencoded`\n    \n\n## Usage Examples\n\n1. PHP\n    \n\n``` php\npublic function encrypt_decrypt($action, $string, $apikey = '{your_api_key}', $secretkey = '{your_secret_key}') {\n    $output = false;\n    $encrypt_method = \"AES-256-CBC\";\n    $secret_key = $apikey;\n    $secret_iv = $secretkey;\n        // hash\n    $key = substr(hash('sha256', $secret_key, true), 0, 32);\n    $iv = substr(hash('sha256', $secret_iv), 0, 16);\n    if ( $action == 'encrypt' ) {\n        $output = openssl_encrypt($string, $encrypt_method, $key, OPENSSL_RAW_DATA, $iv);\n        $output = base64_encode($output);\n        $output = urlencode($output);\n    } else if( $action == 'decrypt' ) {\n     $output = openssl_decrypt(base64_decode(urldecode($string)), $encrypt_method, $key, OPENSSL_RAW_DATA, $iv);\n }\n return $output;\n}\n\n ```\n\n2\\. C#\n\n``` csharp\nusing System;\nusing System.Security.Cryptography;                \nusing System.Text;\nusing System.IO;\npublic class EncryptDecrypt\n{\n    public static void Main()\n    {\n        string source = \"currency_code=INR&merchant_code=213213&merchant_api_key=3213212ewfewqfwqf&transaction_code=TEST-DP-163158903432&transaction_timestamp=1631589012&bank_code=1003&transaction_amount=1000\";\n        string apiKey =  \"3213212ewfewqfwqf\";\n        string secretKey =  \"jdo383f1d2021ehd1dj2di32\";\n        string result = encrypt_decrypt(\"encrypt\", source, apiKey, secretKey);\n        Console.WriteLine(\"The key of  \" + source + \" is: \" + result);\n        Console.WriteLine(\"Decoded of key \" + result + \" is: \" +  encrypt_decrypt(\"decrypt\", result, apiKey, secretKey));\n    }\n    public static string encrypt_decrypt(string action, string payload, string apikey, string secretkey){\n        string secret_iv = secretkey;\n        string iv = hashSha256(secret_iv).Substring(0, 16);\n        SHA256 mySHA256 = SHA256Managed.Create();\n        string output = \"\";\n        if ( action == \"encrypt\" ) {\n            output = EncryptString(payload, mySHA256.ComputeHash(Encoding.ASCII.GetBytes(apikey)), Encoding.ASCII.GetBytes(iv));\n        } else if( action == \"decrypt\" ) {\n                output = DecryptString(payload, mySHA256.ComputeHash(Encoding.ASCII.GetBytes(apikey)), Encoding.ASCII.GetBytes(iv));\n        }\n        return output;\n    }\n    public static string hashSha256(string payload){\n        string hash = \"\";\n        using (SHA256 sha256Hash = SHA256.Create()){\n            byte[] sourceBytes = Encoding.UTF8.GetBytes(payload);\n            byte[] hashBytes = sha256Hash.ComputeHash(sourceBytes);\n            hash = BitConverter.ToString(hashBytes).Replace(\"-\", String.Empty).ToLower();\n        }\n        return hash;\n    }\n    public static string EncryptString(string plainText, byte[] key, byte[] iv)\n    {  \n        Aes encryptor = Aes.Create();\n        encryptor.Mode = CipherMode.CBC;\n        encryptor.Key = key;\n        encryptor.IV = iv;\n        MemoryStream memoryStream = new MemoryStream();\n        ICryptoTransform aesEncryptor = encryptor.CreateEncryptor();\n        CryptoStream cryptoStream = new CryptoStream(memoryStream, aesEncryptor, CryptoStreamMode . Write);\n        byte[] plainBytes = Encoding.ASCII.GetBytes(plainText);\n        cryptoStream.Write(plainBytes, 0, plainBytes . Length);\n        cryptoStream.FlushFinalBlock();\n        byte[] cipherBytes = memoryStream.ToArray();\n        memoryStream.Close();\n        cryptoStream.Close();\n        string cipherText = Convert.ToBase64String(cipherBytes, 0, cipherBytes.Length);\n        return Uri.EscapeDataString(cipherText);\n    }\n    public static string DecryptString(string cipherText, byte[] key, byte[] iv)\n    {\n        Aes encryptor = Aes.Create();\n        encryptor.Mode = CipherMode.CBC;\n        encryptor.Key = key;\n        encryptor.IV = iv;\n        MemoryStream memoryStream = new MemoryStream();\n        ICryptoTransform aesDecryptor = encryptor.CreateDecryptor();\n        CryptoStream cryptoStream = new CryptoStream(memoryStream, aesDecryptor, CryptoStreamMode . Write);\n        string plainText = String.Empty;\n        try {\n            byte[] cipherBytes = Convert.FromBase64String(Uri.UnescapeDataString(cipherText));\n            cryptoStream.Write(cipherBytes, 0, cipherBytes . Length);\n            cryptoStream.FlushFinalBlock();\n            byte[] plainBytes = memoryStream.ToArray();\n            plainText = Encoding.ASCII.GetString(plainBytes, 0, plainBytes.Length);\n        } finally {\n            memoryStream.Close();\n            cryptoStream.Close();\n        }\n        return plainText;\n    }\n}\n\n ```\n\n3\\. Java\n\n``` java\nimport java.nio.charset.StandardCharsets;\nimport java.security.MessageDigest;\nimport java.util.Arrays;\nimport java.util.Base64;\nimport java.util.Base64.Decoder;\nimport java.net.URLDecoder;\nimport java.net.URLEncoder;\nimport javax.crypto.Cipher;\nimport javax.crypto.spec.IvParameterSpec;\nimport javax.crypto.spec.SecretKeySpec;\nimport java.security.NoSuchAlgorithmException;\nimport java.math.BigInteger;\npublic class Playground {\n    public static void main(String[] args) throws Exception  {\n        String key_api =  \"FjgHGLxnJO1qjlhHcK4KHg==\";\n        String secret_api = \"vqw330bxVfX9TEGMF1BDUKlVDm4DFejA0STb0WDarkU=\";      \n        //For Encrypt Sample Data\n        String data = \"currency_code=INR&merchant_code=SKU20220913051108&merchant_api_key=FjgHGLxnJO1qjlhHcK4KHg==&transaction_code=D996574709141&transaction_timestamp=1663729322&payment_code=P001&bank_code=104&transaction_amount=500.00&user_id=4\";\n        //For Descrypt Sample Data\n        String encryptData = \"6mWOao2m34hP/ZHQ/5skq5kTDuzWkHePH74pJsc4FTgmXqhidXtY4VLq9eW0N7/WDfY4gH2gHEVw8FU5d0LKpqc6mOc1gy8dhxyeT/lAyzaI0gnkXzRWwMm7pXlwNpoNG2v7/SXMCioAJMf3nLWEQji+yRTdBxietyMP8XArnQ2KJ/7IoOwQgxl6rPPGuHHCoi74POTI5lEzHbHCNDgGc4XjF89BQM0ROtlAyTpG+STCtEYjE90crt/GaZwYkwCcaqgtFo8o/BNRZTDs4WcQOQCTyu2AnHtxdJvcPUgXAW+ebPv91vNrwt68AmxcLhic\";\n        //Hash Key 32 Length\n        final MessageDigest md_key = MessageDigest.getInstance(\"SHA-256\");\n        byte[] key_hash = Arrays.copyOfRange(md_key.digest(key_api.getBytes(\"UTF-8\")),0,32);\n        //Hash Secret 16 Length\n        String sha_secret = hashsha256(secret_api).substring(0,16);\n        byte[] iv_hash = sha_secret.getBytes(\"UTF-8\");\n        //Execute Test Scenario\n        // String result = EncryptDecrypt(\"encrypt\",data,key_hash,iv_hash);\n        String result = EncryptDecrypt(\"decrypt\",encryptData,key_hash,iv_hash);\n        System.out.println(result);\n    }\n    static String EncryptDecrypt(String action, String data, byte[] key_hash, byte[] iv_hash) throws Exception {\n        //Process OpenSSL EncryptDecrypt\n        byte[] cipherText;\n        String output;\n        Cipher cipher = Cipher.getInstance(\"AES/CBC/PKCS5Padding\");\n        final SecretKeySpec key = new SecretKeySpec(key_hash, \"AES\");\n        final IvParameterSpec iv = new IvParameterSpec(iv_hash, 0, cipher.getBlockSize());\n        if(action == \"encrypt\"){\n            //Encrypt condition\n            cipher.init(Cipher.ENCRYPT_MODE, key, iv);\n            cipherText = cipher.doFinal(data.getBytes(\"UTF-8\"));\n            output = Base64.getEncoder().encodeToString(cipherText);\n            String result = URLEncoder.encode(output, StandardCharsets.UTF_8.toString());\n            return result;\n        }else{\n            //Decrypt condition\n            String decodeX = URLDecoder.decode(data, StandardCharsets.UTF_8.toString());\n            byte[] decodeData = Base64.getDecoder().decode(decodeX);\n            cipher.init(Cipher.DECRYPT_MODE, key, iv);\n            cipherText = cipher.doFinal(decodeData);\n            output = new String(cipherText,StandardCharsets.UTF_8);\n            return output;\n        }  \n    }\n    static String hashsha256(String key) throws NoSuchAlgorithmException {\n        MessageDigest md = MessageDigest.getInstance(\"SHA-256\");\n        md.update(key.getBytes(StandardCharsets.UTF_8));\n        byte[] digest = md.digest();\n        String key_string = String.format(\"\u00064x\", new BigInteger(1, digest));\n        return key_string;\n    }\n}\n\n ```\n\n4\\. NodeJs\n\n``` javascript\nvar crypto = require('crypto')\nconst apikey = \"myapikey\"\nconst secretkey = \"mysecretkey\"\nconst encrypt_decrypt = (action, data) => {\n   const encryptionMethod = \"AES-256-CBC\"\n   const key = crypto.createHash('sha256').update(apikey).digest()\n   const iv = crypto.createHash('sha256').update(secretkey, 'utf8').digest('hex').substring(0,16)\n   if (action == \"encrypt\") {\n       const cipher = crypto.createCipheriv(encryptionMethod, key, iv)\n       const res = encodeURIComponent(Buffer.from(\n           cipher.update(data, 'utf8', 'base64') + cipher.final('base64')\n       ).toString())\n       console.log(res)\n       return res\n   } else if (action == \"decrypt\") {\n       const buff = decodeURIComponent(Buffer.from(data))\n       const decipher = crypto.createDecipheriv(encryptionMethod, key, iv)\n       const res = (\n         decipher.update(buff.toString('utf8'), 'base64', 'utf8') +\n         decipher.final('utf8')\n       )\n       console.log(res)\n       return res\n   }\n}\n// example to encrypt data\nencrypt_decrypt(\"encrypt\", \"currency_code=INR&merchant_code=SKU20230101012023&merchant_api_key=myapikey&transaction_code=TEST-DP-123&transaction_timestamp=1677495605&payment_code=PAY01D&transaction_amount=1000&user_id=test01\")\n// example to decrypt data\nencrypt_decrypt(\"decrypt\", \"QqqF5QD9NdtM1O5JCpySZXyFT0gmXvEgWUEgoW19xajeviLAAlwzdDJmD7sgE2laIp7iEt/1SzUpquHykjfQP2eTTQGyR3Jw60iVniAayGxBOQRoPW9ln/T4DzQkZL1eqapgcum/yGKLErYJ0v1WedA2nYZ/d64vZISGh3eA2PqDGJdLZWYKbAP7uGHzMGBslmx8CcBCFbjrKvfA5VGam6LHi1ZWTfv8eeHmlBv4CSI6pXzhb43UZ22uBQj/N8rc6oJQd7l14FK2A4sZhpUhZQ==\")\n\n ```\n\n# Deposit Transaction Status Reference\n\n## Overview\n\nThis reference describes the possible status values for deposit transactions in the system. Each transaction is assigned a status code that indicates its current processing state.\n\n## Transaction Status Codes\n\n| Status Code | Status Name | Description |\n| --- | --- | --- |\n| `1` | Pending | The transaction has been initiated and is currently being processed by the system. No further action is required from the user at this time. |\n| `2` | Completed | The transaction has been successfully processed and the funds have been credited to the account. The deposit is now available for use. |\n| `3` | Failed | The transaction could not be processed successfully due to an error. Common reasons include insufficient funds, invalid payment method, or network issues. The user may retry the transaction or contact support. |\n| `4` | Manual Process | The transaction requires manual review and intervention. This typically occurs for large amounts, suspicious activity, or compliance requirements. **Customer support contact is required to proceed with this transaction.** |\n\n# Payout Transaction Status Reference\n\n## Overview\n\nThis reference describes the possible status values for payout transactions in the system. Each payout transaction is assigned a status code that indicates its current processing state and outcome.\n\n## Transaction Status Codes\n\n| Status Code | Status Name | Description |\n| --- | --- | --- |\n| `1` | Pending | The payout transaction has been initiated and is currently being processed. The funds are being transferred to the designated recipient account. Processing time may vary depending on the payment method and destination. |\n| `2` | Completed | The payout transaction has been successfully processed and funds have been transferred to the recipient's account. The transaction is now finalized and cannot be modified. |\n| `3` | Failed | The payout transaction could not be completed due to an error. Common reasons include invalid recipient details, insufficient account balance, blocked accounts, or network connectivity issues. Review the error details and retry if applicable. |\n| `7` | Refund | The payout transaction has been reversed and the funds have been returned to the original account. This may occur due to recipient rejection, compliance requirements, or system-initiated reversals. |","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"42380959","team":6790363,"collectionId":"4ac9b7f5-83df-48ba-9f94-b114f18f4de8","publishedId":"2sB3HgNNTi","public":true,"publicUrl":"https://api-docs.singhapayapi.com","privateUrl":"https://go.postman.co/documentation/42380959-4ac9b7f5-83df-48ba-9f94-b114f18f4de8","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"b88a0a"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"system_default","themes":[{"name":"dark","logo":"https://content.pstmn.io/30c6370a-1e24-4537-aeb4-1f82b7b04131/U2luZ2hhUGF5X3doaXRlIHRleHQucG5n","colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"daa425"}},{"name":"light","logo":"https://content.pstmn.io/9f48d531-0ab1-49c8-8a12-494453985fad/U2luZ2hhUGF5X2JsYWNrIHRleHQucG5n","colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"b88a0a"}}]}},"version":"8.10.1","publishDate":"2025-08-28T03:12:46.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":"https://content.pstmn.io/9f48d531-0ab1-49c8-8a12-494453985fad/U2luZ2hhUGF5X2JsYWNrIHRleHQucG5n","logoDark":"https://content.pstmn.io/30c6370a-1e24-4537-aeb4-1f82b7b04131/U2luZ2hhUGF5X3doaXRlIHRleHQucG5n"}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/1bf2b297922bcbb8a4e36f6504f9f31dd0d10868c036ba9a24d7b559e34a6a90","favicon":"https://singhapayapi.com/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://api-docs.singhapayapi.com/view/metadata/2sB3HgNNTi"}