Secure QR Payload (C#)

An example of generating a Secure QR Payload signature and building the QR URL in C# (server-side only — keep the validation key in a secure config / environment variable).

using System;
using System.Security.Cryptography;
using System.Text;

string GenerateSignature(string key, int amount, string id)
{
    var message = $"{key}||{amount}||{id}";
    var keyBytes = Encoding.UTF8.GetBytes(key);
    var messageBytes = Encoding.UTF8.GetBytes(message);
    var hash = HMACSHA256.HashData(keyBytes, messageBytes);
    return Convert.ToHexString(hash).ToLowerInvariant();
}

var key       = "my-validation-key";
var id        = "ORDER-001";
var amount    = 10050;
var snapcode  = "mymerchant";

var signature = GenerateSignature(key, amount, id);
var qrUrl     = $"https://pos.snapscan.io/qr/{snapcode}?id={id}&amount={amount}&signature={signature}";