View Source QRNBU.Encoders.Base64URL (NBU payment QR v0.3.3)

Base64URL encoding for NBU QR code data strings (V002/V003).

Implements URL-safe Base64 encoding as per RFC 4648 Section 5.

Encoding Rules

  • Uses - instead of +
  • Uses _ instead of /
  • No padding (= characters removed)

Examples

iex> QRNBU.Encoders.Base64URL.encode("Hello")
"SGVsbG8"

iex> QRNBU.Encoders.Base64URL.decode("SGVsbG8")
{:ok, "Hello"}

Summary

Functions

Decodes Base64URL-encoded string back to binary.

Encodes binary data to Base64URL format.

Validates if a string is valid Base64URL format.

Functions

@spec decode(String.t()) :: {:ok, binary()} | {:error, String.t()}

Decodes Base64URL-encoded string back to binary.

Parameters

  • encoded - Base64URL-encoded string

Returns

  • {:ok, decoded_binary} if decoding succeeds
  • {:error, reason} if decoding fails

Examples

iex> QRNBU.Encoders.Base64URL.decode("dGVzdA")
{:ok, "test"}

iex> QRNBU.Encoders.Base64URL.decode("invalid!")
{:error, "Invalid Base64URL string"}
@spec encode(binary()) :: String.t()

Encodes binary data to Base64URL format.

Parameters

  • data - Binary data to encode

Returns

Base64URL-encoded string without padding.

Examples

iex> QRNBU.Encoders.Base64URL.encode("test")
"dGVzdA"

iex> QRNBU.Encoders.Base64URL.encode(<<0, 1, 2>>)
"AAEC"
@spec valid?(String.t()) :: boolean()

Validates if a string is valid Base64URL format.

Examples

iex> QRNBU.Encoders.Base64URL.valid?("dGVzdA")
true

iex> QRNBU.Encoders.Base64URL.valid?("invalid!")
false