use Fototea\Models\PaymentManager; use Fototea\Models\Payment; use Fototea\Models\Product; use Fototea\Models\PuntoPagos; use Fototea\Models\OrderProduct; use Fototea\Util\UrlHelper; $file = 'pagoexito.txt'; $content = "-----------------------------------------------------------------------------------------"; $content .= "\nGET\n"; $content .= json_encode($_GET); $content .= "\n\nPOST\n"; $content .= json_encode($_POST); $content .= "\n\n"; //file_put_contents($file, $content, FILE_APPEND); $token = $app->getRequest()->get('token'); $paymentMethod = new PaymentManager($app, PuntoPagos::PAYMENT_METHOD_TYPE); $paymentMethod->loadByGatewayId($token); if ($paymentMethod->getStatus() === Payment::PAYMENT_STATUS_APPROVED) { $products = OrderProduct::getProductsByOrderId($paymentMethod->getOrderId()); if (empty($products)) { //TODO correo aqui //TODO log $processResult = 99; } foreach ($products as $product) { //Aplicar cambios segun cada producto if ($product->id == Product::PRODUCT_ADJUDICAR_ID) { $productData = json_decode($product->data); $msg = 'El proyecto ha sido adjudicado de forma exitosa. <a href="' . UrlHelper::getProjectUrl($productData->project_id) . '">Ir al proyecto</a>'; } }
$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; } } else { $app->redirect($app->getConfig()->getUrl('perfil')); }
$content .= DateHelper::getCurrentDateTime(); $content .= "-----------------------------------------------------------------------------------------\n"; $content .= "\nGET\n"; $content .= json_encode($_GET); $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