Last active
December 25, 2015 01:19
-
-
Save onefriendaday/6893716 to your computer and use it in GitHub Desktop.
MIOP
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Is MOIP | |
if (isset($_POST['id_transacao'])) { | |
// Armazena o número do pedido | |
$order_number = $_POST['id_transacao']; | |
// Armazena o novo status do pedido | |
$status = $_POST['status_pagamento']; | |
} | |
// Is Pagseguro | |
if (isset($_POST['Referencia'])) { | |
// Armazena o número do pedido | |
$order_number = $_POST['Referencia']; | |
// Armazena o novo status do pedido | |
$status = $_POST['StatusTransacao']; | |
} | |
// Pesquisa o pedido com o número do pedido recebido | |
$order = $this->Order_model->get_order_by_ordernumber($order_number); | |
if($order) { | |
/* | |
Statuses of MOIP | |
1 | autorizado | Pagamento já foi realizado porém ainda não foi creditado na Carteira MoIP recebedora (devido ao floating da forma de pagamento) | |
2 | iniciado | Pagamento está sendo realizado ou janela do navegador foi fechada (pagamento abandonado) | |
3 | boleto impresso | Boleto foi impresso e ainda não foi pago | |
4 | concluido | Pagamento já foi realizado e dinheiro já foi creditado na Carteira MoIP recebedora | |
5 | cancelado | Pagamento foi cancelado pelo pagador, instituição de pagamento, MoIP ou recebedor antes de ser concluído | |
6 | em análise | Pagamento foi realizado com cartão de crédito e autorizado, porém está em análise pela Equipe MoIP. Não existe garantia de que será concluído | |
7 | estornado | Pagamento foi estornado pelo pagador, recebedor, instituição de pagamento ou MoIP | |
8 | em revisão | Pagamento está em revisão pela equipe de Disputa ou por Chargeback (Deprecated) | |
9 | reeembolsado | |
*/ | |
// Verifica o status e atribui as suas peculiaridades | |
switch($status) { | |
case '1': | |
case '2': | |
case '3': | |
case '6': | |
case 'Em Análise': | |
case 'Aguardando Pagto': | |
$new_status = 'Pending'; | |
$message = $this->Messages_model->get_by_name('Status - Aguardando Pagamento'); | |
break; | |
case '4': | |
case 'Aprovado': | |
$new_status = 'Processing'; | |
$message = $this->Messages_model->get_by_name('Status - Aprovado para Envio'); | |
break; | |
case '5': | |
case '7': | |
case 'Cancelado': | |
$new_status = 'Cancelled'; | |
$message = $this->Messages_model->get_by_name('Status - Cancelado'); | |
$items = $this->Order_model->get_items($order->id); | |
// Caso o pedido seja cancelado, é necessário devolver ao estoque a quantidade do produto | |
foreach ($items as $item) { | |
// Se o produto tiver uma variação | |
if (array_key_exists('variant', $item)) { | |
$v = $this->Variant_model->get_variant($item['variant']); | |
if (!empty($v)) { | |
$save['id'] = $v->id; | |
echo $v->name . ' is back in the stock.<br>\n'; | |
$save['quantity'] = (int)$v->quantity + (int)$item['quantity']; | |
$this->Variant_model->save_variant($save); | |
} | |
// Se for um produto simples | |
} else { | |
$p = $this->Product_model->get_product($item['id']); | |
if (!empty($p)) { | |
$save['id'] = $p->id; | |
echo $p->name . ' is back in the stock.<br>\n'; | |
$save['quantity'] = (int)$p->quantity + (int)$item['quantity']; | |
$this->Product_model->save($save); | |
} | |
} | |
} | |
break; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment