Beispiel #1
0
 public function index()
 {
     $carts = \App\Cart::whereUserId($this->user()->id)->get();
     if (!count($carts)) {
         return redirect(route('home.index'));
     }
     return view('site.cart.index', compact('carts'));
 }
 public function complete(Request $request)
 {
     $carts = \App\Cart::whereUserId($this->user()->id)->get();
     if (!count($carts)) {
         return redirect(route('home.index'));
     }
     $payuResponse = "";
     $order = new \App\Order();
     $order->user_id = $this->user()->id;
     $order->date_time = date('Y-m-d H:i:s');
     $order->save();
     try {
         //documentación
         //http://developers.payulatam.com/es/api/sandbox.html
         //https://github.com/mauricio067/integracion-payu-php
         require_once '../resources/libs/payu/PayU.php';
         //URL de Pagos
         \Environment::setPaymentsCustomUrl("https://stg.api.payulatam.com/payments-api/4.0/service.cgi");
         \PayU::$apiKey = "6u39nqhq8ftd0hlvnjfs66eh8c";
         \PayU::$apiLogin = "******";
         \PayU::$merchantId = "500238";
         \PayU::$language = \SupportedLanguages::ES;
         \PayU::$isTest = true;
         //Parámetros básicos de pago
         $prefix = env('APP_ENV') == 'production' ? 'PED' : 'TEST';
         $parameters = array(\PayUParameters::REFERENCE_CODE => $prefix . str_pad($order->id, 10, '0', STR_PAD_LEFT), \PayUParameters::COUNTRY => \PayUCountries::PE, \PayUParameters::ACCOUNT_ID => "500546", \PayUParameters::CURRENCY => "USD", \PayUParameters::DESCRIPTION => $this->user()->cart_description, \PayUParameters::VALUE => $this->user()->total_cart_amount);
         //Datos tarjeta de crédito
         $parameters[\PayUParameters::INSTALLMENTS_NUMBER] = 1;
         //Número de cuotas
         $parameters[\PayUParameters::PAYER_NAME] = $request->get('name', '');
         //$this->user()->name;
         $parameters[\PayUParameters::CREDIT_CARD_NUMBER] = $request->get('number', '');
         $parameters[\PayUParameters::CREDIT_CARD_EXPIRATION_DATE] = $request->get('expiration', '');
         $parameters[\PayUParameters::CREDIT_CARD_SECURITY_CODE] = $request->get('cvv', '');
         $parameters[\PayUParameters::PROCESS_WITHOUT_CVV2] = false;
         $parameters[\PayUParameters::PAYMENT_METHOD] = 'VISA';
         $payuResponse = \PayUPayments::doAuthorizationAndCapture($parameters);
         if (isset($payuResponse->code) && $payuResponse->code == 'SUCCESS') {
             if (isset($payuResponse->transactionResponse->state) && $payuResponse->transactionResponse->state == 'APPROVED') {
                 if ($this->generateTickets($order, $payuResponse)) {
                     \Mail::queue('email.order', ['order' => $order], function ($message) use($order) {
                         $message->to($order->user->email);
                     });
                     return redirect(route('user.orders'));
                 }
             } else {
                 $order->data = json_encode($payuResponse);
                 $order->status = 'error';
                 $order->save();
                 return redirect(route('checkout.error'))->with('order', $order);
             }
         } else {
             $order->data = json_encode($payuResponse);
             $order->status = 'error';
             $order->save();
             return redirect(route('checkout.error'))->with('order', $order);
         }
     } catch (\Exception $ex) {
         $order->data = $ex->getMessage();
         $order->status = 'error';
         $order->save();
         return redirect(route('checkout.error'))->with('order', $order);
     }
 }