Ir ao conteúdo
  • Cadastre-se

PHP Query nao esta executando...


Posts recomendados

Estou tentando fazer uma atualização em meu BD conforme o status da compra no mercado pago for aceita, porém pelo visto não esta executando a query alguém poderia ajudar ?

 

functions.php

 

<?php
    function addpayment($conexaoo, $nick, $email, $ipcadastrado, $nome, $sobrenome, $email_comprado, $produto, $valor, $data, $telefone, $ipcomprando, $observacoes, $comando, $status, $servidor, $pref_id, $external_reference){
        $sql = $conexaoo->prepare("INSERT INTO website_shop_compras (nick, email, ipcadastrado, nome, sobrenome, email_comprado, produto, valor, data, telefone, ipcomprando, observacoes, comando, status, servidor, preference_id, external_reference) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
        $sql->bind_param("sssssssssssssssss", $nick, $email, $ipcadastrado, $nome, $sobrenome, $email_comprado, $produto, $valor, $data, $telefone, $ipcomprando, $observacoes, $comando, $status, $servidor, $pref_id, $external_reference);
        $sql->execute();

        echo $sql->error;

        if($sql->affected_rows > 0){
            return true;
        }else{
            return false;
        }
    }

    function getPayment($conexaoo, $external_reference, $nick){
        $ext_ref = $external_reference;
        $query = $conexaoo->query("SELECT * FROM `website_shop_compras` WHERE `website_shop_compras`.`external_reference` = '$ext_ref' AND status = 'Pendente'");//Aparentemente nao esta funcionando
        $total = $query->num_rows;//Aparentemente nao esta funcionando

        if($total > 0){
            echo "Tem pagamento<br>";
            updateStatus($conexaoo, $external_reference);
            //addSaldo($conexaoo, $nick);
        }
    }

    function addSaldo($conexaoo, $nick){
        $nick;
        $qr = $conexaoo->query("SELECT * FROM `website_shop_compras` WHERE `website_shop_compras`.`nick` = '$nick'");
        $total = $qr->num_rows;


        if($total > 0){
            $dados = $qr->fetch_assoc();
            $saldo = $dados['funds'];
            $newStatus = 'Confirmado';
            $query = $conexaoo->prepare("UPDATE website_shop_compras SET status = ?");
            $query->bind_param("s", $newStatus);
            $query->execute();

            if($query->affected_rows > 0){
                echo "<br>Status atualizado...";
            }else{
                echo $query->error;
            }
        }
    }

    function updateStatus($conexaoo, $external_reference){
        $sql = $conexaoo->prepare("UPDATE website_shop_compras SET status = 'Confirmado' WHERE external_reference = ?");
        $sql->bind_param("s", $external_reference);
        $sql->execute();

        if($sql->affected_rows > 0){
            echo "<br>Status atualizado como Confirmado.";
        }
    }

?>

 

 

response.php

 

<?php
include_once("lib/includes.php");
//echo $_GET['id'];

// Brasil: https://www.mercadopago.com/mlb/ferramentas/aplicacoes

$mp = new MP(client_id, client_secret);
$params = ["access_token" => $mp->get_access_token()];
//echo $mp->get_access_token();
// Check mandatory parameters
if (!isset($_GET["id"], $_GET["topic"]) || !ctype_digit($_GET["id"])) {
    http_response_code(400);
    return;
}
// Get the payment and the corresponding merchant_order reported by the IPN.
if($_GET["topic"] == 'payment'){
    $payment_info = $mp->get("/v1/payments/" . $_GET["id"]);
    $merchant_order_info = $mp->get("/merchant_orders/" . $payment_info["response"]["order"]["id"]);
// Get the merchant_order reported by the IPN.
} else if($_GET["topic"] == 'merchant_order'){
    $merchant_order_info = $mp->get("/merchant_orders/" . $_GET["id"]);
}

//If the payment's transaction amount is equal (or bigger) than the merchant order's amount you can release your items 
if ($merchant_order_info["status"] == 200) {
    $transaction_amount_payments= 0;
    $transaction_amount_order = $merchant_order_info["response"]["total_amount"];
    $payments=$merchant_order_info["response"]["payments"];
    foreach ($payments as  $payment) {
        if($payment['status'] == 'approved'){
            $transaction_amount_payments += $payment['transaction_amount'];
        }    
    }
    if($transaction_amount_payments >= $transaction_amount_order){
        echo "release your items.<br>";
        $paymentInfo = $mp->get_payment ($_GET["id"]);
        //print_r ($paymentInfo);
        //echo $paymentInfo['response']['transaction_amount'];
        //echo $paymentInfo['response']['external_reference'];$paymentInfo['response']['collector_id'],
        $external_ref = $paymentInfo['response']['external_reference'];
        $ext_email = $paymentInfo['response']['payer']['email'];
        $ext_val = $paymentInfo['response']['transaction_amount'];
        getPayment($con, $external_ref, $ext_email, $ext_val);
    }
    else{
        echo "dont release your items";
    }
}
?>

 

Link para o comentário
Compartilhar em outros sites

boa tarde, olhando por cima acho que esta dando erro porque você colocou o nome do banco entre aspas simples, posso está enganado, mais não precisa dessas aspas!

E a concatenação parece que ta errado também.

 

errado 

$query = $conexaoo->query("SELECT * FROM `website_shop_compras` WHERE `website_shop_compras`.`external_reference` = '$ext_ref' AND status = 'Pendente'");

correto.

$query = $conexaoo->query("SELECT * FROM website_shop_compras WHERE CONCAT(website_shop_compras,external_reference) = '$ext_ref' AND status = 'Pendente'");

obs.: não sei se é assim que faz a concatenação no SQL, alguém me orienta também por favor!  

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

9 minutos atrás, Stifler874 disse:

@GabrielSennaMs


<?php
	$host = 'sql311.epizy.com';
	$usuario = 'epiz_24204508';
	$senha = 'Oz0jt73NTJGQ';
	$banco = 'epiz_24204508_hypecraft';


	$conexaoo = new mysqli($host, $usuario, $senha, $banco);


	if(mysqli_connect_errno()){
		exit('Erro ao conectar-se ao banco: '.mysqli_connect_error());
	}
?>

 

Remove os dados de conexão 

adicionado 15 minutos depois

@Stifler874 Faz duas coisa se possível, ultiliza um var_dump(); na variável $query na função que você acha que está o problema, e verifica o log de erro.

 

Se possível pública o log de erro e o resultado do var_dump aqui.

Link para o comentário
Compartilhar em outros sites

@GabrielSennaMs

Estou tentando refazer aqui pois peguei esse código de um colega...

Estou refazendo em PDO...

 

 

@edit;

Alterei tudo para PDO e ficou assim:

 

functions.php

 

 


<?php
    function adicionarDB($conexao, $nick, $email, $ipcadastrado, $nome, $sobrenome, $email_comprado, $produto, $valor, $data, $telefone, $ipcomprando, $observacoes, $comando, $status, $servidor, $pref_id, $external_reference){

            try {
                $stmt = $conexao->prepare("INSERT INTO website_shop_compras (nick, email, ipcadastrado, nome, sobrenome, email_comprado, produto, valor, data, telefone, ipcomprando, observacoes, comando, status, servidor, preference_id, external_reference) VALUES ('$nick', '$email', '$ipcadastrado', '$nome', '$sobrenome', '$email_comprado', '$produto', '$valor', '$data', '$telefone', '$ipcomprando', '$observacoes', '$comando', '$status', '$servidor', '$pref_id', '$external_reference')");
                $stmt->bindParam(1, $nick);
                $stmt->bindParam(2, $email);
                $stmt->bindParam(3, $ipcadastrado);
                $stmt->bindParam(4, $nome);
                $stmt->bindParam(5, $sobrenome);
                $stmt->bindParam(6, $email_comprado);
                $stmt->bindParam(7, $produto);
                $stmt->bindParam(8, $valor);
                $stmt->bindParam(9, $data);
                $stmt->bindParam(10, $telefone);
                $stmt->bindParam(11, $ipcomprando);
                $stmt->bindParam(12, $observacoes);
                $stmt->bindParam(13, $comando);
                $stmt->bindParam(14, $status);
                $stmt->bindParam(15, $servidor);
                $stmt->bindParam(16, $pref_id);
                $stmt->bindParam(17, $external_reference);

                if ($stmt->execute()) {
                    return true;
                } else {
                    return false;
                    print_r($stmt->errorInfo()); // exibe uma array com os erros
                }  

            } catch (Exception $e) {
                echo "<center><font size=6></font></center>";
            }

    }//Function

    function verificaPag($conexao, $external_ref){

        //


        $res = $conexao->prepare("SELECT COUNT(*) FROM website_shop_compras WHERE `external_reference` = '$external_ref' AND status = 'Pendente'");
        $res->execute();
        $num_rows = $res->fetchColumn();


        if ($num_rows > 0) {
            echo "Tem pagamento <br>";
            atualizaDB($conexao, $external_ref);
        }
    }

    function atualizaDB($conexao, $external_ref){

        try {
            $statusConfirm = "Confirmado";
            $stmt = $conexao->prepare("UPDATE website_shop_compras SET status = ? WHERE external_reference = '$external_ref'");
            $stmt->bindParam(1, $statusConfirm);

            if ($stmt->execute()) {
                echo "<br>Status atualizado como pago.";
            } else {
                echo "<br>Deu algum erro...";
                print_r($stmt->errorInfo()); // exibe uma array com os erros
            }  

        } catch (Exception $e) {
            echo "<center><font size=6></font></center>";
        }
    }

?>
 

 

 

response.php

 

 


<?php
include_once("lib/includes.php");
//echo $_GET['id'];

// Brasil: https://www.mercadopago.com/mlb/ferramentas/aplicacoes

$mp = new MP(client_id, client_secret);
$params = ["access_token" => $mp->get_access_token()];
//echo $mp->get_access_token();
// Check mandatory parameters
if (!isset($_GET["id"], $_GET["topic"]) || !ctype_digit($_GET["id"])) {
    http_response_code(400);
    return;
}
// Get the payment and the corresponding merchant_order reported by the IPN.
if($_GET["topic"] == 'payment'){
    $payment_info = $mp->get("/v1/payments/" . $_GET["id"]);
    $merchant_order_info = $mp->get("/merchant_orders/" . $payment_info["response"]["order"]["id"]);
// Get the merchant_order reported by the IPN.
} else if($_GET["topic"] == 'merchant_order'){
    $merchant_order_info = $mp->get("/merchant_orders/" . $_GET["id"]);
}

//If the payment's transaction amount is equal (or bigger) than the merchant order's amount you can release your items 
if ($merchant_order_info["status"] == 200) {
    $transaction_amount_payments= 0;
    $transaction_amount_order = $merchant_order_info["response"]["total_amount"];
    $payments=$merchant_order_info["response"]["payments"];
    foreach ($payments as  $payment) {
        if($payment['status'] == 'approved'){
            $transaction_amount_payments += $payment['transaction_amount'];
        }    
    }
    if($transaction_amount_payments >= $transaction_amount_order){
        echo "release your items.<br>";
        $paymentInfo = $mp->get_payment ($_GET["id"]);
        //print_r ($paymentInfo);
        //echo $paymentInfo['response']['transaction_amount'];
        //echo $paymentInfo['response']['external_reference'];$paymentInfo['response']['collector_id'],
        $external_ref = $paymentInfo['response']['external_reference'];
        $ext_email = $paymentInfo['response']['payer']['email'];
        $ext_val = $paymentInfo['response']['transaction_amount'];
        verificaPag($connection, $external_ref, $ext_email, $ext_val);
    }
    else{
        echo "dont release your items";
    }
}
?>
 

 

dbconnect.php

 

 


<?php

$_MYSQL = [
    'user' => '',//Usuario
    'pass' => '',//Senha
    'host' => '',//Host
    'data' => '',//DataBase
];

try
{
    $conexao = new PDO('mysql:dbname=' . $_MYSQL['data'] . ';host=' . $_MYSQL['host'], $_MYSQL['user'], $_MYSQL['pass'], [PDO::MYSQL_ATTR_INIT_COMMAND => 'set names utf8']);
}
catch (PDOException $e)
{
    exit("ERRO!<br> " . $e->getMessage() . " ");
}
 
 

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...