Este pacote auxilia na geração de payloads para usar em QRCode estático ou dinâmico PIX (Sistema de pagamento instântaneo do Brasil)
Antes de começar, entenda um pouco sobre as diferenças dos dois tipos de geração de QrCodes disponibilizadas pelo Bacen ("QrCode estático" e "QrCode dinâmico")
Ideal para sistemas ERP e ou onde necessita do acompanhamento do status de cada cobrança, vinculo com pedidos, inclusão de multas, juros e outros. Carrega as características de uma fatura de cobrança.
- É possível recuperar informações do status de pagamento
- É possível usar todos os end points da api oficial do pix disponibilizadas pelo seu PSP
- Requer um PSP
- Necessita de autenticação
- Necessita de conexão com a internet
- Não é possível pagar cobranças geradas em ambiente de homologação/desenvolvimento.
Como Gerar?
Instale este pacote na sua aplicação:
Install-Package pix-dynamic-payload-generator.net
E inicie:
new StartConfig(
_baseUrl: "https://api-pix-h.seupsp.com.br",
_clientId: "client-id-fornecido-pelo-psp",
_clientSecret: "client-secret-fornecido-pelo-psp",
_certificate: new System.Security.Cryptography.X509Certificates.X509Certificate2(@".\certificado.p12")
);
1 - Crie uma cobrança
var cob = new CobRequest(_chave: "1b0e2743-0769-4f21-b0b7-9cfddb2a5a2b")
{
Calendario = new Calendario
{
Expiracao = 3600
},
Devedor = new Devedor
{
Cpf = "12345678909",
Nome = "Francisco da Silva",
},
Valor = new Valor
{
Original = "1.00"
},
SolicitacaoPagador = "Serviço realizado.",
InfoAdicionais = new System.Collections.Generic.List<InfoAdicional>
{
new InfoAdicional
{
Nome = "Campo 1",
Valor = "Informação Adicional1 do PSP-Recebedor"
},
new InfoAdicional
{
Nome = "Campo 2",
Valor = "Informação Adicional2 do PSP-Recebedor"
}
}
};
var cobRequest = new CobRequestService();
var cb = await cobRequest.Create(System.Guid.NewGuid().ToString("N"), cob);
2 - Consultar a cobrança gerada
var cobRequest = new CobRequestService();
var cob = await cobRequest.GetByTxId("496b0fd872ba49a0ad5b55572debdabf");
var payload = cob.ToPayload(new Merchant("Alexandre Lima", "Presidente Prudente"));
var stringToQrCode = payload.GenerateStringToQrCode();
2 - Gerar o Payload a partir da cobrança gerada
var payload = cob.ToPayload(new Merchant("Alexandre Lima", "Presidente Prudente"));
3 - Pegar uma string para setar em um QrCode a partir do Payload gerado
var stringToQrCode = payload.GenerateStringToQrCode();
Retornará uma string como esta:
00020126880014br.gov.bcb.pix2566qrcodes-pix.gerencianet.com.br/v2/47cfcf6092c342e7bf2a24036d03ca9952040000530398654041.005802BR5914Alexandre Lima6019Presidente Prudente62290525496b0fd872ba49a0ad5b55572630459AE
4 - Por fim, basta setar em um QRCode! ;)
Ideal para cobranças simples, sem a necessidade do acompanhamento de status ou outros tipos de registros. Carrega as característica da maquininha de cartão.
- Não necessita de conexão com a internet
- Não necessita de autenticação
- Não requer um PSP
- Não é possível recuperar informações do status de pagamento
- Não é possível usar quaisquer endpoints da api oficial do pix
- Não é possivel pagar para si mesmo usando a mesma Chave x PSP, ex: gerar um QrCode para uma chave na Nubank e tentar pagar com a própria conta da Nubank.
Como Gerar?
Instale este pacote na sua aplicação:
Install-Package pix-dynamic-payload-generator.net
E inicie:
new StartConfig(
_baseUrl: "https://api-pix-h.seupsp.com.br",
_clientId: "client-id-fornecido-pelo-psp",
_clientSecret: "client-secret-fornecido-pelo-psp",
_certificate: new System.Security.Cryptography.X509Certificates.X509Certificate2(@".\certificado.p12")
);
1 - Crie uma instância de Cobrança usando como parâmetros a chave pix, em seguida converta para um Payload passando como parâmetro o id de identificação da transação e informações do títular da conta.
var cobranca = new Cobranca(_chave: "bee05743-4291-4f3c-9259-595df1307ba1");
- Valor (Caso não informado, ficará livre para o pagador digitar o valor);
- Descriçao (Caso informado, aparecerá no momento do pagamento).
Exemplo, definindo o valor de R$ 15,00 e descrição "Pagamento do pedido X":
Cobranca cobranca = new Cobranca(_chave: "bee05743-4291-4f3c-9259-595df1307ba1")
{
SolicitacaoPagador = "Pagamento do Pedido X",
Valor = new Valor
{
Original = "15.00"
}
};
2 - Gerar o Payload a partir da cobrança criada
var payload = cobranca.ToPayload("O-TxtId-Aqui", new Merchant("Alexandre Sanlim", "Presidente Prudente"));
3 - Pegar uma string para setar em um QrCode a partir do Payload gerado
var stringToQrCode = payload.GenerateStringToQrCode();
Retornará uma string como esta:
00020126580014br.gov.bcb.pix0136bee05743-4291-4f3c-9259-595df1307ba1520400005303986540510.005802BR5914Alexandre Lima6019Presidente Prudente62180514Um-Id-Qualquer6304D475
4 - Por fim, basta setar em um QRCode! ;)
Este projeto possui testes onde podeerão ser usados para fazer os requests conforme necessidade, siga estes passos para isso:
1 - Incluir o certificado disponibilizado pelo seu PSP na raiz do projeto, nas propriedades do mesmo marcar o "Copy to output directory" como "Copy always".
2 - Iniciar seus dados de autenticação no construtor:
public UnitTest1()
{
new StartConfig(
_baseUrl: "https://api-pix-h.seupsp.com.br",
_clientId: "client-id-fornecido-pelo-psp",
_clientSecret: "client-secret-fornecido-pelo-psp",
_certificate: new System.Security.Cryptography.X509Certificates.X509Certificate2(@".\certificado.p12")
);
}
Use conforme sua necessidade.
Você poderá usar este site para validar e visualizar os QrCoded gerados
- Caso necessite somente das funções apresentadas em QrCode estático, apenas este pacote será o suficiente.