🚀Criando uma transação
Esta página contém instruções de como solicitar a criação de uma transação na API da 4P Finance.
Resumo
Para realizar transações, é necessário executar uma chamada para a API e obter como retorno o Identificador da Transação/TID ( Transation ID ), que deverá ser enviado para o smart contract / endereço, ambos retornados pela 4P Finance.
Com o TID e o endereço do smart contract, o próximo passo é executar o método DoTransaction do smart contract iniciando assim a transação, passando como parâmetro o TID e Valor a ser transferido, após o usuário aprovar na sua carteira.
Solicitação de registro/transação
A requisição para realizar a criação/registro de uma transação deverá ter como corpo da solicitação JSON as informações necessárias para registrar a transação. Esses dados serão os dados referente a transação e os dados do produto ou serviço a ser cobrado.
Exemplo de requisição
{
"transaction": {
"transaction_data": {
"buyer_name": "Marcos Meira",
"buyer_email": "[email protected]",
"total_discount": 2000,
"amount_brl": 18000,
"amount_crypto": "24.024",
"chain_id": "137",
"currency_symbol": "MATIC",
"custom_id": "PN0032",
"notification_url": "https://meudominio.com.br/callback/?numpedido=pn0032"
},
"transaction_items": [
{
"description": "Produto Teste 01",
"quantity": 1,
"discount": 1000,
"amount": 10000
},
{
"description": "Produto Teste 02",
"quantity": 1,
"discount": 1000,
"amount": 10000
}
]
}
}
Requisição
Solicita a criação/registro de uma transação.
POST
https://api.4p.finance/v1/transaction/create/
Realiza a solicitação do registro de uma transação pelo gateway e o monitoramento da mesma.
Headers
x-api-key*
String
Sua chave API.
Request Body
transaction_data*
Object
Objeto que deverá conter os dados da transação.
transaction*
Object
Objeto principal.
buyer_name*
String
Nome do cliente/usuário.
buyer_email*
String
E-mail do cliente/usuário.
total_discount*
Integer
Total de desconto da transação. Exemplo: 2010 = R$ 20,10.
amount_brl*
Integer
Valor total da compra em BRL/REAL. Exemplo: 18990 = R$ 189,90.
amount_crypto*
String
Valor total da compra convertido para a criptomoeda/token e que será cobrado na transação.
chain_id*
String
ID da rede/blockchain que será executada a transação. Exemplo: 137.
currency_symbol*
String
Símbolo da moeda/token que será transferido na transação. Exemplo: MATIC.
custom_id*
String
Identificador único/personalizado da transação na sua aplicação. Esse identificador deverá ser gerado por sua aplicação para fins de controle.
notification_url*
String
URL de retorno de sua aplicação que receberá as notificações de status da transação via POST.
transaction_items*
Array
Array que deverá conter os dados dos objetos/itens ( produtos ou serviço ).
description*
String
Descrição do item / produto ou serviço.
quantity*
Integer
Quantidade do item.
discount*
Integer
Valor do desconto do item. Exemplo: 2000 = R$ 20,00.
amount*
Integer
Valor do item. Exemplo: 4999 = R$ 49,99.
{
"http_code": 200,
"success": true,
"info": {
"result": "checkout_registered",
"message": "Checkout was successfully registered.",
"data": {
"address_smart_contract": "0xb40fa00662b512b2d83e4da738b0a35f0b9e38cd",
"tid": 1591
}
}
}
Retorno
Observe que o retorno contém o data
onde temos a chave address_smart_contract
, e no seu valor, o endereço do smart contract, que deverá receber o Valor em criptomoeda a ser transferido.
Observe também, que dentro do data
temos o tid
e no seu valor o Identificador da Transação registrada. Esse valor deverá ser passado como parâmetro na execução do método DoTransaction do smart contract.
Execução da transferência
Veja abaixo um exemplo em JavaScript que executa a chamada do método DoTransaction enviado o TID como parâmetro.
// Endereço do smart contract retornado pela API após criar/registrar transação.
let ContractAddress = "0x06cc02d9f89232t20d71d1d32813071562355b9f";
// Identificador da transação retornado pela API após criar/registrar transação.
let GwTid = 25323;
// Instância o provider.
const Provider = new ethers.providers.Web3Provider(window.ethereum);
// ABI padrão do smart contract.
const ABI = [
"function DoTransaction(uint BkuTid) public payable"
]
// Obtendo a conta que irá assinar a transação.
const Signer = await Provider.getSigner();
// Instância do smart contract.
const Contract = new ethers.Contract( ContractAddress, ABI, Signer );
// Convertendo valor a ser transferido.
let AmountToTransfer = ethers.utils.parseUnits( TotalCrypto.toString() );
// Executando método DoTransaction do smart contract e passando o TID como parâmetro.
Contract.DoTransaction( GwTid, {
value: AmountToTransfer
}).then( response => {
console.log(response);
}).catch( error => {
console.log(error);
});
Conclusão
Após a autorização do usuário na carteira e registro na blockchain, você receberá como retorno os dados da transação na blockchain. Também é possível aguardar a confirmação de blocos para garantir no front-end uma confirmação imediata para o usuário.
Embora sua aplicação receba, após a execução da transferência, retorno da blockchain com os dados da transação e confirmação via front-end; por segurança, o gateway também irá enviar notificações para a sua URL de retorno, assim que obter uma confirmação da transferência. Isso garantirá que, mesmo que o front-end ( em caso de aplicação web ) perca conexão, ou por algum motivo não receba o retorno da blockchain, a fim de confirmar a transação ao usuário, o webhook da 4P Finance irá enviar uma confirmação da transação para sua aplicação.
Saiba mais sobre as notificações e callbacks na próxima sessão.
Last updated
Was this helpful?