コード例 #1
0
 public function getAgencyPaymentDone(Request $request)
 {
     if (!\Session::has('_temp_payment_sess')) {
         return redirect(url('agency'))->with('flashMessage', ['class' => 'danger', 'message' => 'Your session has expired, please try again.']);
     }
     $data = session('_temp_payment_sess');
     $id = $request->get('paymentId');
     $token = $request->get('token');
     $payer_id = $request->get('PayerID');
     $payment = PayPal::getById($id, $this->paypalApiContext);
     $paymentExecution = PayPal::PaymentExecution();
     $paymentExecution->setPayerId($payer_id);
     $executePayment = $payment->execute($paymentExecution, $this->paypalApiContext);
     $agency = \Agency::getAgency();
     try {
         switch ($data['type']) {
             case 'credit':
                 \Agency::updateCredit($agency, $data['xCreditAmount']);
                 break;
             case 'contract':
                 \Agency::updateVIP($agency, true);
                 break;
             default:
                 break;
         }
         session(['_sess_agency' => ['model' => $agency]]);
         \Session::forget('_temp_payment_sess');
     } catch (\Exception $e) {
         // TODO: Need better error handler
         // re-run try with queue?
         \Session::forget('_temp_payment_sess');
         return redirect(url('agency'))->with('flashMessage', ['class' => 'danger', 'message' => $e->getMessage()]);
     }
     return redirect(url('agency'))->with('flashMessage', ['class' => 'success', 'message' => $data['successMessage']]);
 }