Transferência Pix a partir de dados bancários

Pré requisitos para implementação:

  • Possuir uma chave api da Celcoin, para mais informações acessar esse link

  • Ter familiaridade com apis Rest usando o protocolo OAuth 2.0.

  • Ter o produto/solução contratada, caso queira usar a funcionalidade em ambiente produtivo, por favor entre em contato com a nossa equipe comercial através do e-mail [email protected] Para dúvidas técnicas, basta entrar em contato com o suporte através do link.

Essa funcionalidade deve ser utilizada sempre que sua aplicação possuir os dados bancários de um cliente (instituição financeira, tipo da conta, agência, conta e a titularidade), ou quando o usuário informar que deseja efetuar uma transferência com pix informando os dados bancários em seu aplicativo, ou sistema, desta forma o caso de uso poderia ser:

Como Fintech quero disponibilizar para os meus usuários a possibilidade de realizar transferências pix, para qualquer instituição financeira, uma vez que ele informar os dados bancários do recebedor, onde será retirado o saldo de sua conta e enviado para a conta de outra pessoa, ou empresa.

Iniciar pagamento

Com os dados bancários do usuário e o valor que ele deseja realizar a transferência, deve ser realizada uma chamada na API Iniciar pagamento PIX.

Modelo de request:

curl --location --request POST 'https://sandbox.openfinance.celcoin.dev/pix/v1/payment' \
--header 'accept: application/json' \
--header 'Content-Type: application/json-patch+json' \
--header 'Authorization: Bearer {access_token}' \
--data-raw '{
    "amount": 25.55,
    "clientCode": "14588541111",
    "debitParty": {
        "account": "3794245",
        "branch": 30,
        "taxId": "13935893000109",
        "accountType": "CACC",
        "name": "IS2B - Integrated Solutions to Business S.A"
    },
    "creditParty": {
        "bank": "30306294",
        "account": "42161",
        "branch": 20,
        "taxId": "07693440704",
        "accountType": "CACC",
        "name": "TESTE DE RAZAO SOCIAL"
    },
    "initiationType": "MANUAL",
    "remittanceInformation": "Texto de mensagem",
    "paymentType": "IMMEDIATE",
    "urgency": "HIGH",
    "transactionType": "TRANSFER"
}'

Na propriedade amount deve ser preenchido o valor a ser transferido, já na clientCode deve ser utilizado um identificador único da sua aplicação.

O objeto debitParty deve ser preenchido com os dados da conta bolsão da Celcoin e o objeto creditParty deve ser populado com os dados da conta que vai receber o valor, perceba que existe dentro dele uma propriedade bank, para consulta o valor a ser atribuído nesse campo, basta realizar um GET na API Lista participantes do Pix

A propriedade initiationType deve ser populado com o valor MANUAL, para que a aplicação da Celcoin entenda que sua aplicação está executando uma transferência.

A propriedade urgency deve ser populada com o valor HIGH para ser executada na hora.

A propriedade transactionType deve ser populada com valor TRANSFER, pois estamos executando uma transferência de valores.

A propriedade paymentType deve ser populada com IMMEDIATE para ser executada na hora.

Modelo de response:

{
    "transactionId": 9152617,
    "code": "SUCCESS",
    "slip": "     COMPROVANTE TRANSFERENCIA PIX      \n            02/03/2022 15:32            \n           TERM 11 AGENTE 999           \n                CONTROLE                \n    E1393589320220302183201165615960    \n----------------------------------------\n                PAGADOR                 \n\n                Contrato                \n            AG:1 CC:100548925           \n        CPF/CNPJ:23694719000175         \n----------------------------------------\n               RECEBEDOR                \n\n       30306294 AG:0 CC:10545584        \n          CPF/CNPJ:11122233344          \n----------------------------------------\n   DATA DO PAGAMENTO 02/03/2022 15:32   \n\n            VALOR R$ 25,5500            \n----------------------------------------\n              AUTENTICACAO              \nD9.F7.54.38.E4.8B.F8.40.91.DD.41.9E.F9.00.80.D3\n",
    "slipAuth": "D9.F7.54.38.E4.8B.F8.40.91.DD.41.9E.F9.00.80.D3",
    "endToEndId": "E1393589320220302183201165615960"
}

Note que será retornado o id da transação Celcoin (transactionId) e a propriedade endToEndId (id da transação pix fim a fim), recomendamos que esses campos sejam armazenados em sua aplicação, pois a Celcoin irá enviar um gatilho em seu webhook, informando se a transação ocorreu com sucesso, ou não e com eles você pode fazer essas validações do seu lado.

O campo code informa se a requisição ocorreu com sucesso, ou não. A propriedade slip devolve o comprovante do pagamento e o endToEndId é o id da transação pix no BACEN.

Ao realizar a chamada de payments a Celcoin irá retirar o dinheiro da sua conta bolsão e vai executar a tentativa de transferência. Caso tudo ocorra como esperado, será enviado via webhook uma notificação, porém se por algum motivo ocorrer uma falha, sua aplicação também será notificada via webhook, porém nesse cenário a Celcoin devolve o saldo retirado da conta, para ser usado em possíveis transações futuras.

🚧

Recomendamos que as informações mencionadas acima, sejam persistidas do lado da sua aplicação.

Para conseguir receber da Celcoin os status das transferências, pagamentos e cobranças, deve ser realizada a configuração de um webhook.

Recebendo status da transação via webhook

O webhook é uma forma de receber informações de forma assíncrona, onde geralmente são disparados gatilhos no formato JSON quando um evento acontece. Para realizar a configuração de um webhook é necessário entrar em contato com a nossa equipe de suporte informando a url de seu webhook, senha e usuário, no formato BASIC, desta forma eles irão realizar o cadastro dele em nossa plataforma para que seja possível o envio dos gatilhos.

Após a Celcoin realizar a tentativa de transferência do valor para instituição bancária solicitada, ela irá disparar um gatilho (PAYMENT), no webhook de seu aplicativo, ou sistema, configurado pelo nosso time de suporte.

Uma vez que a propriedade RequestBody.StatusCode.StatusId for igual a 2, seu usuário final pode ser notificado que a transferência ocorreu com sucesso, qualquer coisa diferente de 2, deve ser validado o retorno, tratado e apresentado ao usuário, criamos uma tabela que mostra quais são os possíveis retornos que podemos apresentar, para acessar basta clicar nesse link.

Para realizar testes em sandbox e receber o webhook de PAYMENT com status igual 2, deve ser utilizado o payload informado no começo do artigo.

Caso você queira simular o pagamento rejeitado recebendo o gatilho PAYMENT com status diferente de 2, basta alterar o payload alterando o objeto creditParty da seguinte forma:

"creditParty": {
        "bank": "30306294",
        "account": "10545584",
        "branch": 0,
        "taxId": "11122233344",
        "accountType": "CACC",
        "name": "Celcoin"
    }

Did this page help you?