public function returnCredit($order_number, $customer_id, $coupon_id, $credit, $customer_new_credit) { $dynamoClass = new DynamoDb(); $dynamoClass->table(env('DYNAMO_TABLE_PREFIX') . '_customer'); if (isset($coupon_id) && $coupon_id > 0) { CouponCodesRedeemed::where('order_number', '=', $order_number)->where('customer_id', '=', $customer_id)->delete(); } if (isset($credit) && $credit > 0) { Customer::where('id', '=', $customer_id)->increment('credit', $credit); $cus_input['credit'] = (double) $customer_new_credit; $dynamoClass->update($customer_id, $cus_input); } }
protected function removeOrder($input) { $response = array(); $payResponse = array(); $menu_item_ids = array(); $request_time = date('Y-m-d H:i:s'); $customer_current_credit = 0; try { $dynamoClass = new DynamoDb(); $dynamoClass->table(env('DYNAMO_TABLE_PREFIX') . '_customer'); $orderHelper = new OrderHelper(); $order_id = $input['order_id']; $valid_order = Order::where('id', $order_id)->where('order_status', 'Processing')->count(); if (isset($order_id) && $order_id != '' && $valid_order > 0) { //getting the order information by order id $order_data = $orderHelper->getOrderInfo($order_id); list($transaction_id, $order_number, $customer_id, $driver_id, $coupon_id, $market_office_id, $credit, $state_code, $customer_current_credit, $customer_new_credit, $total_amount, $foodjets_meal_plan_id) = $order_data['data']; if (count($order_data['data']) > 0 && $transaction_id != '') { try { $order_data = $order_data['order_data']; if (isset($total_amount) && $total_amount > 0) { File::requireOnce(base_path() . '/vendor/heartlandpayment/Hps.php'); $configHps = new Hps(); $config = new HpsServicesConfig(); $config->secretApiKey = $this->heartlandConfig['secretApiKey']; $config->versionNumber = $this->heartlandConfig['versionNumber']; // this is provided to you during the certification process $config->developerId = $this->heartlandConfig['developerId']; // this is provided to you during the certification process $chargeService = new HpsCreditService($config); try { $paymentGatewayVoidResponse = $chargeService->void($transaction_id); $formatter_void = Formatter::make($paymentGatewayVoidResponse, Formatter::XML); $formattedVoidJsonResponse = $formatter_void->toJson(); $voidDetails = $formatter_void->toArray(); ##store payment response in payment gateway log table $gateway_request = array('transaction_id' => $transaction_id); $orderHelper->paymentLog($gateway_request, $customer_id, $order_id, 'cancel_order', $gateway_request, $voidDetails); ##end if (isset($voidDetails['transactionId'][0]) && $voidDetails['transactionId'][0] != '') { $data = array($driver_id, $foodjets_meal_plan_id, $order_number, $customer_id, $coupon_id, $credit, $customer_new_credit); $todays_driver_list_id = $orderHelper->changeOrderStatus($order_id, $data); $response['status'] = "1"; $response['msg'] = 'Order cancelled successfully.'; ##send cancel order mail $this->sendCancelOrderMail($order_id); ##end } else { $paymentGatewayResponse = $chargeService->refund($total_amount, "usd", $transaction_id, NULL, $order_id); $formatter = Formatter::make($paymentGatewayResponse, Formatter::XML); $formattedResponse = $formatter->toJson(); $transectionDetails = $formatter->toArray(); ##store payment response in payment gateway log table $gateway_request = array('amount' => $total_amount, 'currency' => 'usd', 'cardData' => $transaction_id, 'order_id' => $order_id); $orderHelper->paymentLog($gateway_request, $customer_id, $order_id, 'cancel_order', $gateway_request, $transectionDetails); ##end if (isset($transectionDetails['transactionId'][0]) && $transectionDetails['transactionId'][0] != '') { $data = array($driver_id, $foodjets_meal_plan_id, $order_number, $customer_id, $coupon_id, $credit, $customer_new_credit); $todays_driver_list_id = $orderHelper->changeOrderStatus($order_id, $data); $response['status'] = "1"; $response['msg'] = 'Order cancelled successfully.'; ##send cancel order mail $this->sendCancelOrderMail($order_id); ##end } else { $response['status'] = "0"; $response['msg'] = 'Transaction not approved.'; } } // else end } catch (\Exception $e) { Log::error($e); $response['status'] = "0"; $msg = (array) $e->getMessage(); $response['msg'] = $msg[0]; } } else { $response['status'] = "0"; $response['msg'] = 'Not a valid amount.'; } } catch (\Exception $e) { Log::error($e); $response['status'] = "0"; $msg = (array) $e->getMessage(); $response['msg'] = $msg[0]; } } else { list($transaction_id, $order_number, $customer_id, $driver_id, $coupon_id, $market_office_id, $credit, $state_code, $customer_current_credit, $customer_new_credit, $total_amount, $foodjets_meal_plan_id) = $order_data['data']; $order_data = $order_data['order_data']; $data = array($driver_id, $foodjets_meal_plan_id, $order_number, $customer_id, $coupon_id, $credit, $customer_new_credit); $todays_driver_list_id = $orderHelper->changeOrderStatus($order_id, $data); $response['status'] = "1"; $response['msg'] = 'Order cancelled successfully.'; ##send cancel order mail $this->sendCancelOrderMail($order_id); ##end } ########################## Remove order from redis starts ############################### if ($order_id && isset($order_data->market_office_city_delivery_zone_id)) { $redis = new ApiRedis(); $db = $this->redisDb; $redis->cancelOrderFromRedis($order_id, $order_data->market_office_city_delivery_zone_id, $db); } ########################## Remove order from redis ends ############################### } else { $response['status'] = "0"; $response['msg'] = "Invalid order id or already cancelled or Order not in processing mode."; } $orderHelper->apiLog($order_id, $request_time, $response); } catch (\Exception $e) { Log::error($e); $response['status'] = "0"; $msg = (array) $e->getMessage(); $response['msg'] = $msg[0]; } return $response; }