Solicitação de recorrência do Pix Automático: pede ao participante do pagador que autorize uma série de cobranças.
Versão 1.1. Cria a recorrência em estado pendente, com identificador,
frequência, vigência e valor. A resposta é uma Isox.Pain012, e o
cancelamento é uma Isox.Pain011.
São dois identificadores, e eles não se confundem: mndt_id é a
recorrência, o vínculo que dura; mndt_req_id é este pedido de
autorização. Uma recorrência pode ter mais de uma solicitação ao longo
da vida.
Ocrncs.SeqTp tem valor único ("RCUR") e fica fixo.
As três datas
mndt_prcg_dtls é [3..3] no schema, e a planilha fixa a ordem:
CRTN, depois CRAT, depois EXPR. Não é lista livre, é sempre o
pacote de três.
Lote
Mndt é ilimitado no schema. encode/3 aceita uma mensagem ou uma
lista, e decode/1 devolve uma struct ou uma lista, conforme o XML.
Summary
Functions
Decodifica um XML de pain.009 de volta para a struct, ou
para uma lista de structs quando a
mensagem traz mais de um Mndt (lote), para uma lista de structs.
Monta o XML (envelope completo, AppHdr + Document) para a versão
dada. Aceita 1 mensagem ou uma lista de mensagens (lote: vira vários
Mndt na mesma Document).
Types
@type prcg_dtls() :: %{tp: String.t(), dt_tm: DateTime.t()}
@type t() :: %Isox.Pain009{ adjstmnt_amt: term(), adjstmnt_dt_ind: term(), cdtr_agt_ispb: term(), cdtr_cpf_cnpj: term(), cdtr_name: term(), colltn_amt: term(), created_at: term(), dbtr_acct_id: term(), dbtr_acct_issr: term(), dbtr_agt_ispb: term(), dbtr_cpf_cnpj: term(), fnl_colltn_dt: term(), frqcy_tp: term(), frst_colltn_dt: term(), mndt_id: term(), mndt_prcg_dtls: term(), mndt_req_id: term(), msg_id: term(), rfrd_doc_cdtr_ref: term(), rfrd_doc_nb: term(), trckg_ind: term(), ultmt_dbtr_cpf_cnpj: term(), ultmt_dbtr_name: term() }
@type version() :: :v1_1
Functions
Decodifica um XML de pain.009 de volta para a struct, ou
para uma lista de structs quando a
mensagem traz mais de um Mndt (lote), para uma lista de structs.
@spec encode(t() | [t(), ...], Isox.AppHdr.t(), version()) :: {:ok, binary()} | {:error, String.t()}
Monta o XML (envelope completo, AppHdr + Document) para a versão
dada. Aceita 1 mensagem ou uma lista de mensagens (lote: vira vários
Mndt na mesma Document).
msg_id/created_at são de GrpHdr (uma vez por mensagem XML). Em
lote, têm que ser iguais em todos os itens da lista.