PixBrcode (pix_brcode v0.1.0)

Copy Markdown View Source

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

decode(payload)

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"}

encode(params)

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"}

encode_dynamic(params)

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"}

valid?(payload)

Returns true if payload decodes successfully.

iex> PixBrcode.valid?("00020126580014br.gov.bcb.pix0136123e4567-e12b-12d1-a456-4266554400005204000053039865802BR5913Fulano de Tal6008BRASILIA62070503***63041D3D")
true