View Full Version : |Download| script de pagamento pix paghiper (não finalizado)
cronusmaker
08-13-2024, 10:22 PM
O SCRIPT NÃO ESTA FINALIZADO POREM FUNCIONANDO
O SCRIPT SOLICITA DADOS E GERA O QRCODE POREM NÃO CREDITA NO BANCO DE DADOS
DEVO FAZER CORREÇÕES NO FUTURO E COMPARTILHE POREM SEM PREVISÃO
BUGS ( O QRCODE GERADO ELE NÃO E CONVERTIDO PERA O PIX COPIA E COLA )
https://i.ibb.co/xSkhvTk/anb42nE.png
https://i.imgur.com/aeXdcxI.png
config.php
**Hidden Content: Check the thread to see hidden data.**
Ravoc
08-14-2024, 11:29 AM
Simples porém funcional! Não vai ser difícil fazer a inserção no banco de dados, quando montar a consulta de status de pagamento será 1 linha de acréscimo!
Caso alguém for usar, só mencionar aqui que faremos todos juntos a atualização! Mas, a base ficaria mais ou menos assim;
<?php
require 'config.php';
$transaction_id = $_GET['transaction_id'];
// Dados para verificação
$data = [
"apiKey" => PAGHIPER_API_KEY,
"transaction_id" => $transaction_id,
];
$ch = curl_init('https://pix.paghiper.com/invoice/status/');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
$response = curl_exec($ch);
curl_close($ch);
$responseData = json_decode($response, true);
// Verifica a resposta da API
if (isset($responseData['status_request']['result']) && $responseData['status_request']['result'] == 'success') {
$status = $responseData['status_request']['status'] ?? 'unknown';
$conn = new PDO("sqlsrv:server=" . DB_SERVER . ";Database=" . DB_DATABASE, DB_USERNAME, DB_PASSWORD);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "UPDATE pagamentos SET status = :status WHERE transaction_id = :transaction_id";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':status', $status);
$stmt->bindParam(':transaction_id', $transaction_id);
if ($stmt->execute()) {
echo "Status atualizado com sucesso!";
if ($status === 'approved') {
$sqlSaldo = "UPDATE clientes SET saldo = saldo + :valor WHERE cliente_id = (SELECT cliente_id FROM pagamentos WHERE transaction_id = :transaction_id)";
$stmtSaldo = $conn->prepare($sqlSaldo);
$valor = $responseData['status_request']['value_cents'] / 100;
$stmtSaldo->bindParam(':valor', $valor);
$stmtSaldo->bindParam(':transaction_id', $transaction_id);
if ($stmtSaldo->execute()) {
echo "Saldo adicionado ao cliente com sucesso!";
} else {
echo "Erro ao adicionar saldo ao cliente.";
}
}
} else {
echo "Erro ao atualizar o status no banco de dados.";
}
} else {
echo "Erro ao verificar o status do pagamento.";
}
?>
Romário
08-14-2024, 03:17 PM
Simples porém funcional! Não vai ser difícil fazer a inserção no banco de dados, quando montar a consulta de status de pagamento será 1 linha de acréscimo!
Caso alguém for usar, só mencionar aqui que faremos todos juntos a atualização! Mas, a base ficaria mais ou menos assim;
<?php
require 'config.php';
$transaction_id = $_GET['transaction_id'];
// Dados para verificação
$data = [
"apiKey" => PAGHIPER_API_KEY,
"transaction_id" => $transaction_id,
];
$ch = curl_init('https://pix.paghiper.com/invoice/status/');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
$response = curl_exec($ch);
curl_close($ch);
$responseData = json_decode($response, true);
// Verifica a resposta da API
if (isset($responseData['status_request']['result']) && $responseData['status_request']['result'] == 'success') {
$status = $responseData['status_request']['status'] ?? 'unknown';
$conn = new PDO("sqlsrv:server=" . DB_SERVER . ";Database=" . DB_DATABASE, DB_USERNAME, DB_PASSWORD);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "UPDATE pagamentos SET status = :status WHERE transaction_id = :transaction_id";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':status', $status);
$stmt->bindParam(':transaction_id', $transaction_id);
if ($stmt->execute()) {
echo "Status atualizado com sucesso!";
if ($status === 'approved') {
$sqlSaldo = "UPDATE clientes SET saldo = saldo + :valor WHERE cliente_id = (SELECT cliente_id FROM pagamentos WHERE transaction_id = :transaction_id)";
$stmtSaldo = $conn->prepare($sqlSaldo);
$valor = $responseData['status_request']['value_cents'] / 100;
$stmtSaldo->bindParam(':valor', $valor);
$stmtSaldo->bindParam(':transaction_id', $transaction_id);
if ($stmtSaldo->execute()) {
echo "Saldo adicionado ao cliente com sucesso!";
} else {
echo "Erro ao adicionar saldo ao cliente.";
}
}
} else {
echo "Erro ao atualizar o status no banco de dados.";
}
} else {
echo "Erro ao verificar o status do pagamento.";
}
?>
Seria interessante validar essa variável GET para evitar ataques de SQL Inject. Outra melhoria que poderia ser feita é evitar a exposição de informações sensíveis, acho que poderia usar a validação de "transaction_id" para isso.
cronusmaker
08-14-2024, 04:03 PM
Seria interessante validar essa variável GET para evitar ataques de SQL Inject. Outra melhoria que poderia ser feita é evitar a exposição de informações sensíveis, acho que poderia usar a validação de "transaction_id" para isso.
sim eu fiz via mysql porem ultimamente tou sem tempo pra testar alguma coisa no caso do paghiper existe um jeito de validar a transação
deixei ele aberto pra facilitar pro pessoal
Ravoc
08-14-2024, 07:52 PM
Seria interessante validar essa variável GET para evitar ataques de SQL Inject. Outra melhoria que poderia ser feita é evitar a exposição de informações sensíveis, acho que poderia usar a validação de "transaction_id" para isso.
Sim sim, é só um exemplo mesmo! Cabe ao usuário fazer as devidas modificações já que ai o exemplo está bem simples, fazendo a filtragem e as devidas correções para evitar métodos não autorizados pode ser analisado de forma mais afundo! Já que o código está totalmente de mão beijada!
Mas obrigado Romário! Abraço meu amigo.
Farias
08-18-2024, 08:39 PM
Parabens pela contribuição, vai ajudar muuitos !
No aguardo do sistema completo para uso ^^
cronusmaker
10-31-2024, 07:28 PM
Parabens pela contribuição, vai ajudar muuitos !
No aguardo do sistema completo para uso ^^
talves eu retome esse projeto mes que ve
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.