added canada
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\paypal;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
@@ -32,29 +33,29 @@ class PaypalController extends Controller
|
||||
$paypal_env = "live";
|
||||
$paypal_apiUrl = 'https://api.paypal.com'; // default
|
||||
|
||||
if($paypal_env == 'live'){
|
||||
if ($paypal_env == 'live') {
|
||||
$paypal_apiUrl = 'https://api.paypal.com';
|
||||
}else{
|
||||
} else {
|
||||
$paypal_apiUrl = 'https://api.sandbox.paypal.com';
|
||||
}
|
||||
|
||||
|
||||
$this->_apiContext = PayPal::ApiContext(
|
||||
config('services.paypal_'.$paypal_env.'.client_id'),
|
||||
config('services.paypal_'.$paypal_env.'.secret')
|
||||
config('services.paypal_' . $paypal_env . '.client_id'),
|
||||
config('services.paypal_' . $paypal_env . '.secret')
|
||||
|
||||
// config('services.paypal_live.client_id'),
|
||||
// config('services.paypal_live.secret')
|
||||
);
|
||||
|
||||
|
||||
$this->_apiContext->setConfig(array(
|
||||
$this->_apiContext->setConfig(array(
|
||||
'mode' => $paypal_env,
|
||||
'service.EndPoint' => $paypal_apiUrl,
|
||||
'http.ConnectionTimeOut' => 30,
|
||||
'log.LogEnabled' => true,
|
||||
'log.FileName' => storage_path('logs/paypal.log'),
|
||||
'log.LogLevel' => 'FINE'
|
||||
));
|
||||
));
|
||||
|
||||
// live
|
||||
// $this->_apiContext->setConfig(array(
|
||||
@@ -76,16 +77,36 @@ class PaypalController extends Controller
|
||||
|
||||
public function getCheckout(Request $request)
|
||||
{
|
||||
$UserModel = new UserModel;
|
||||
|
||||
if (Auth::guest()) {
|
||||
|
||||
$message = 'Please <a href="' . url('auth/login') . '">Sign in</a> to your account to proceed.';
|
||||
Session::flash('msg', $message);
|
||||
return Redirect::back();
|
||||
}
|
||||
|
||||
$userId = Auth::user()->id;
|
||||
$array_address_book = $UserModel->selectAddresBook('UserId', $userId);
|
||||
if (count($array_address_book) <= 0) {
|
||||
$message = 'Please add Shipping address.';
|
||||
Session::flash('cartkeyError', $message);
|
||||
return Redirect::back();
|
||||
}
|
||||
|
||||
// $shippingAddress = [
|
||||
// "recipient_name" => $array_address_book[0]->Fullname,
|
||||
// "line1" => $array_address_book[0]->Address,
|
||||
// "line2" => "",
|
||||
// "city" => $array_address_book[0]->City,
|
||||
// "country_code" => $array_address_book[0]->CountryCode,
|
||||
// "postal_code" => $array_address_book[0]->ZipCode,
|
||||
// "state" => $array_address_book[0]->State,
|
||||
// "phone" => $array_address_book[0]->ContactNumber
|
||||
// ];
|
||||
|
||||
|
||||
// $request->session()->forget('cartkey');
|
||||
if(!$request->session()->has('cartkey')){
|
||||
if (!$request->session()->has('cartkey')) {
|
||||
$message = 'Your cart is empty';
|
||||
Session::flash('cartkeyError', $message);
|
||||
return Redirect::back();
|
||||
@@ -94,13 +115,35 @@ class PaypalController extends Controller
|
||||
$payer = PayPal::Payer();
|
||||
$payer->setPaymentMethod('paypal');
|
||||
|
||||
$inputFields = Paypal::InputFields();
|
||||
$inputFields->setAllowNote(true)
|
||||
->setNoShipping(1)
|
||||
->setAddressOverride(0);
|
||||
$webProfile = Paypal::WebProfile();
|
||||
$webProfile->setName("YeowZa! T-Shirt Shop" . uniqid())
|
||||
// ->setPresentation($presentation)
|
||||
->setInputFields($inputFields);
|
||||
|
||||
// $shipping = PayPal::ShippingAddress();
|
||||
// $shipping->setRecipientName($array_address_book[0]->Fullname);
|
||||
// $shipping->setLine1($array_address_book[0]->Address);
|
||||
// $shipping->setCity($array_address_book[0]->City);
|
||||
// $shipping->setCountryCode($array_address_book[0]->CountryCode);
|
||||
// $shipping->setPostalCode($array_address_book[0]->ZipCode);
|
||||
// $shipping->setState($array_address_book[0]->State);
|
||||
// $shipping->setPhone($array_address_book[0]->ContactNumber);
|
||||
|
||||
// $payerInfo = Paypal::PayerInfo();
|
||||
// $payerInfo->setShippingAddress($shipping);
|
||||
// $payer->setPayerInfo($payerInfo);
|
||||
|
||||
$m = new TeamStoreModel;
|
||||
$paypal_model = new PayPalModel;
|
||||
$last_id = $paypal_model->getLastIdPaymentDetails();
|
||||
// var_dump(count($last_id));
|
||||
if(count($last_id) > 0){
|
||||
if (count($last_id) > 0) {
|
||||
$lastId = $last_id[0]->Id + 1;
|
||||
}else{
|
||||
} else {
|
||||
$lastId = 1;
|
||||
}
|
||||
$invoice_num = str_pad($lastId, 6, '0', STR_PAD_LEFT);
|
||||
@@ -108,74 +151,20 @@ class PaypalController extends Controller
|
||||
$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);
|
||||
|
||||
$getSmallItemQty = 0;
|
||||
$getBulkyItemQty = 0;
|
||||
$getMaskItemQty = 0;
|
||||
$getDGSItemQty = 0;
|
||||
$shippingFee = 0;
|
||||
|
||||
$shippingFee = $this->getShippingFee($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") {
|
||||
$getPercentageValue = $totalValue / 100;
|
||||
$getDiscountValue = ($getSubtotal[0]->Subtotal * $getPercentageValue);
|
||||
$data = array(
|
||||
'Price' => round($getDiscountValue * -1, 2)
|
||||
);
|
||||
$tax = $this->getTax($cartKey)['tax'];
|
||||
$order_grandtotal = $this->getTax($cartKey)['order_grandtotal'];
|
||||
|
||||
$m->updateVoucherValueInCart($data, $item_id);
|
||||
} else {
|
||||
$voucherData = array(
|
||||
'totalValue' => $totalValue,
|
||||
'type' => 'Flat'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if($item->ShippingCostId == 1){
|
||||
$getSmallItemQty += $item->Quantity;
|
||||
}else if($item->ShippingCostId == 2){
|
||||
$getBulkyItemQty += $item->Quantity;
|
||||
}else if($item->ShippingCostId == 3){
|
||||
$getMaskItemQty += $item->Quantity;
|
||||
}else if($item->ShippingCostId == 4){
|
||||
$getDGSItemQty += $item->Quantity;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
$getSmallItemQty = ceil($getSmallItemQty / 3) * 8;
|
||||
$getBulkyItemQty = ceil($getBulkyItemQty / 1) * 8;
|
||||
$getMaskItemQty = ceil($getMaskItemQty / 25) * 8;
|
||||
$getDGSItemQty = ceil($getDGSItemQty / 4) * 5;
|
||||
$shippingFee = $getSmallItemQty + $getBulkyItemQty + $getMaskItemQty + $getDGSItemQty;
|
||||
// var_dump($shippingFee);
|
||||
|
||||
$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 || $grouped_item[0]->StoreId == 30 || $grouped_item[0]->StoreId == 141 || $grouped_item[0]->StoreId == 162 || $grouped_item[0]->StoreId == 185 || $grouped_item[0]->StoreId == 244) {
|
||||
$tax_value = 0;
|
||||
} else {
|
||||
$tax_value = 0.10;
|
||||
}
|
||||
|
||||
$tax = $order_grandtotal * $tax_value;
|
||||
|
||||
foreach ($updated_items as $key => $item) {
|
||||
|
||||
@@ -192,6 +181,19 @@ class PaypalController extends Controller
|
||||
|
||||
$item_list = PayPal::ItemList();
|
||||
$item_list->setItems($order_items);
|
||||
|
||||
|
||||
$shipping = PayPal::ShippingAddress();
|
||||
$shipping->setRecipientName($array_address_book[0]->Fullname);
|
||||
$shipping->setLine1($array_address_book[0]->Address);
|
||||
$shipping->setCity($array_address_book[0]->City);
|
||||
$shipping->setCountryCode($array_address_book[0]->CountryCode);
|
||||
$shipping->setPostalCode($array_address_book[0]->ZipCode);
|
||||
$shipping->setState($array_address_book[0]->State);
|
||||
$shipping->setPhone($array_address_book[0]->ContactNumber);
|
||||
$item_list->setShippingAddress($shipping);
|
||||
// var_dump($item_list);
|
||||
|
||||
$amount_details = PayPal::Details();
|
||||
$amount_details->setSubtotal($order_grandtotal);
|
||||
$amount_details->setTax($tax);
|
||||
@@ -212,9 +214,13 @@ class PaypalController extends Controller
|
||||
$redirectUrls = PayPal::RedirectUrls();
|
||||
$redirectUrls->setReturnUrl(route('getDone'));
|
||||
$redirectUrls->setCancelUrl(route('getCancel'));
|
||||
|
||||
// var_dump($shippingAddress)
|
||||
|
||||
$payment = PayPal::Payment();
|
||||
|
||||
var_dump(array($transaction));
|
||||
|
||||
$payment->setExperienceProfileId($this->createWebProfile());
|
||||
$payment->setIntent('sale');
|
||||
$payment->setPayer($payer);
|
||||
$payment->setRedirectUrls($redirectUrls);
|
||||
@@ -253,6 +259,108 @@ class PaypalController extends Controller
|
||||
|
||||
}
|
||||
|
||||
public function getShippingFee($cartKey)
|
||||
{
|
||||
|
||||
$m = new TeamStoreModel;
|
||||
$UserModel = new UserModel;
|
||||
$userId = Auth::user()->id;
|
||||
|
||||
|
||||
$items = $m->myCart($cartKey); // item from cart_tmp
|
||||
$getSubtotal = $m->getSubtotal($cartKey);
|
||||
$getSmallItemQty = 0;
|
||||
$getBulkyItemQty = 0;
|
||||
$getMaskItemQty = 0;
|
||||
$getDGSItemQty = 0;
|
||||
$shippingFee = 0;
|
||||
$CAShippingfee = 0;
|
||||
|
||||
|
||||
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'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if ($item->ShippingCostId == 1) {
|
||||
$getSmallItemQty += $item->Quantity;
|
||||
} else if ($item->ShippingCostId == 2) {
|
||||
$getBulkyItemQty += $item->Quantity;
|
||||
} else if ($item->ShippingCostId == 3) {
|
||||
$getMaskItemQty += $item->Quantity;
|
||||
} else if ($item->ShippingCostId == 4) {
|
||||
$getDGSItemQty += $item->Quantity;
|
||||
}
|
||||
|
||||
$CAShippingfee += $item->Quantity; // for canada
|
||||
}
|
||||
|
||||
$array_address_book = $UserModel->selectAddresBook('UserId', $userId);
|
||||
$countryCode = "";
|
||||
if (count($array_address_book) > 0) {
|
||||
$countryCode = $array_address_book[0]->CountryCode;
|
||||
$CAShippingfee = ceil($CAShippingfee / 2) * 30;
|
||||
}
|
||||
|
||||
$getSmallItemQty = ceil($getSmallItemQty / 3) * 8;
|
||||
$getBulkyItemQty = ceil($getBulkyItemQty / 1) * 8;
|
||||
$getMaskItemQty = ceil($getMaskItemQty / 25) * 8;
|
||||
$getDGSItemQty = ceil($getDGSItemQty / 4) * 5;
|
||||
$shippingFee = $getSmallItemQty + $getBulkyItemQty + $getMaskItemQty + $getDGSItemQty;
|
||||
|
||||
if ($countryCode == "CA") {
|
||||
$shippingFee = $CAShippingfee;
|
||||
}
|
||||
|
||||
return $shippingFee;
|
||||
}
|
||||
|
||||
public function getTax($cartKey)
|
||||
{
|
||||
$m = new TeamStoreModel;
|
||||
$updated_getSubtotal = $m->getSubtotal($cartKey);
|
||||
$grouped_item = $m->selectTeamStoreGroupByCartKey($cartKey);
|
||||
|
||||
if (count($grouped_item) <= 0) {
|
||||
$tax_value = 0;
|
||||
} else {
|
||||
if ($grouped_item[0]->StoreId == 76 || $grouped_item[0]->StoreId == 78 || $grouped_item[0]->StoreId == 111 || $grouped_item[0]->StoreId == 131 || $grouped_item[0]->StoreId == 30 || $grouped_item[0]->StoreId == 141 || $grouped_item[0]->StoreId == 162 || $grouped_item[0]->StoreId == 185 || $grouped_item[0]->StoreId == 244) {
|
||||
$tax_value = 0;
|
||||
} else {
|
||||
$tax_value = 0.10;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$order_grandtotal = $updated_getSubtotal[0]->Subtotal;
|
||||
|
||||
|
||||
|
||||
$tax = $order_grandtotal * $tax_value;
|
||||
|
||||
return [
|
||||
'tax' => $tax,
|
||||
'order_grandtotal' => $order_grandtotal,
|
||||
];
|
||||
}
|
||||
|
||||
public function getDone(Request $request)
|
||||
{
|
||||
$id = $request->get('paymentId');
|
||||
@@ -261,19 +369,19 @@ class PaypalController extends Controller
|
||||
|
||||
try {
|
||||
$payment = PayPal::getById($id, $this->_apiContext);
|
||||
|
||||
|
||||
$paymentExecution = PayPal::PaymentExecution();
|
||||
|
||||
|
||||
$paymentExecution->setPayerId($payer_id);
|
||||
$executePayment = $payment->execute($paymentExecution, $this->_apiContext);
|
||||
$obj = json_decode($executePayment);
|
||||
|
||||
// var_dump($obj);
|
||||
} catch (PayPalConnectionException $e) {
|
||||
//throw $th;
|
||||
// echo $e->getCode();
|
||||
echo $e->getData();
|
||||
Session::put('cartkeyError','Invalid payment.');
|
||||
return Redirect::route('cart');
|
||||
Session::put('cartkeyError', 'Invalid payment.');
|
||||
return Redirect::route('cart');
|
||||
}
|
||||
|
||||
|
||||
@@ -287,8 +395,9 @@ class PaypalController extends Controller
|
||||
// // return Redirect::route('paywithpaypal');
|
||||
// echo 'Payment success';
|
||||
// }
|
||||
|
||||
|
||||
// var_dump($obj->payer->payer_info->shipping_address);
|
||||
// var_dump($obj->transactions[0]->item_list->shipping_address);
|
||||
|
||||
$line2 = null;
|
||||
|
||||
@@ -330,9 +439,6 @@ class PaypalController extends Controller
|
||||
$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,
|
||||
@@ -471,4 +577,47 @@ class PaypalController extends Controller
|
||||
|
||||
return redirect()->route('cart');
|
||||
}
|
||||
}
|
||||
|
||||
public function createWebProfile()
|
||||
{
|
||||
$UserModel = new UserModel;
|
||||
$userId = Auth::user()->id;
|
||||
$array_address_book = $UserModel->selectAddresBook('UserId', $userId);
|
||||
if (count($array_address_book) <= 0) {
|
||||
$message = 'Please add Shipping address.';
|
||||
Session::flash('cartkeyError', $message);
|
||||
return Redirect::back();
|
||||
}
|
||||
|
||||
// $shippingAddress = [
|
||||
// "recipient_name" => ,
|
||||
|
||||
$flowConfig = PayPal::FlowConfig();
|
||||
$presentation = PayPal::Presentation();
|
||||
$inputFields = PayPal::InputFields();
|
||||
$webProfile = PayPal::WebProfile();
|
||||
|
||||
|
||||
// $presentation->setLogoImage("https://www.crewsportswear.com/beta/public/images/logo.png")->setBrandName("Merchbay"); //NB: Paypal recommended to use https for the logo's address and the size set to 190x60.
|
||||
$presentation->setBrandName("Merchbay"); //NB: Paypal recommended to use https for the logo's address and the size set to 190x60.
|
||||
|
||||
if ($array_address_book[0]->CountryCode == "CA") {
|
||||
$flowConfig->setLandingPageType("Billing"); //Set the page type
|
||||
$inputFields->setAllowNote(true)->setAddressOverride(1);
|
||||
} else {
|
||||
$inputFields->setAllowNote(true)->setAddressOverride(0);
|
||||
}
|
||||
|
||||
|
||||
$webProfile->setName("Merchbay " . uniqid())
|
||||
->setFlowConfig($flowConfig)
|
||||
// Parameters for style and presentation.
|
||||
->setPresentation($presentation)
|
||||
// Parameters for input field customization.
|
||||
->setInputFields($inputFields);
|
||||
|
||||
$createProfileResponse = $webProfile->create($this->_apiContext);
|
||||
|
||||
return $createProfileResponse->getId(); //The new webprofile's id
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user