added canada

This commit is contained in:
franknstayn
2021-10-06 06:05:04 +08:00
parent f2043a2e0a
commit 0e534ad723
13 changed files with 3521 additions and 2470 deletions

View File

@@ -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
}
}

View File

@@ -191,8 +191,8 @@ class TeamStoreController extends Controller
alert("Invalid Password");
window.history.back();
</script>';
// return redirect('cart');
// return redirect('cart');
// return redirect('/');
}
}
@@ -586,6 +586,14 @@ class TeamStoreController extends Controller
{
$m = new TeamStoreModel;
$UserModel = new UserModel;
$userId = Auth::user()->id;
$array_address_book = $UserModel->selectAddresBook('UserId', $userId);
if (count($array_address_book) <= 0) {
$array_address_book = null;
}
$cartKey = $request->session()->get('cartkey');
$items = $m->myCart($cartKey);
$getSubtotal = $m->getSubtotal($cartKey);
@@ -639,13 +647,26 @@ class TeamStoreController extends Controller
} else {
$finalSubTotal = $getSubtotal[0]->Subtotal;
}
if($cartKey != null) {
$shippingFee = app(\App\Http\Controllers\paypal\PaypalController::class)->getShippingFee($cartKey);
$tax = app(\App\Http\Controllers\paypal\PaypalController::class)->getTax($cartKey);
}else{
$shippingFee = 0;
$tax = [];
}
return view('merchbay.cart')
->with('item_group', $items_group)
->with('row', $items)
->with('img_thumb', $item_thumbs)
->with('getSubtotal', $finalSubTotal)
->with('store_array', $store_array);
->with('store_array', $store_array)
->with('store_array', $store_array)
->with('shipping_fee', $shippingFee)
->with('tax', $tax)
->with('address_book', $array_address_book);
}
public function addVoucher(Request $request)
@@ -818,10 +839,11 @@ class TeamStoreController extends Controller
$m = new TemplatesModel;
$data = $m->selectAllTemplate();
return view('merchbay.templates')
->with('row', $data);
->with('row', $data);
}
public function contactUsSend(Request $request) {
public function contactUsSend(Request $request)
{
$post = $request->all();
$post['captcha'] = $this->captchaCheck();
@@ -850,7 +872,7 @@ class TeamStoreController extends Controller
$message = '
<div class="alert alert-danger alert-dismissible fade show" role="alert">
<strong>Error!</strong>' . $errors .
'<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
'<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>';
Session::flash('contactUserError', $message);
return Redirect::back();
@@ -861,11 +883,11 @@ class TeamStoreController extends Controller
'emailAddress' => $post['emailAddress'],
'msg' => $post['message'],
'receiver' => 'orders@merchbay.com',
'email_cc' => ['webmaster@merchbay.com','angelo@merchbay.com'],
'email_cc' => ['webmaster@merchbay.com', 'angelo@merchbay.com'],
'subject' => 'Merchbay - Contact Us Page',
);
Mail::send('emails.contact_us', $data, function ($msg) use ($data) {
Mail::send('emails.contact_us', $data, function ($msg) use ($data) {
$msg->from('support@merchbay.com', 'Merchbay Contact Us Page');
$msg->bcc($data['email_cc'], 'Merchbay Contact Us Page');
$msg->to($data['receiver'])->subject($data['subject']);
@@ -874,7 +896,7 @@ class TeamStoreController extends Controller
$contactUsUrl = url('/contact-us');
echo '<script>
alert("Your message is successfully sent.");
window.location = "'. $contactUsUrl .'"
window.location = "' . $contactUsUrl . '"
</script>';
}
}
}

View File

@@ -81,7 +81,9 @@ class UserController extends Controller {
'Address' => $post['address'],
'State' => $post['state'],
'City' => $post['city'],
'ZipCode' => $post['zipcode']
'ZipCode' => $post['zipcode'],
'CountryCode' => $post['countryCode'],
'Country' => $post['country']
);
echo $i = $m->insertAddressBook($data);
@@ -118,7 +120,9 @@ class UserController extends Controller {
'Address' => $post['address'],
'State' => $post['state'],
'City' => $post['city'],
'ZipCode' => $post['zipcode']
'ZipCode' => $post['zipcode'],
'CountryCode' => $post['countryCode'],
'Country' => $post['country']
);
echo $i = $m->saveUpdateAddressBook($data, $id);
@@ -937,7 +941,7 @@ class UserController extends Controller {
}
$data = array(
'StoreUrl' => $store_url,
// 'StoreUrl' => $store_url,
// 'ImageFolder' => $store_url,
'Password' => $store_password,
'HashId' => md5($store_url),
@@ -1183,5 +1187,13 @@ class UserController extends Controller {
// $response = $UserModel->updateAnnouncement($getAnnouncement[0]->Id, $data);
}
function getAddressBook() {
$UserModel = new UserModel;
$userId = Auth::user()->id;
$array_address_book = $UserModel->selectAddresBook('UserId', $userId);
return $array_address_book;
}
}