Estou precisando de ajuda para configurar um método POST para receber as notificações do Gerencianet (plataforma de pagamento). As requisições que são disparadas pelo WS deles geram o erro : Falha (415).
Meu método:
@POST
@Path("/RecebeToken")
@Consumes("text/plain")//
public void recebeToken(String token){
CheckOut.consultar(token);
}
O http code 415 ocorre quando vc tenta enviar o Content-Type num formato mas o WS esperado outro formato.
Verifique se é mesmo text/plain que o WS espera. Provavelmente deve ser application/json.
"415 UNSUPPORTED MEDIA TYPE The origin server is refusing to service the request because the payload is in a format not supported by this method on the target resource."
Certo, mas na documentação deles aqui esta dizendo que o parâmetro enviado é somente uma String …
"Foi gerada uma cobrança. Seu sistema recebe um POST da Gerencianet contendo o token de notificação 09027955-5e06-4ff0-a9c7-46b47b8f1b27 e informando o status da transação -"
Na documentação tem exemplo somente para PHP nada de java
Essa string pode ser um json ou xml por exemplo. Então por isso deve informar o Content-Type correto. Pode ainda existir a possibilidade de não ser isso.
Então, deduzo eu que seja isso ! Na primeira vez tentei configurar para receber um JSON e não funcionou !!
<?php
require __DIR__.'/../../vendor/autoload.php'; // caminho relacionado ao Composer
use Gerencianet\Exception\GerencianetException;
use Gerencianet\Gerencianet;
$clientId = 'your_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)
$clientSecret = 'your_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)
$options = [
'client_id' => $clientId,
'client_secret' => $clientSecret,
'sandbox' => true // altere conforme o ambiente (true = desenvolvimento e false = producao)
];
/*
* Este token será recebido em sua variável que representa os parâmetros do POST
* Ex.: $_POST['notification']
*/
$token = $_POST["notification"];
$params = [
'token' => $token
];
Sim … estou montando embasado no API Java deles, a integração esta toda funcionando, o único problema é que eu não consigo receber a notificação deles.
Eu poderia montar uma thread e ficar consultando pelo charge_id que é gerado mas se eu não fizer a notificação eles não validam a integração … com isso não saio do ambiente de testes.
Essa notificação é recebida quando há uma alteração no “Status” tipo o boleto foi pago, então eles me enviam um “Token” e eu faço a consulta por ele, pra evitar de eu ter q ficar consultando sem ter alteração …