A princípio montaremos o objeto composto pelos dados do formulário preenchidos pelo aluno/comprador, objeto esse que será o body da nossa request, contendo também as informações da distribuidora, montado da seguinte forma:
const compra = {
produto_id: 02, //Id do produto no Edunext
forma_pagamento_id: 1, //Id da forma de pagamento
tabela_preco_id: 32, //Tabela de preço que compõe as variações de preço por tipos de pagamento disponíveis para o produto.
}
Os dados do comprador podem ser diferentes dos dados do aluno, para o caso do comprador ser apenas o responsável financeiro. Caso o aluno seja o responsável financeiro, os dados se repetem.
compra.comprador = {
nome: 'xxxx',
cpf: 'xxx.xxx.xxx-xx',
telefone_pais: 'xx',
telefone_ddd: 'xx',
telefone: 'xxxxx-xxxx',
email: 'xxxx@xxxxx',
endereco: 'xxxxxxxxxxxxxx',
endereco_numero: 'xxx',
complemento: 'xxxx',
bairro: 'xxxxx',
cidade: 'xxx xxxx',
estado: 'xx',
pais: 'xxxxxx',
cep: 'xxxxx-xxx'
}
compra.aluno = {
nome: 'xxxx',
cpf: 'xxx.xxx.xxx-xx',
telefone_pais: 'xx',
telefone_ddd: 'xx',
telefone: 'xxxxx-xxxx',
email: 'xxxxx@xxxxx',
endereco: 'xxxxxxxxxx',
endereco_numero: 'xxx',
complemento: 'xxxx',
bairro: 'xxxxxx',
cidade: 'xxxxxx',
estado: 'xx',
pais: 'xxxxxx',
cep: 'xxxxx-xxxx'
}
//As informações do cartão enviadas para a API edunext são criptografadas e preenchidas após a obtenção do token.
compra.cartao = {
nome: "",
numero: ””,
bandeira: "",
token: ""
}
As formas de pagamento possuem os seguintes IDs:
Para realizar o pagamento, chamamos a seguinte função:
async function efetuarPagamento() {
if (forma_pagamento_id == 1) {
try {
const data = {
account_id: ACCOUNT_ID, //ID da Distribuidora
method: 'credit_card',
test: true, //Indica se ambiente teste ou produção
data: {
number: 'xxxxxxxxxxxxxxxx', //Número do Cartão
verification_value: 'xxx', //Cód de Segurança - CVV
first_name: 'xxxx', // Nome escrito no Cartão
last_name: 'xxxxxxx', // Sobrenome escrito no Cartão
month: 'xx', //Mês de Validade
year: 'xxxx' //Ano de Validade
}
let token = await axios.post(
'https://apisrvl.edunext.technology/tokenCartao', data)
compra.cartao.bandeira = token.data.extra_info.brand;
compra.cartao.token = token.data.id;
compra.cartao.numero = token.data.extra_info.display_number;
compra.cartao.nome = token.data.extra_info.holder_name
} catch (e) {
if (e.errors) {
let erros = "";
for (let index in e.errors) {
if (index === "expiration")
erros += (erros === "" ? "" : ", ") + "Validade do cartão inválida";
else if (index === "first_name")
erros +=
(erros === "" ? "" : ", ") + "Primeiro nome do cartão inválido";
else if (index === "last_name")
erros +=
(erros === "" ? "" : ", ") + "Sobrenome do cartão inválido";
else if (index === "number")
erros += (erros === "" ? "" : ", ") + "Número do cartão inválido";
else if (index === "verification_value")
erros +=
(erros === "" ? "" : ", ") +
"Código de segurança do cartão inválido";
}
console.log(erros);
} else {
console.log(e.toString());
return;
}
}
let response;
try {
response = await axios({
url: "https://beta.api2.edunext.technology/api/Compras/checkout",
method: "post",
data: compra,
});
} catch (e) {
console.log(e.response);
}
if (response.status === 200) {
console.log(response.data);
}
}
}
No objeto response.data.resposta.secure_url obtido com a resposta da requisição, é possível ter acesso a fatura completa gerada.
No objeto response.data.resposta.pix.qrcode, se obtém o QRCode do PIX, e no response.data.resposta.pix.text, o texto com o código para pagamento com PIX usando a opção de copiar e colar.
No objeto response.data.resposta.bank_slip.barcode, se obtém o código de barras do boleto e no response.data.resposta.bank_slip.digitable_line, o texto com o código para pagamento utilizando o copiar e colar.
Os seguintes dados de cartão de crédito podem ser utilizados para a verificação dos retornos:
Nome e Sobrenome: Qualquer nome e sobrenome aleatório. Ex. José Ferreira, Martin da Silva, Maria de Lurdes.
Código de Segurança: Qualquer combinação de 3 dígitos, ou 4 dígitos caso o cartão tenha 4 dígitos.
Validade: Qualquer data futura.
* CVV com 4 dígitos.