Ir ao conteúdo

Posts recomendados

Postado

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";
    }
}
?>

 

Postado

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
Postado

@GabrielSennaMs

<?php
	$host = 'sql311y.com';
	$usuario = 'epiz_4508';
	$senha = 'Oz0TJGQ';
	$banco = 'epizhypecraft';


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


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

 

Postado
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.

Postado

@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() . " ");
}
 
 

 

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!