Requisição Ajax e Integração com APIs da Efí Pay

EXIBINDO RESPOSTAS:

Avatar discord do usuario danilowiener

danilowiener

Boa tarde, to fazendo uma requisição ajax para marcar como pago boleto de clientes, mas precisa ser com method PUT, eu adicionei desta forma a linha no ajax,
data : "_method=put&id_transacao="+id,
sabem me dizer se tem que ser de outra forma, já que não há resposta nenhuma, isto é, o meu id da transação não vai para o php dar baixa pela api... se alguém puder ajudar agradeço

Avatar discord do usuario matheus_efi

matheus_efi

Boa tarde <@!824696840153726987>, o método é PUT mesmo, especificamente PUT /v1/charge/:id/settle. Como você está utilizando JS seria assim:

js
'use strict';

var Gerencianet = require('gn-api-sdk-node');

var clientId = 'your_client_id';
var clientSecret = 'your_client_secret';

var options = {
client_id: clientId,
client_secret: clientSecret,
sandbox: true
}

var params = {
id: 1000 // no lugar do 1000 coloque o charge_id desejado
}

var gerencianet = new Gerencianet(options);

gerencianet
.settleCharge(params)
.then(console.log)
.catch(console.log)
.done();

Avatar discord do usuario danilowiener

danilowiener

então, eu to usando o exemplo do gerencianet https://s3.amazonaws.com/gerencianet-pub-prod-1/printscreen/2021/03/25/marcelo.machado/36b99c-f16791cc-a4d4-4182-b9af-f069059e5c22.png para fazer o php, a chamada do usando desta forma, já uso assim para gerar os boletos, mas nunca usei via put...
$qp.ajax({
type : "post",
url : "_QUITAR_boletocliente.php",
data : "_method=put&id_transacao="+id,
dataType : "html",
success : function (htmlquitar){
alert(htmlquitar); //ver retorno do php
if(htmlquitar==1){
setTimeout(function(){ location.reload(); }, 3000);
}
}
});

Avatar discord do usuario guilherme_efi

guilherme_efi

<@!824696840153726987>
no data : "id_transacao="+id, // Não é necessário passar este parâmetro de método Put

Avatar discord do usuario guilherme_efi

guilherme_efi

Conforme o Matheus exemplificou a forma como é feito o settleCharge()
Ou seja, este trecho que ele lhe passou, você irá implementar em seu _QUITAR_boletocliente.php

E nele você irá pegar o id que foi passado via POST no data : "_method=id_transacao="+id,, da seguinte forma:

php
'use strict';

var Gerencianet = require('gn-api-sdk-node');

var id_transacao = $_POST['id_transacao']; // Id vindo da request Ajax
var clientId = 'your_client_id';
var clientSecret = 'your_client_secret';

var options = {
client_id: clientId,
client_secret: clientSecret,
sandbox: true
}

var params = {
id: id_transacao
}

var gerencianet = new Gerencianet(options);

gerencianet
.settleCharge(params)
.then(console.log)
.catch(console.log)
.done();

Avatar discord do usuario danilowiener

danilowiener

Fiz conforme falaram... mas nos logs tá apresentando erro nesta linha:
var Gerencianet = require('gn-api-sdk-node');

Avatar discord do usuario guilherme_efi

guilherme_efi

Esta falha apresenta pois o módulo da Gerencianet não foi encontrado no node_modules de seu projeto
Para isto execute: npm install gn-api-sdk-node

Avatar discord do usuario danilowiener

danilowiener

onde executo numa hospedagem compartilhada?

Avatar discord do usuario joelemanoel

joelemanoel

Neste caso precisa verificar com a hospedagem compartilhada.