public function updateStatus() { if (!$this->payment) { return false; } $order = Order::getOrder($this->payment->order_id); // Retrieve transaction from gateway $result = $this->method->getTransaction($this->payment->gateway_id, $this->payment->order_id, $order->total); if ($result->success) { $this->payment->set('status', Payment::PAYMENT_STATUS_APPROVED); } else { if ($result->status == 'incompleted') { $this->payment->set('status', Payment::PAYMENT_STATUS_INCOMPLETED); } else { $this->payment->set('status', Payment::PAYMENT_STATUS_REJECTED); } } $this->payment->save(); }
$total = $cart->getSubtotal(); // Validate products if (empty($items)) { $app->addError("Ha ocurrido un error con los productos intentando procesar su método de pago"); $app->redirect($app->getConfig()->getUrl('metodopago')); return; } // Validate payment method selected $paymentMethod = $app->getRequest()->post('payment_method'); if ($paymentMethod != PuntoPagos::PAYMENT_METHOD_TYPE && $paymentMethod != Deposit::PAYMENT_METHOD_TYPE && $paymentMethod != Transfer::PAYMENT_METHOD_TYPE) { $app->addError("Debe seleccionar un método de pago válido"); $app->redirect($app->getConfig()->getUrl('metodopago')); return; } // Create Order $order = Order::create($currentUser->id, $total); // Create OrderProduct OrderProduct::create($order->id, $items); // Create Payment $paymentManager = new PaymentManager($app, $paymentMethod); $result = $paymentManager->createPayment($order); if ($result->success == false) { $app->addError("Ha ocurrido un error intentando procesar la transacción con el método de pago"); $app->redirect($app->getConfig()->getUrl('metodopago')); return; } // TODO: Clear cart $app->getCart()->clear(); $app->redirect($result->redirectUrl); return; }
$content .= "\n\nPOST\n"; $content .= json_encode($_POST); $content .= "\n\n"; //file_put_contents($file, $content, FILE_APPEND); // END - ONLY FOR TEST PURPOSES $token = $app->getRequest()->get('token'); $processResult = 00; if (empty($token)) { $processResult = 99; } else { //TODO falta validar la firma.... $paymentMethod = new PaymentManager($app, PuntoPagos::PAYMENT_METHOD_TYPE); $paymentMethod->loadByGatewayId($token); $paymentMethod->updateStatus(); $orderId = $paymentMethod->getOrderId(); $order = Order::getOrder($orderId); if ($paymentMethod->getStatus() == Payment::PAYMENT_STATUS_APPROVED) { $order->set('status', Order::ORDER_STATUS_COMPLETED); } else { $order->set('status', Order::ORDER_STATUS_FAILED); } $order->save(); if ($paymentMethod->getStatus() == Payment::PAYMENT_STATUS_APPROVED) { //Sacar order products $products = OrderProduct::getProductsByOrderId($order->id); if (empty($products)) { //TODO correo aqui //TODO log $processResult = 99; } foreach ($products as $product) {