Histórico de mensagens sobre url POST

EXIBINDO CONVERSAS RECENTES:

Texto: url POST
# freelancer
Avatar discord do usuario igor_efi

igor_efi

Ver Respostas

Bom dia, @evert0n! Você esta tentando autenticar?
Poderia testar este código abaixo:

php
//Desenvolvido pela Consultoria Técnica da Efí
$config = [
"certificado" => "./certificado.pem",
"client_id" => "YOUR-CLIENT-ID",
"client_secret" => "YOUR-CLIENT-SECRET"
];
$autorizacao = base64_encode($config["client_id"] . ":" . $config["client_secret"]);

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => "https://pix-h.api.efipay.com.br/oauth/token", // Rota base, homologação ou produção
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => '{"grant_type": "client_credentials"}',
CURLOPT_SSLCERT => $config["certificado"], // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $autorizacao",
"Content-Type: application/json"
),
));

$response = curl_exec($curl);

curl_close($curl);

echo "
";
echo $response;
echo "
";
?>

# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Boa tarde, @dadeke. Como vai?
Verifique esse detalhe da adição do /pix no final da sua URL que cadastrou.
Como está com o skip=true, você pode montar uma request no Postman para simular o envio da mensagem.

# pix
Avatar discord do usuario alissonmaciel_32335

alissonmaciel_32335

$config = [
"certificado" => ($sandbox) ? $pathCertificateHomolog : $pathCertificateProd,
"client_id" => ($sandbox) ? $clientIdHomolog : $clientIdProd,
"client_secret" => ($sandbox) ? $clientSecretHomolog : $clientSecretProd,
"rotas" => ($sandbox) ? $rotasHomolog : $rotasProd
];
$autorizacao = base64_encode($config["client_id"] . ":" . $config["client_secret"]);

$curl = curl_init();
$fp = fopen($_SERVER['DOCUMENT_ROOT'] . '/errorlog.txt', 'w');

curl_setopt_array($curl, array(
CURLOPT_VERBOSE => true,
CURLOPT_STDERR => $fp,
CURLOPT_URL => $config['rotas'] . "/oauth/token", // Rota base, homologação ou produção
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => '{"grant_type": "client_credentials"}',
CURLOPT_SSLCERT => $config["certificado"], // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $autorizacao",
"Content-Type: application/json"
),
));

$response = curl_exec($curl);

echo '

';
var_dump($config, $response);
echo '
';

curl_close($curl);

# pix
Avatar discord do usuario blackhawkx

blackhawkx

Ver Respostas

Você precisa criar a rota webhookUrl + /pix pra retornar um status code 200.
Quando e Efi acessar https://meusite.com/webhook/pix ela precisa dessa resposta pra validar a configuração.

# pix
Avatar discord do usuario blackhawkx

blackhawkx

Ver Respostas

Certo. Vamos lá.

Pra você parametrizar seu webhook, vou está usando o exemplo em examples\pix\webhooks\pixConfigWebhook.php.
No exemplo, você está substituindo o webhookUrl para https://meusite.com/webhook.
Ao executar o pixConfigWebhook.php ele vai validar e definir webhookUrl para a chave que você passou em params.

Para ele conseguir validar e definir ele precisa receber uma resposta de HTTP status code 200 de webhookUrl + /pix.
O SDK da Efi preenche automaticamente com /pix em todas requests para a webhookUrl que você definiu.
Ou seja, seu erro 404 pode ser por que a rota webhookUrl + /pix não existe no seu servidor - somente a webhookUrl (e que nunca será usada pela Efi).

# pix
Avatar discord do usuario tresbach

tresbach

Ver Respostas

Boa noite. Estou tentando configurar o webhook através do endpoint PUT /v2/webhook/:chave, enviei a URL sem trailing slash, mas parece que a barra é adicionada mesmo assim... Testei o pagamento e a requisição de notificação está sendo enviada pra um endpoint //pix (com duas barras)... Na imagem, corpo da requisição à esquerda e corpo da resposta à direita.
imagem enviada na mensagem pelo usuario tresbach

# mercado-pagamentos
Avatar discord do usuario rubenskuhl

rubenskuhl

https://www.camara.leg.br/noticias/997216-camara-aprova-projeto-que-regulamenta-apostas-esportivas/

Pagamentos
A fim de evitar a burla da regulamentação, o texto transfere às instituições autorizadas a operar arranjos de pagamento a proibição de dar curso a transações relativas a apostas feitas com empresas não autorizadas.

Para o pagamento das apostas e dos prêmios, somente as instituições autorizadas a funcionar pelo Banco Central poderão ofertar contas virtuais ou serviços financeiros de qualquer natureza.

Os recursos de apostadores mantidos nas contas de transação junto aos sites de apostas serão considerados patrimônio separado, não se confundindo com o patrimônio do agente operador. Assim, os valores não poderão ser objeto de arresto, sequestro ou ordem judicial devido a dívidas das empresas de apostas, por exemplo.

Já o resgate dos recursos dessas contas de transação somente poderá ocorrer com transferência, crédito ou remessa para contas bancárias mantidas pelo apostador nas instituições financeiras com sede e administração no Brasil e autorizadas a funcionar pelo Banco Central.

# devs
Avatar discord do usuario joaopaulosaldanha

joaopaulosaldanha

Algo como apontar para um URL tipo POST ou algo similar?

# pix
Avatar discord do usuario bernardocollet_36741

bernardocollet_36741

Ver Respostas

$config = [
"certificado" => __DIR__."/arquivo.pem",
"client_id" => "CLIENTEID",
"client_secret" => "CLIENTESECRET"
];
$autorizacao = base64_encode($config["client_id"] . ":" . $config["client_secret"]);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://pix.api.efipay.com.br/oauth/token", // Rota base, homologação ou produção
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => '{"grant_type": "client_credentials"}',
CURLOPT_SSLCERT => $config["certificado"],
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $autorizacao",
"Content-Type: application/json"
),
));
$response = curl_exec($curl);
curl_close($curl);
print_r($response);

# devs
Avatar discord do usuario c45lu

c45lu

Ver Respostas

Preciso fazer o envio conforme o pixCreateCharge? Porque conforme peguei o código Curl no postman, eu pensei que ele gerava o qrcode conforme o id da transação criada no pixCreateCharge passada no GET
imagem enviada na mensagem pelo usuario c45lu

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Por default o curl manda GET. Precisa mandar POST nessa rota.

# pix
Avatar discord do usuario .viniciusc

.viniciusc

java
public static Cob createCharge(String token, String payload) {
Cob cob = null;
try {
Generex txid = new Generex("[a-zA-Z0-9]{26,35}");
URL url = new URL("https://api-pix-h.gerencianet.com.br/v2/cob/" + txid.random());
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("PUT");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Authorization", "Bearer " + token);

OutputStream os = conn.getOutputStream(); // O erro do connection reset ocorre aqui
os.write(payload.getBytes());
os.flush();

int responseCode = conn.getResponseCode();

StringBuilder responseBuilder = new StringBuilder();
BufferedReader br;

if (responseCode >= 400) {
br = new BufferedReader(new InputStreamReader(conn.getErrorStream()));
} else {
br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
}

String response;
while ((response = br.readLine()) != null) {
responseBuilder.append(response);
}

//System.out.println("Código de resposta HTTP: " + responseCode);
//System.out.println("Resposta do servidor: " + responseBuilder);

JsonMapper mapper = JsonMapper
.builder()
.configure(MapperFeature.USE_ANNOTATIONS, false)
.build();

cob = mapper.readValue(responseBuilder.toString(), Cob.class);

conn.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return (cob != null) ? cob : new Cob();
}

# bolix
Avatar discord do usuario _alexandrehenrique

_alexandrehenrique

@sejaefi meu codigo

import { Request, Response } from "express";
import EfiPay from 'gn-api-sdk-typescript';
import Option from '../../../../certificate/credentials'


/
Create a banking billet for a CNPJ customer using EfiPay API.

@param req - The request object.
@param res - The response object.
/
export const CreatePgBoletoCNPJ = async (req: Request, res: Response) => {
// Get request body
const Dados = req.body;

console.log('CNPJ', Dados);

// Create request body
const body = {
payment: {
banking_billet: {
expire_at: Dados.vencimento,
customer: {
name: Dados.nome,
cpf: Dados.cpf,
juridical_person: {
corporate_name: Dados.razaosocial,
cnpj: Dados.cnpj
}
}
}
},

items: [{
name: Dados.produto,
value: parseInt(Dados.valor),
amount: 1
}],

metadata: {
notification_url: 'http://localhost:3041/notificacao/boleto/cnpj',
},
}

// Create EfiPay instance
const efipay = new EfiPay(Option);

// Call createOneStepCharge method
efipay
.createOneStepCharge([], body)
.then((resposta: Promise) => {
console.log(resposta);
res.json(resposta)
})
.catch((error: Promise) => {
console.log(error);
res.json(error)
});
}

# bolix
Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

Desta forma você criaria uma cobrança com a URL de notificação http://your_domain.com/notification, essa URL receberia um POST com um body em x-www-form-urlencoded com uma Key chamada "notification" e seu Value será o token para consultar através do método getNotification

# bolix
Avatar discord do usuario _alexandrehenrique

_alexandrehenrique

Ver Respostas

outra coisa ve se entendi corretamente

/ eslint-disable import/extensions /
import EfiPay from 'gn-api-sdk-typescript';
import options from '../../credentials';

const body = {
payment: {
banking_billet: {
expire_at: '2024-09-20',
customer: {
name: 'Gorbadoc Oldbuck',
email: '[email protected]',
cpf: '94271564656',
birth: '1977-01-15',
phone_number: '5144916523',
},
},
},

items: [
{
name: 'Product 1',
value: 500,
amount: 1,
},
],
notification_url: 'http://your_domain.com/notification',
};

const efipay = new EfiPay(options);

efipay
.createOneStepCharge([], body)
.then((resposta: Promise) => {
console.log(resposta);
})
.catch((error: Promise) => {
console.log(error);
});
posso fazer dessa forma?

# bolix
Avatar discord do usuario _alexandrehenrique

_alexandrehenrique

Ver Respostas

ola bom dia, poderia me explicar melhor essa questão da url de resposta?

# dúvidas
Avatar discord do usuario vicenzomartinelli

vicenzomartinelli

Ver Respostas

bom dia!
Gostaria de tirar uma dúvida sobre a integração de pagamento para PIX.
Implementamos por aqui a geração e o controle para ouvir os webhooks porém mesmo a listagem de webhooks nos retornando a nossa url corretamente o webhook de pagamento nunca chega para nós.
Como posso verificar isso? tem algum endpoint onde consiga os webhooks enviados e a resposta para cada um deles?

# devs
Avatar discord do usuario mathheusdr

mathheusdr

Bom dia, estou testando a resposta da API e estou em ambiente de desenvolvimento utilizando o Xampp
$metadata = [
"custom_id" => "Order_00001",
"notification_url" => "http://localhost/Projeto/resposta"
];
o erro : 3500034validation_errorA propriedade [notification_url] é inválida.
existe uma forma de testar a resposta neste formato ?