fork download
  1. using System;
  2. using System.Text;
  3. using System.Security.Cryptography;
  4.  
  5. public class Program
  6. {
  7. public static void Main()
  8. {
  9. string httpMethod = "POST";
  10. string timeStamp = "2026-04-06T14:16:24+07:00";
  11. string accessToken = "A60CDE9tiT6PHzJjE6mqiyE6w0q4eQ2vsYWz0PUELAOWfcEnZbnwbhMM";
  12. string relativeUrl = "/api/v3.0/account-inquiry-external";
  13. string clientSecret = "26b796b5-2f05-41a6-bca0-c43f7df289a8";
  14. string body = "{\"beneficiaryAccountNo\":\"888801000003301\",\"beneficiaryBankCode\":\"014\",\"additionalInfo\":{\"trxType\":\"01\",\"sourceAccountNo\":\"003694475058\"}}";
  15.  
  16.  
  17. string signature = GetSignature(httpMethod, accessToken, relativeUrl, body, clientSecret, timeStamp);
  18.  
  19. Console.WriteLine("Generated Signature:");
  20. Console.WriteLine(signature);
  21. }
  22.  
  23. public static string GetSignature(string HTTPMethod, string accessToken, string RelativeUrl, string body, string clientSecret, string timeStamp)
  24. {
  25. string MinifyReqBody = MinifyJson(body);
  26. string finalReqBody = CalculateRequestBodyHash(MinifyReqBody);
  27.  
  28. // Pattern: HTTPMethod:RelativeUrl:AccessToken:RequestBodyHash:Timestamp
  29. string stringToSign = string.Format("{0}:{1}:{2}:{3}:{4}", HTTPMethod, RelativeUrl, accessToken, finalReqBody, timeStamp);
  30.  
  31. Console.WriteLine("String To Sign: " + stringToSign);
  32.  
  33. return GenerateSignatureHMACSHA512(clientSecret, stringToSign);
  34. }
  35.  
  36. public static string MinifyJson(string json)
  37. {
  38. StringBuilder sb = new StringBuilder();
  39. bool insideString = false;
  40.  
  41. foreach (char c in json)
  42. {
  43. if (c == '"')
  44. {
  45. insideString = !insideString;
  46. }
  47.  
  48. if (!char.IsWhiteSpace(c) || insideString)
  49. {
  50. sb.Append(c);
  51. }
  52. }
  53.  
  54. return sb.ToString();
  55. }
  56.  
  57. public static string CalculateRequestBodyHash(string requestBody)
  58. {
  59. using (SHA256 sha256 = SHA256.Create())
  60. {
  61. byte[] hashBytes = sha256.ComputeHash(Encoding.UTF8.GetBytes(requestBody));
  62. // Returns hex string in lowercase without dashes
  63. return BitConverter.ToString(hashBytes).Replace("-", "").ToLower();
  64. }
  65. }
  66.  
  67. public static string GenerateSignatureHMACSHA512(string privateKey, string stringToSign)
  68. {
  69. try
  70. {
  71. using (HMACSHA512 hmac = new HMACSHA512(Encoding.UTF8.GetBytes(privateKey)))
  72. {
  73. byte[] hashBytes = hmac.ComputeHash(Encoding.UTF8.GetBytes(stringToSign));
  74. return Convert.ToBase64String(hashBytes);
  75. }
  76. }
  77. catch (Exception ex)
  78. {
  79. Console.WriteLine("Error: " + ex.Message);
  80. return null;
  81. }
  82. }
  83. }
Success #stdin #stdout 0.08s 35044KB
stdin
Standard input is empty
stdout
String To Sign: POST:/api/v3.0/account-inquiry-external:A60CDE9tiT6PHzJjE6mqiyE6w0q4eQ2vsYWz0PUELAOWfcEnZbnwbhMM:138ffbfaf4b95441679dfe2d9008c7212d4e07dd0d73d8d4db84a9da2126521b:2026-04-06T14:16:24+07:00
Generated Signature:
8AnvNmNEEIhCInT18DNLAuNGtC0JEZWXSXMJdv0Dl45NQ+qG54qIa1bP/vJpZFyCg8w/kpWhRSRkMgb0wsQmug==