Generates and reads Pix "copia e cola" payloads (BR Code).
Summary
Functions
Reads a Pix payload, checking CRC, structure and GUI.
Builds a static Pix payload.
Builds a dynamic Pix payload, pointing to a URL provided by the receiver's bank.
Returns true if payload decodes successfully.
Functions
Reads a Pix payload, checking CRC, structure and GUI.
iex> {:ok, payload} = PixBrcode.decode("00020126580014br.gov.bcb.pix0136123e4567-e12b-12d1-a456-4266554400005204000053039865802BR5913Fulano de Tal6008BRASILIA62070503***63041D3D")
iex> {payload.type, payload.key, payload.merchant_name}
{:static, "123e4567-e12b-12d1-a456-426655440000", "Fulano de Tal"}
Builds a static Pix payload.
Required: :key, :merchant_name (max 25 chars), :merchant_city (max 15 chars).
Optional: :amount ("10.50" or integer cents 1050), :txid (default "***"),
:description. Accents in name and city are removed.
iex> PixBrcode.encode(%{key: "123e4567-e12b-12d1-a456-426655440000",
...> merchant_name: "Fulano de Tal", merchant_city: "BRASILIA"})
{:ok, "00020126580014br.gov.bcb.pix0136123e4567-e12b-12d1-a456-4266554400005204000053039865802BR5913Fulano de Tal6008BRASILIA62070503***63041D3D"}
Builds a dynamic Pix payload, pointing to a URL provided by the receiver's bank.
Required: :url (without https://), :merchant_name, :merchant_city.
Amount and txid live in the bank's server, not in the payload.
iex> {:ok, payload} = PixBrcode.encode_dynamic(%{url: "pix.example.com/qr/v2/abc",
...> merchant_name: "Fulano de Tal", merchant_city: "BRASILIA"})
iex> PixBrcode.decode(payload) |> elem(1) |> Map.take([:type, :url])
%{type: :dynamic, url: "pix.example.com/qr/v2/abc"}
Returns true if payload decodes successfully.
iex> PixBrcode.valid?("00020126580014br.gov.bcb.pix0136123e4567-e12b-12d1-a456-4266554400005204000053039865802BR5913Fulano de Tal6008BRASILIA62070503***63041D3D")
true