_apiContext = PayPal::ApiContext( config('services.paypal.client_id'), config('services.paypal.secret')); /* $this->_apiContext->setConfig(array( 'mode' => 'sandbox', 'service.EndPoint' => 'https://api.sandbox.paypal.com', 'http.ConnectionTimeOut' => 30, 'log.LogEnabled' => true, 'log.FileName' => storage_path('logs/paypal.log'), 'log.LogLevel' => 'FINE' )); */ // live $this->_apiContext->setConfig(array( 'mode' => 'live', 'service.EndPoint' => 'https://api.paypal.com', 'http.ConnectionTimeOut' => 30, 'log.LogEnabled' => true, 'log.FileName' => storage_path('logs/paypal.log'), 'log.LogLevel' => 'FINE' )); } public function payPremium() { return view('payPremium'); } public function getCheckout(Request $request) { if(Auth::guest()){ $message = 'Please Sign in to your account to proceed.'; Session::flash('msg', $message); return Redirect::back(); } $payer = PayPal::Payer(); $payer->setPaymentMethod('paypal'); $m = new TeamStoreModel; $paypal_model = new PayPalModel; $last_id = $paypal_model->getLastIdPaymentDetails(); $invoice_num = str_pad($last_id[0]->Id, 4,'0',STR_PAD_LEFT); $cartKey = $request->session()->get('cartkey'); $items = $m->myCart($cartKey); $getSubtotal = $m->getSubtotal($cartKey); $grouped_item = $m->selectTeamStoreGroupByCartKey($cartKey); $store_array = $m->selectTeamStore('Id', $grouped_item[0]->StoreId); foreach($items as $item){ if($item->VoucherId != null){ $voucherIds[] = $item->VoucherId; $voucher = $m->selectVoucherWhereIn($voucherIds); $item_id = $item->Id; $totalValue = $voucher[0]->VoucherValue; if($voucher[0]->VoucherType == "Percentage"){ $getPercentageValue = $totalValue / 100; $getDiscountValue = ($getSubtotal[0]->Subtotal * $getPercentageValue); $data = array( 'Price' => round($getDiscountValue * -1, 2) ); $m->updateVoucherValueInCart($data, $item_id); }else{ $voucherData = array( 'totalValue'=> $totalValue, 'type'=>'Flat' ); } } } $order_items = array(); $updated_items = $m->myCart($cartKey); $updated_getSubtotal = $m->getSubtotal($cartKey); // $order_subtotal = $updated_getSubtotal[0]->Subtotal; $order_grandtotal = $updated_getSubtotal[0]->Subtotal; if($grouped_item[0]->StoreId == 76 || $grouped_item[0]->StoreId == 78 || $grouped_item[0]->StoreId == 111 || $grouped_item[0]->StoreId == 131){ $tax_value = 0; }else{ $tax_value = 0.10; } $tax = $order_grandtotal * $tax_value; foreach($updated_items as $key => $item){ // $descriptions = "Name: " . $item->Name . " Number: " . $item->Number . " Size: " . $item->Size;"?" $order_items[$key] = PayPal::Item(); $order_items[$key]->setName($item->ProductName); $order_items[$key]->setCurrency($store_array[0]->StoreCurrency); $order_items[$key]->setQuantity($item->Quantity); // $order_items[$key]->setDescription($descriptions); // $order_items[$key]->setTax(10); $order_items[$key]->setPrice($item->Price); } $item_list = PayPal::ItemList(); $item_list->setItems($order_items); $amount_details = PayPal::Details(); $amount_details->setSubtotal($order_grandtotal); $amount_details->setTax($tax); $amount = PayPal::Amount(); $amount->setCurrency($store_array[0]->StoreCurrency); $amount->setDetails($amount_details); $amount->setTotal($order_grandtotal + $tax); $transaction = PayPal::Transaction(); $transaction->setAmount($amount); $transaction->setItemList($item_list); // $transaction->setDescription('Your transaction description'); $transaction->setInvoiceNumber(date('Ymd') . '-' . $invoice_num); $redirectUrls = PayPal:: RedirectUrls(); $redirectUrls->setReturnUrl(route('getDone')); $redirectUrls->setCancelUrl(route('getCancel')); $payment = PayPal::Payment(); $payment->setIntent('sale'); $payment->setPayer($payer); $payment->setRedirectUrls($redirectUrls); $payment->setTransactions(array($transaction)); $response = $payment->create($this->_apiContext); $redirectUrl = $response->links[1]->href; return redirect()->to( $redirectUrl ); } public function getDoneTest() { // $paymentId= "PAY-66Y799521H279203PLOP2X4Y"; // $payment = PayPal::getById($paymentId, $this->_apiContext); // $obj = json_decode($payment); // // var_dump($obj); // $total = $obj->transactions[0]->amount->total; // $currency = $obj->transactions[0]->amount->currency; // $invoice_number = $obj->transactions[0]->invoice_number; // return view('paypal.get_done') // ->with('currency', $currency) // ->with('total', $total); // try { // $invoice = PayPal::Invoice(); // echo $number = $invoice->generateNumber($this->_apiContext); // } catch (Exception $ex) { // echo $ex; // } } public function getDone(Request $request) { $id = $request->get('paymentId'); $token = $request->get('token'); $payer_id = $request->get('PayerID'); $payment = PayPal::getById($id, $this->_apiContext); $paymentExecution = PayPal::PaymentExecution(); $paymentExecution->setPayerId($payer_id); $executePayment = $payment->execute($paymentExecution, $this->_apiContext); // print_r($executePayment); // if ($executePayment->getState() == 'approved') { // /** it's all right **/ // /** Here Write your database logic like that insert record or value in database if you want **/ // // \Session::put('success','Payment success'); // // return Redirect::route('paywithpaypal'); // echo 'Payment success'; // } $obj = json_decode($executePayment); $line2 = null; //details $total = $obj->transactions[0]->amount->total; $sub_total = $obj->transactions[0]->amount->details->subtotal; $tax = $obj->transactions[0]->amount->details->tax; $currency = $obj->transactions[0]->amount->currency; $invoice_number = $obj->transactions[0]->invoice_number; //shipping address details $recipient_name = $obj->transactions[0]->item_list->shipping_address->recipient_name; $line1 = $obj->transactions[0]->item_list->shipping_address->line1; if(isset($obj->transactions[0]->item_list->shipping_address->line2)){ $line2 = $obj->transactions[0]->item_list->shipping_address->line2; } $city = $obj->transactions[0]->item_list->shipping_address->city; $state = $obj->transactions[0]->item_list->shipping_address->state; $postal_code = $obj->transactions[0]->item_list->shipping_address->postal_code; $country_code = $obj->transactions[0]->item_list->shipping_address->country_code; // payer info $payment_method = $obj->payer->payment_method; $email = $obj->payer->payer_info->email; $first_name = $obj->payer->payer_info->first_name; $last_name = $obj->payer->payer_info->last_name; $_payer_id = $obj->payer->payer_info->payer_id; /// end paypal codes $paypal_model = new PayPalModel; $m = new TeamStoreModel; $cartKey = $request->session()->get('cartkey'); $userId = Auth::user()->id; $user_email = Auth::user()->email; $items = $m->myCart($cartKey); // item from cart_tmp $getSubtotal = $m->getSubtotal($cartKey); $payment_details = array( 'UserId' => $userId, 'CartKey' => $cartKey, 'PaymentId' => $id, 'Token' => $token, 'PayerId' => $payer_id, 'InvoiceNumber' => $invoice_number, 'Currency' => $currency, 'Total' => $total, 'SubTotal' => $sub_total, 'Tax' => $tax, 'Payer_Email' => $email, 'Payer_Firstname' => $first_name, 'Payer_Lastname' => $last_name, 'PaymentMethod' =>$payment_method ); $p_id = $paypal_model->insertToPaypalDetails($payment_details); $shipping_address = array( 'PaymentDetail_Id' => $p_id, 'recipient_name' => $recipient_name, 'line1' => $line1, 'line2' => $line2, 'city' => $city, 'state' => $state, 'postal_code' => $postal_code, 'country_code' => $country_code, ); // iinsert shipping address $paypal_model->insertShippingAddress($shipping_address); // insert order from cart_tmp to orders table $l = $paypal_model->insertToOrders($cartKey); // insert to orders table //email sending $newUserModel = new UserModel; $order_item_array = $newUserModel->selectOrderItem($cartKey); $item_goup_array = $newUserModel->itemGroup($cartKey); $item_thumbs = $newUserModel->selectDisplayItemThumb(); $array_payment_details = $newUserModel->selectPaymentDetails('CartKey', $cartKey); $array_storename = $newUserModel->selectTeamStoreName($cartKey); // email subject foreach($array_storename as $storname){ $sName[] = $storname->StoreName; $sid[] = $storname->Id; } $sName = implode (", ", $sName); $user_loginsArray = $newUserModel->selectUserLoginsWhereIn($sid); foreach($user_loginsArray as $userdata){ $other_email[] = $userdata->other_email; } if($other_email[0] != null){ $other_email = implode (", ", $other_email); $email_cc = "orders@crewsportswear.com" . "," . $other_email; }else{ $email_cc = "orders@crewsportswear.com"; } $explode_other_email = explode(",", $email_cc); $data = array( 'order_item_array' => $order_item_array, 'item_goup_array' => $item_goup_array, 'img_thumb' => $item_thumbs, 'array_payment_details' => $array_payment_details, 'receiver' => $user_email, 'email_cc' => $explode_other_email, 'subject' => $sName . ' ORDERS', ); Mail::send('emails.orders', $data, function($message) use ($data) { $message->from('no-reply@crewsportswear.com', 'CREW Sportswear'); $message->bcc($data['email_cc'], 'Orders From CREW Sportswear'); $message->to($data['receiver'])->subject($data['subject']); }); // end email sending $request->session()->forget('cartkey'); // clear session for cartkey // redirect to thank you page. return view('paypal.get_done') ->with('currency', $currency) ->with('total', $total); } public function getCancel(Request $request) { $m = new TeamStoreModel; $cartKey = $request->session()->get('cartkey'); $items = $m->myCart($cartKey); $getSubtotal = $m->getSubtotal($cartKey); foreach($items as $item){ if($item->VoucherId != null){ $voucherIds[] = $item->VoucherId; $voucher = $m->selectVoucherWhereIn($voucherIds); $item_id = $item->Id; $totalValue = $voucher[0]->VoucherValue; if($voucher[0]->VoucherType == "Percentage"){ $data = array( 'Price' => '00.00' ); $m->updateVoucherValueInCart($data, $item_id); }else{ $voucherData = array( 'totalValue'=> $totalValue, 'type'=>'Flat' ); } } } return redirect()->route('cart'); } }