Skip to content

Instantly share code, notes, and snippets.

@onefriendaday
Last active December 25, 2015 01:19
Show Gist options
  • Save onefriendaday/6893716 to your computer and use it in GitHub Desktop.
Save onefriendaday/6893716 to your computer and use it in GitHub Desktop.
MIOP
<?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