diff --git a/app/Http/Controllers/EventCheckoutController.php b/app/Http/Controllers/EventCheckoutController.php index e44995f3..78db39b2 100644 --- a/app/Http/Controllers/EventCheckoutController.php +++ b/app/Http/Controllers/EventCheckoutController.php @@ -23,13 +23,12 @@ use Redirect; use Request; use Response; use Session; -use Stripe; -use Stripe_Charge; -use Stripe_Customer; use Validator; use View; use Omnipay; + + class EventCheckoutController extends Controller { protected $is_embedded; @@ -474,4 +473,12 @@ class EventCheckoutController extends Controller return View::make('Public.ViewEvent.Partials.PDFTicket', $data); } + + public function handleStripePayment() { + + } + public function handlePaypalPayment() { + + } + } diff --git a/app/Http/Controllers/EventOrdersController.php b/app/Http/Controllers/EventOrdersController.php index 16f8ca86..213a68b1 100644 --- a/app/Http/Controllers/EventOrdersController.php +++ b/app/Http/Controllers/EventOrdersController.php @@ -12,10 +12,9 @@ use Input; use Log; use Mail; use Response; -use Stripe; -use Stripe_Charge; use Validator; use View; +use Omnipay; class EventOrdersController extends MyBaseController { @@ -41,10 +40,10 @@ class EventOrdersController extends MyBaseController $orders = $event->orders() ->where(function ($query) use ($searchQuery) { - $query->where('order_reference', 'like', $searchQuery.'%') - ->orWhere('first_name', 'like', $searchQuery.'%') - ->orWhere('email', 'like', $searchQuery.'%') - ->orWhere('last_name', 'like', $searchQuery.'%'); + $query->where('order_reference', 'like', $searchQuery . '%') + ->orWhere('first_name', 'like', $searchQuery . '%') + ->orWhere('email', 'like', $searchQuery . '%') + ->orWhere('last_name', 'like', $searchQuery . '%'); }) ->orderBy($sort_by, $sort_order) ->paginate(); @@ -53,11 +52,11 @@ class EventOrdersController extends MyBaseController } $data = [ - 'orders' => $orders, - 'event' => $event, - 'sort_by' => $sort_by, + 'orders' => $orders, + 'event' => $event, + 'sort_by' => $sort_by, 'sort_order' => $sort_order, - 'q' => $searchQuery ? $searchQuery : '', + 'q' => $searchQuery ? $searchQuery : '', ]; return View::make('ManageEvent.Orders', $data); @@ -66,7 +65,7 @@ class EventOrdersController extends MyBaseController public function manageOrder($order_id) { $data = [ - 'order' => Order::scope()->find($order_id), + 'order' => Order::scope()->find($order_id), 'modal_id' => Input::get('modal_id'), ]; @@ -78,10 +77,10 @@ class EventOrdersController extends MyBaseController $order = Order::scope()->find($order_id); $data = [ - 'order' => $order, - 'event' => $order->event(), + 'order' => $order, + 'event' => $order->event(), 'attendees' => $order->attendees()->withoutCancelled()->get(), - 'modal_id' => Input::get('modal_id'), + 'modal_id' => Input::get('modal_id'), ]; return View::make('ManageEvent.Modals.CancelOrder', $data); @@ -105,7 +104,7 @@ class EventOrdersController extends MyBaseController if ($validator->fails()) { return Response::json([ - 'status' => 'error', + 'status' => 'error', 'messages' => $validator->messages()->toArray(), ]); } @@ -127,68 +126,80 @@ class EventOrdersController extends MyBaseController } elseif ($order->organiser_amount == 0) { $error_message = 'Nothing to refund'; } elseif ($refund_amount > ($order->organiser_amount - $order->amount_refunded)) { - $error_message = 'The maximum amount you can refund is '.(money($order->organiser_amount - $order->amount_refunded, $order->event->currency->code)); + $error_message = 'The maximum amount you can refund is ' . (money($order->organiser_amount - $order->amount_refunded, $order->event->currency->code)); } if (!$error_message) { + # @todo - remove the code repetition here try { - Stripe::setApiKey($order->account->stripe_api_key); - $charge = Stripe_Charge::retrieve($order->transaction_id); + + $gateway = Omnipay::gateway('stripe'); + + $gateway->initialize([ + 'apiKey' => $order->account->stripe_api_key + ]); if ($refund_type === 'full') { /* Full refund */ $refund_amount = $order->organiser_amount - $order->amount_refunded; - $refund = $charge->refund([ - 'refund_application_fee' => floatval($order->booking_fee) > 0 ? true : false, + + $request = $gateway->refund([ + 'transactionReference' => $order->transaction_id, + 'amount' => $refund_amount, + 'refundApplicationFee' => floatval($order->booking_fee) > 0 ? true : false ]); - /* Update the event sales volume*/ - $order->event->decrement('sales_volume', $refund_amount); + $response = $request->send(); - $order->is_refunded = 1; - $order->amount_refunded = $order->organiser_amount; - $order->order_status_id = config('attendize.order_refunded'); - } else { /* Partial refund */ + if ($response->isSuccessful()) { + /* Update the event sales volume*/ + $order->event->decrement('sales_volume', $refund_amount); - $refund = $charge->refund([ - 'amount' => $refund_amount * 100, - 'refund_application_fee' => floatval($order->booking_fee) > 0 ? true : false, - ]); - - /* Update the event sales volume*/ - $order->event->decrement('sales_volume', $refund_amount); - - $order->order_status_id = config('attendize.order_partially_refunded'); - - if (($order->organiser_amount - $order->amount_refunded) == 0) { $order->is_refunded = 1; + $order->amount_refunded = $order->organiser_amount; $order->order_status_id = config('attendize.order_refunded'); + } else { + $error_message = $response->getMessage(); + } + + + } else { /* Partial refund */ + + $refund = $gateway->refund([ + 'transactionReference' => $order->transaction_id, + 'amount' => floatval($refund_amount), + 'refundApplicationFee' => floatval($order->booking_fee) > 0 ? true : false, + ]); + + $response = $refund->send(); + + if ($response->isSuccessful()) { + /* Update the event sales volume*/ + $order->event->decrement('sales_volume', $refund_amount); + + $order->order_status_id = config('attendize.order_partially_refunded'); + + if (($order->organiser_amount - $order->amount_refunded) == 0) { + $order->is_refunded = 1; + $order->order_status_id = config('attendize.order_refunded'); + } + + $order->is_partially_refunded = 1; + } else { + $error_message = $response->getMessage(); } - $order->is_partially_refunded = 1; } - $order->amount_refunded = round($refund->amount_refunded / 100, 2); + $order->amount_refunded = round(($order->amount_refunded + $refund_amount), 2); $order->save(); - } catch (\Stripe_InvalidRequestError $e) { + } catch (\Exeption $e) { Log::error($e); $error_message = 'There has been a problem processing your refund. Please check your information and try again.'; - } catch (\Stripe_AuthenticationError $e) { - Log::error($e); - $error_message = 'There has been a problem processing your refund. Please try again.'; - } catch (\Stripe_ApiConnectionError $e) { - Log::error($e); - $error_message = 'There has been a problem processing your refund. Please try again.'; - } catch (\Stripe_Error $e) { - Log::error($e); - $error_message = 'There has been a problem processing your refund. Please try again.'; - } catch (Exception $e) { - Log::error($e); - $error_message = 'There has been a problem processing your refund. Please try again.'; } } if ($error_message) { return Response::json([ - 'status' => 'success', + 'status' => 'success', 'message' => $error_message, ]); } @@ -206,10 +217,10 @@ class EventOrdersController extends MyBaseController } \Session::flash('message', - (!$refund_amount && !$attendees) ? 'Nothing To Do' : 'Successfully '.($refund_order ? ' Refunded Order' : ' ').($attendees && $refund_order ? ' & ' : '').($attendees ? 'Cancelled Attendee(s)' : '')); + (!$refund_amount && !$attendees) ? 'Nothing To Do' : 'Successfully ' . ($refund_order ? ' Refunded Order' : ' ') . ($attendees && $refund_order ? ' & ' : '') . ($attendees ? 'Cancelled Attendee(s)' : '')); return Response::json([ - 'status' => 'success', + 'status' => 'success', 'redirectUrl' => '', ]); } @@ -222,9 +233,9 @@ class EventOrdersController extends MyBaseController { $event = Event::scope()->findOrFail($event_id); - Excel::create('orders-as-of-'.date('d-m-Y-g.i.a'), function ($excel) use ($event) { + Excel::create('orders-as-of-' . date('d-m-Y-g.i.a'), function ($excel) use ($event) { - $excel->setTitle('Orders For Event: '.$event->title); + $excel->setTitle('Orders For Event: ' . $event->title); // Chain the setters $excel->setCreator(config('attendize.app_name')) @@ -268,8 +279,8 @@ class EventOrdersController extends MyBaseController $order = Order::scope()->findOrFail($order_id); $data = [ - 'order' => $order, - 'event' => $order->event, + 'order' => $order, + 'event' => $order->event, 'modal_id' => Input::get('modal_id'), ]; @@ -287,7 +298,7 @@ class EventOrdersController extends MyBaseController if ($validator->fails()) { return Response::json([ - 'status' => 'error', + 'status' => 'error', 'messages' => $validator->messages()->toArray(), ]); } @@ -295,11 +306,11 @@ class EventOrdersController extends MyBaseController $order = Attendee::scope()->findOrFail($order_id); $data = [ - 'order' => $order, + 'order' => $order, 'message_content' => Input::get('message'), - 'subject' => Input::get('subject'), - 'event' => $order->event, - 'email_logo' => $order->event->organiser->full_logo_path, + 'subject' => Input::get('subject'), + 'event' => $order->event, + 'email_logo' => $order->event->organiser->full_logo_path, ]; Mail::send('Emails.messageOrder', $data, function ($message) use ($order, $data) { @@ -315,12 +326,12 @@ class EventOrdersController extends MyBaseController $message->to($order->event->organiser->email) ->from(config('attendize.outgoing_email_noreply'), $order->event->organiser->name) ->replyTo($order->event->organiser->email, $order->event->organiser->name) - ->subject($data['subject'].' [Organiser copy]'); + ->subject($data['subject'] . ' [Organiser copy]'); }); } return Response::json([ - 'status' => 'success', + 'status' => 'success', 'message' => 'Message Successfully Sent', ]); } diff --git a/composer.json b/composer.json index 49e229dc..14d7ea92 100644 --- a/composer.json +++ b/composer.json @@ -9,7 +9,6 @@ "laravel/framework": "5.1.20", "illuminate/html": "~5.0", "milon/barcode": "dev-master", - "stripe/stripe-php": "1.*", "iron-io/iron_mq": "2.*", "intervention/image": "dev-master", "nitmedia/wkhtml2pdf": "dev-master",