Eu consegui integrar para fazer o pagamento e tudo, mas para receber a notificação e alterar o meu status de “não pago” para “pago” não funciona. Após receber o pagamento, o MP envia um POST neste estilo www.seusite.com.br?topic=payment&id=seuiddepagamento.
Como eu criei um arquivo response.php apenas para isso ficou assim :
$merchant_order = null;
if(isset($_GET["topic"])){
switch($_GET["topic"]) {
case "payment":
$payment = \MercadoPago\Payment::find_by_id($_GET["id"]);
$merchant_order = \MercadoPago\MerchantOrder::find_by_id($_GET["id"]);
break;
case "plan":
$plan = \MercadoPago\Plan.find_by_id($_GET["id"]);
break;
case "subscription":
$plan = \MercadoPago\Subscription.find_by_id($_GET["id"]);
break;
case "invoice":
$plan = \MercadoPago\Invoice.find_by_id($_GET["id"]);
break;
case "merchant_order":
$merchant_order = \MercadoPago\MerchantOrder::find_by_id($_GET["id"]);
break;
}
}
if(isset($_POST["topic"])){
switch($_POST["topic"]) {
case "payment":
$payment = \MercadoPago\Payment::find_by_id($_POST["id"]);
$merchant_order = \MercadoPago\MerchantOrder::find_by_id($_POST["id"]);
break;
case "plan":
$plan = \MercadoPago\Plan.find_by_id($_POST["id"]);
break;
case "subscription":
$plan = \MercadoPago\Subscription.find_by_id($_POST["id"]);
break;
case "invoice":
$plan = \MercadoPago\Invoice.find_by_id($_POST["id"]);
break;
case "merchant_order":
$merchant_order = \MercadoPago\MerchantOrder::find_by_id($_POST["id"]);
break;
}
}
$external_ref = $payment->external_reference;
$paid_amount = 0;
if ($payment->status == 'approved'){
$paid_amount += $payment->transaction_amount;
}
if($paid_amount >= $payment->transaction_amount){
$order = new Order();
$order->verifyPayment($external_ref);
http_response_code(200);
} else {
print_r("Not paid yet. Do not release your item.");
}
?>
```
Como podem ver, se der certo, ele chama o metodo verifyPayment e envia o codigo de referencia, e lá eu aplico uma lógica para atualizar de 0(não pago) para 1(pago)
O problema é que ele simplesmente nao ta me notificando nada, e se me notifica eu não sei como é. Porque na documentação eles falam que simplesmente após o pagamento enviam um POST neste formato, mas meu banco nunca atualiza. Obs : Eu ja inseri a URL manualmente e funciona , porém quando faço um pagamento no MP ele simplesmente não atualiza. Como resolvo isso?