/** * Processes order status and return information about order status and state * Doesn' change anything to the order. Just returns an object showing what to do. * @param $statusCode * @return Varien_Object */ public function processStatus($statusCode) { $return = new Varien_Object(); $return->setStateChanged(true); $return->setIsTransactionPending(true); //payment is pending? switch ($statusCode) { case '1': $return->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT); $return->setIsCustomerNotified($this->getCode() != 'pagseguro_cc'); if ($this->getCode() == 'pagseguro_cc') { $return->setStateChanged(false); } $return->setMessage('Aguardando pagamento: o comprador iniciou a transação, mas até o momento o PagSeguro não recebeu nenhuma informação sobre o pagamento.'); break; case '2': $return->setState(Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW); $return->setIsCustomerNotified(true); $return->setMessage('Em análise: o comprador optou por pagar com um cartão de crédito e o PagSeguro está analisando o risco da transação.'); break; case '3': $return->setState(Mage_Sales_Model_Order::STATE_PROCESSING); $return->setIsCustomerNotified(true); $return->setMessage('Paga: a transação foi paga pelo comprador e o PagSeguro já recebeu uma confirmação da instituição financeira responsável pelo processamento.'); $return->setIsTransactionPending(false); break; case '4': $return->setMessage('Disponível: a transação foi paga e chegou ao final de seu prazo de liberação sem ter sido retornada e sem que haja nenhuma disputa aberta.'); $return->setIsCustomerNotified(false); $return->setStateChanged(false); $return->setIsTransactionPending(false); break; case '5': $return->setState(Mage_Sales_Model_Order::STATE_PROCESSING); $return->setIsCustomerNotified(false); $return->setIsTransactionPending(false); $return->setMessage('Em disputa: o comprador, dentro do prazo de liberação da transação, abriu uma disputa.'); break; case '6': $return->setState(Mage_Sales_Model_Order::STATE_CLOSED); $return->setIsCustomerNotified(false); $return->setIsTransactionPending(false); $return->setMessage('Devolvida: o valor da transação foi devolvido para o comprador.'); break; case '7': $return->setState(Mage_Sales_Model_Order::STATE_CANCELED); $return->setIsCustomerNotified(true); $return->setMessage('Cancelada: a transação foi cancelada sem ter sido finalizada.'); break; default: $return->setIsCustomerNotified(false); $return->setStateChanged(false); $return->setMessage('Codigo de status inválido retornado pelo PagSeguro. (' . $statusCode . ')'); } return $return; }