$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; }