Secure QR Payload (Ruby)

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

require "openssl"

def generate_signature(key, amount, id)
  message = "#{key}||#{amount.to_i}||#{id}"
  OpenSSL::HMAC.hexdigest("SHA256", key, message)
end

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

signature = generate_signature(key, amount, id)
qr_url    = "https://pos.snapscan.io/qr/#{snapcode}?id=#{id}&amount=#{amount}&signature=#{signature}"