To add a PayPal integration on website for that we need to add the PayPal account in the NetSuite the steps are there in the NetSuite help sender please refer those after adding PayPal successfully we need to add the PayPal sdk code to the website
in the PayPal website https://developer.paypal.com/sdk/js/ we will get the code with that help sample code we can add
on site builder website we have added the code to external js and html file
html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Fav and touch icons -->
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="assets/ico/apple-touch-icon-144-precomposed.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="assets/ico/apple-touch-icon-114-precomposed.ico">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="assets/ico/apple-touch-icon-72-precomposed.ico">
<link rel="apple-touch-icon-precomposed" href="ico/apple-touch-icon-57-precomposed.ico">
<link rel="shortcut icon" href="assets/ico/favicon.ico">
<title>TRIDENT USA HEALTH® | Checkout</title>
<!-- Bootstrap core CSS -->
<link href="assets/bootstrap/css/bootstrap.css" rel="stylesheet">
<!-- Custom styles for this template -->
<link href="assets/css/style.css" rel="stylesheet">
<!-- Just for debugging purposes. -->
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
<!-- include pace script for automatic web page progress bar -->
<script>
paceOptions = {
elements: true
};
</script>
<script src="assets/js/pace.min.js"></script>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="assets/js/jquery/jquery-2.1.3.min.js"></script>
<script src="assets/bootstrap/js/bootstrap.min.js"></script>
<!-- jQueryUI (necessary for jQuery autocomplete) -->
<!-- <link rel="stylesheet" href="assets/plugins-custom/jquery-ui/jquery-ui.css">
<script src="assets/plugins-custom/jquery-ui/jquery-ui.js"></script> -->
<!-- for jquery-confirm plugin-->
<link rel="stylesheet" href="assets/plugins-custom/jquery-confirm/jquery-confirm.min.css">
<script src="assets/plugins-custom/jquery-confirm/jquery-confirm.min.js"></script>
<!-- include SweetAlert2 and optionally add polfill -->
<script src="assets/plugins-custom/sweetalert2.all.js"></script>
<!-- Include a polyfill for ES6 Promises (optional) for IE11 and Android browser -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/core-js/2.4.1/core.js"></script>
<!-- include validate.js // jquery plugin -->
<script src="assets/js/jquery.validate.js"></script>
<!-- include global content load js -->
<script src="assets/js-custom/load-global-functions.js"></script>
<script src="assets/js-custom/load-global-content.js"></script>
<script src="assets/js-custom/checkout-page.js"></script>
<script src="https://www.paypal.com/sdk/js?client-id=ASuPKPqyJX98jkaWreQeH2An8BnuKWmzeGd--dtZpbVJvbBEdLYBoCky7b7BL7CJ-if0FSRYRbuRlXHo&intent=authorize"></script>
<style>
a.customDisabled {
pointer-events: none;
cursor: default;
}
</style>
</head>
<body>
<!-- Fixed navbar start -->
<div class="navbar navbar-tshop navbar-fixed-top megamenu" role="navigation">
<div class="navbar-top">
<div class="container">
<div class="row">
<div class="col-lg-6 col-sm-6 col-xs-6 col-md-6">
<div class="pull-left ">
<ul class="userMenu ">
<li class="phone-number">
<a href="callto:+18668725722">
<span> <i class="glyphicon glyphicon-phone-alt "></i></span>
<span class="hidden-xs" style="margin-left:5px"> +1-866-872-5722 </span>
</a>
</li>
</ul>
</div>
</div>
<div class="col-lg-6 col-sm-6 col-xs-6 col-md-6 no-margin no-padding">
<div class="pull-right" id="REPLACE-NAVBAR-TOP">
</div>
</div>
</div>
</div>
</div>
<!--/.navbar-top-->
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only"> Toggle navigation </span>
<span class="icon-bar"> </span>
<span class="icon-bar"> </span>
<span class="icon-bar"> </span>
</button>
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-cart">
<a id="REPLACE-MOBILE-HEADER-CART-URL" href="">
<i class="fa fa-shopping-cart colorWhite"> </i>
<span class="cartRespons colorWhite"> Cart </span>
</a>
</button>
<a class="navbar-brand " href="index.html">
<img src="images/logo.png" alt="TRIDENT USA HEALTH® LOGO" style="height:35px;">
</a>
</div>
<!-- this part is duplicate from cartMenu keep it for mobile -->
<!--/.navbar-cart-->
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav" id="REPLACE-NAVBAR-NAV">
</ul>
<!--- this part will be hidden for mobile version -->
<div class="nav navbar-nav navbar-right hidden-xs">
<div class="dropdown cartMenu ">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<i class="fa fa-shopping-cart"> </i>
<span class="cartRespons"> CART </span>
<b class="caret"> </b>
</a>
<div class="dropdown-menu col-lg-4 col-xs-12 col-md-4 ">
<div class="w100 miniCartTable scroll-pane" id="REPLACE-MINICART-TABLE">
</div>
<!--/.miniCartTable-->
<div class="miniCartFooter text-right" id="REPLACE-MINICART-FOOTER">
</div>
<!--/.miniCartFooter-->
</div>
<!--/.dropdown-menu-->
</div>
<!--/.cartMenu-->
</div>
<!--/.navbar-nav hidden-xs-->
</div>
<!--/.nav-collapse -->
</div>
<!--/.container -->
</div>
<!-- /.Fixed navbar -->
<!-- /.Fixed navbar -->
<div class="container main-container headerOffset">
<div class="row">
<div class="breadcrumbDiv col-lg-12">
<ul class="breadcrumb">
<li><a href="index.html">Home</a></li>
<li><a href="account.html">My Account</a></li>
<li><a href="cart.html">Cart</a></li>
<li class="active"> Checkout</li>
</ul>
</div>
</div>
<!--/.row-->
<div class="row">
<div class="col-lg-9 col-md-9 col-sm-7">
<h1 class="section-title-inner"><span><i
class="glyphicon glyphicon-shopping-cart"></i> ONEPAGE CHECKOUT</span></h1>
</div>
<div class="col-lg-3 col-md-3 col-sm-5 rightSidebar">
<h4 class="caps"><a href="cart.html"><i class="fa fa-chevron-left"></i> Back to Cart </a></h4>
</div>
</div>
<!--/.row-->
<div class="row">
<div class="col-lg-9 col-md-9 col-sm-12">
<div class="row userInfo">
<div class="onepage-checkout col-xs-12 col-sm-12">
<div class="col-sm-6">
<div class="order-box">
<div class="order-box-header">
Shipping Address
</div>
<div class="order-box-content">
<div class="address" id="REPLACE-SHIPPING-ADDRESS">
</div>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="order-box">
<div class="order-box-header">
Billing Address
</div>
<div class="order-box-content">
<div class="address" id="REPLACE-BILLING-ADDRESS">
</div>
</div>
</div>
</div>
<div style="clear: both"></div>
<div class="col-sm-6">
<div class="order-box">
<div class="order-box-header">
Delivery Method
</div>
<div class="order-box-content" id="REPLACE-DELIVERY-METHOD">
</div>
</div>
</div>
<div class="col-sm-6">
<div class="order-box" id="REPLACE-PAYMENT-BOX">
<!-- <div class="order-box-header">
Payment Method
</div> -->
<!-- <div class="order-box-content">
<div class="address" id="REPLACE-PAYMENT-METHOD">
<div style="clear:both;"></div>
<div class="address-name payment-method">
<label class="radio-inline" for="creditCard">
<input type="radio" name="radios" id="creditCard" value="">
<img style="height: 30px;" class="pull-right" src="images/site/card-payment.jpg" alt="card-payment">
</label>
</div>
<div style="clear:both;"></div>
<div class="pull-left" style="color:darkred;" id="errorWarningCheckout">
</div>
<div style="clear:both;"></div>
</div>
</div> -->
</div>
</div>
</div>
</div>
<!--/row end-->
</div>
<div class="col-lg-3 col-md-3 col-sm-12 rightSidebar">
<a href="javascript:void(0);" id="checkoutPlaceOrderLink" class="btn btn-primary btn-lg btn-block customDisabled" style="margin-bottom:20px" disabled>
<i class="fa fa-truck"></i> Pay & Place Order <i class="fa fa-chevron-circle-right"></i>
</a>
<div class="rightSidebar" id="paypal-button-container"></div>
<div class="w100 cartMiniTable" id="REPLACE-ORDER-SUMMARY">
<table id="cart-summary" class="std table">
<tbody>
<tr style="">
<td>Total products</td>
<td class="price"><span class="success">Calculating</span></td>
</tr>
<tr class="cart-total-price">
<td>Sub Total</td>
<td class="price">Calculating</td>
</tr>
<tr>
<td>Total tax</td>
<td class="price" id="total-tax">Calculating</td>
</tr>
<tr>
<td>Shipping Cost</td>
<td class="price">Calculating</td>
</tr>
<tr>
<td>Handling Cost</td>
<td class="price">Calculating</td>
</tr>
<tr>
<td> Total</td>
<td class=" site-color" id="total-price">Calculating</td>
</tr>
</tbody>
<tbody>
</tbody>
</table>
</div>
<!-- /cartMiniTable-->
</div>
<!--/rightSidebar-->
</div>
<!--/row-->
<div style="clear:both"></div>
</div>
<!-- /.main-container-->
<div class="gap"></div>
<div class="gap"></div>
<footer>
<div class="footer-bottom" id="REPLACE-FOOTER-BOTTOM">
</div>
<!--/.footer-bottom-->
</footer>
<!-- Le javascript
================================================== -->
<!-- include parallax plugin -->
<script type="text/javascript" src="assets/js/jquery.parallax-1.1.js"></script>
<!-- optionally include helper plugins -->
<script type="text/javascript" src="assets/js/helper-plugins/jquery.mousewheel.min.js"></script>
<!-- include mCustomScrollbar plugin //Custom Scrollbar -->
<script type="text/javascript" src="assets/js/jquery.mCustomScrollbar.js"></script>
<!-- include icheck plugin // customized checkboxes and radio buttons -->
<script type="text/javascript" src="assets/plugins/icheck-1.x/icheck.min.js"></script>
<!-- include grid.js // for equal Div height -->
<script src="assets/plugins/jquery-match-height-master/dist/jquery.matchHeight-min.js"></script>
<script src="assets/js/grids.js"></script>
<!-- include carousel slider plugin -->
<script src="assets/js/owl.carousel.min.js"></script>
<!-- jQuery select2 // custom select -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.min.js"></script>
<!-- include touchspin.js // touch friendly input spinner component -->
<script src="assets/js/bootstrap.touchspin.js"></script>
<!-- include custom script for site -->
<script src="assets/js/script.js"></script>
</body>
</html>
checkout js file:
/*Load Checkout Page Contents*/
var IS_SHIPPING_ADDRESS_EXISTS_FLAG = false;
var IS_BILLING_ADDRESS_EXISTS_FLAG = false;
function loadCheckoutPageContents() {
if (!validateNormalAccess()) {
//if not unqualified customer (NORMAL CUSTOMER)
clearAllCookies();
window.location.href = 'login.html';
}
if (validateAccessToThisPage()) {
fetchCheckoutDetails();
} else {
setCookie("customerVerifyChekout", 'false', 1);
setCookie("customerTimeStamp", 'false', 1);
window.location.href = "cart.html";
}
}
/*to validate access to this page*/
function validateAccessToThisPage() {
try {
var documentUrl = document.URL;
console.log('documentUrl',documentUrl)
var passcode = documentUrl.split('?passcode=')[1];
var customerVerifyChekout = getCookie('customerVerifyChekout');
var customerTimeStamp = getCookie('customerTimeStamp')
if (checkForParameter(passcode) && checkForParameter(customerVerifyChekout) && checkForParameter(customerTimeStamp)) {
if (passcode == giveNumberCode(customerTimeStamp)) {
if (customerVerifyChekout != 'false' && customerTimeStamp != 'false')
return true;
else
return false;
} else
return false;
} else
return false;
} catch (err) {
return false;
}
}
$(document).ready(function() {
loadCheckoutPageContents();
swal({
title: 'Loading!',
text: 'Please wait...',
onOpen: function changeArrowfunction() {
swal.showLoading();
},
allowOutsideClick: false
});
});
/* Checkout page functions :
- Fetch Checkout Details
- Handle Fetch Checkout Details Response
- Dynamically create Checkout content
- Create Address Content
- Create Delivery Content
- Create Order Summary
- Create Payment Content
*/
function fetchCheckoutDetails() {
if (validateNormalAccess()) {
//for unqualified customer (NORMAL CUSTOMER) <- Paid ORDER
u = getSuiteletURL['norcheckout'] + "&status=fetchinfo" + "&empid=" + getCookie('customerID');
cb = 'fetchCheckoutDetailsResponse';
getJSONP(u + '&callback=' + cb);
u = getSuiteletURL['norcheckout'] + "&status=fetchinfo" + "&empid=" + getCookie('customerID') + "&ordersummary=true";
cb = 'fetchCheckoutDetailsResponse';
getJSONP(u + '&callback=' + cb);
}
}
function fetchCheckoutDetailsResponse(data) {
var fetchCheckoutDetailsResponseObj = convertEscapetoUnescape(data);
console.log(fetchCheckoutDetailsResponseObj[fetchCheckoutDetailsResponseObj.length - 1].responseString);
if (fetchCheckoutDetailsResponseObj[fetchCheckoutDetailsResponseObj.length - 1].responseString == 'SUCCESS') {
//swal("FETCHED", "Fetched Details", "success");
createCheckoutDetails(fetchCheckoutDetailsResponseObj[0]);
} else {
//swal('DECLINED', 'Failed to Fetch Details', 'error');
swal('Alert', 'Unable to validate your Address', 'info');
setTimeout(function() {
window.location.href = 'my-address.html';
}, 2800);
}
}
function createCheckoutDetails(checkoutData) {
console.log('checkoutData11111',checkoutData);
if (checkForParameter(checkoutData.responseHandle)) {
//Create Delivery Content
var deliveryDetail = {
'shipmethodText': checkoutData.shipmethodText,
'shipmethodValue': checkoutData.shipmethodValue,
'shipcarrierText': checkoutData.shipcarrierText,
'shipcarrierValue': checkoutData.shipcarrierValue,
'shipaccount': checkoutData.shipaccount
};
createDeliveryContent(deliveryDetail);
//Create Order Summary
var orderDetails = {
althandlingcost: checkoutData.althandlingcost,
altshippingcost: checkoutData.altshippingcost,
handlingcost: checkoutData.handlingcost,
shippingcost: checkoutData.shippingcost,
item_total: checkoutData.item_total,
itemcount: checkoutData.itemcount,
origtotal: checkoutData.origtotal,
origtotal2: checkoutData.origtotal2,
subtotal: checkoutData.subtotal,
taxtotal: checkoutData.taxtotal,
discounttotal: checkoutData.discounttotal,
total: checkoutData.total
};
createOrderSummaryContent(orderDetails);
//Create Payment Content
createPaymentContet();
} else {
//Create Address Content
var myAddress = {
'shipaddress': checkoutData.shipaddress,
'billaddress': checkoutData.billaddress,
'phone': checkoutData.phone,
'shipphone': checkoutData.shipphone,
'billphone': checkoutData.billphone,
};
createAddressContent(myAddress);
//Create Delivery Content
// var deliveryDetail = {
// 'shipmethodText': checkoutData.shipmethodText,
// 'shipmethodValue': checkoutData.shipmethodValue,
// 'shipcarrierText': checkoutData.shipcarrierText,
// 'shipcarrierValue': checkoutData.shipcarrierValue,
// 'shipaccount': checkoutData.shipaccount
// };
// createDeliveryContent(deliveryDetail);
}
}
function createAddressContent(myAddress) {
//Create content for Shipping Address
IS_SHIPPING_ADDRESS_EXISTS_FLAG = false;
IS_BILLING_ADDRESS_EXISTS_FLAG = false;
var dynamicContent = '';
var addNewAddressButton;
if (checkForParameter(myAddress.shipaddress)) {
IS_SHIPPING_ADDRESS_EXISTS_FLAG = true;
myAddress.shipaddress = myAddress.shipaddress.split('n');
for (var i = 0; i < myAddress.shipaddress.length; i++) {
if (i == 0) {
dynamicContent += '<p><span class="address-name"> <strong> ' + myAddress.shipaddress[i] + ' </strong></span></p>';
} else {
dynamicContent += '<div class="adr"> ' + myAddress.shipaddress[i] + ' </div>';
}
}
dynamicContent += '<p><span> <strong>Phone</strong> : ' + myAddress.shipphone + ' </span></p>';
addNewAddressButton = '<p ><button onclick="addAddress(true);" class="btn btn-default btn-primary"> Edit Address </button> </p>';
dynamicContent += addNewAddressButton;
} else {
IS_SHIPPING_ADDRESS_EXISTS_FLAG = false;
dynamicContent += '<p><span class="address-name"> <strong> No Shipping Address Found </strong></span></p>';
dynamicContent += '<p><span class="address-company"> Please Add Shipping Address</span></p>';
addNewAddressButton = '<p ><button onclick="addAddress(true);" class="btn btn-default btn-primary"> Add Address </button> </p>';
dynamicContent += addNewAddressButton;
}
/* REPLACE-SHIPPING-ADDRESS*/
$('#REPLACE-SHIPPING-ADDRESS').empty();
$('#REPLACE-SHIPPING-ADDRESS').append(dynamicContent);
//Create content for Billing Address
dynamicContent = '';
if (checkForParameter(myAddress.billaddress)) {
IS_BILLING_ADDRESS_EXISTS_FLAG = true;
myAddress.billaddress = myAddress.billaddress.split('n');
for (var i = 0; i < myAddress.billaddress.length; i++) {
if (i == 0) {
dynamicContent += '<p><span class="address-name"> <strong> ' + myAddress.billaddress[i] + ' </strong></span></p>';
} else {
dynamicContent += '<div class="adr"> ' + myAddress.billaddress[i] + ' </div>';
}
}
dynamicContent += '<p><span> <strong>Phone</strong> : ' + myAddress.billphone + ' </span></p>';
addNewAddressButton = '<div><p style="display:inline-block;"><button onclick="addAddress(false);" class="btn btn-default btn-primary"> Edit Address </button> </p><span>  </span>';
if (IS_SHIPPING_ADDRESS_EXISTS_FLAG)
addNewAddressButton += '<p style="display:inline-block;"><button onclick="setBillingAsShipping(false);" class="btn btn-default btn-danger"> Same as Shipping </button> </p></div>';
else
addNewAddressButton += '</div>'
dynamicContent += addNewAddressButton;
} else {
IS_BILLING_ADDRESS_EXISTS_FLAG = false;
dynamicContent += '<p><span class="address-name"> <strong> No Billing Address Found </strong></span></p>';
dynamicContent += '<p><span class="address-company"> Please Add Billing Address</span></p>';
addNewAddressButton = '<div><p style="display:inline-block;"><button onclick="addAddress(false);" class="btn btn-default btn-primary"> Add Address </button> </p><span>  </span>';
if (IS_SHIPPING_ADDRESS_EXISTS_FLAG)
addNewAddressButton += '<p style="display:inline-block;"><button onclick="setBillingAsShipping(false);" class="btn btn-default btn-danger"> Same as Shipping </button> </p></div>';
else
addNewAddressButton += '</div>'
dynamicContent += addNewAddressButton;
}
/* REPLACE-BILLING-ADDRESS*/
$('#REPLACE-BILLING-ADDRESS').empty();
$('#REPLACE-BILLING-ADDRESS').append(dynamicContent);
}
function createDeliveryContent(deliveryDetail) {
//Create content for Delivery Details
var dynamicContent = '';
if (checkForParameter(deliveryDetail.shipmethodText)) {
dynamicContent += '<p><span class="address-name" data-value="' + deliveryDetail.shipmethodValue + '">Ship Method : <strong> ' + deliveryDetail.shipmethodText + ' </strong></span></p>';
} else {
dynamicContent += '<p><span class="address-name"> <strong> No Delivery Method Found </strong></span></p>';
dynamicContent += '<p><span class="address-company"> Please update Delivery Method in NetSuite </span></p>';
}
/*REPLACE-DELIVERY-METHOD*/
$('#REPLACE-DELIVERY-METHOD').append(dynamicContent);
swal({
showConfirmButton: false,
onOpen: function changeArrowfunction() {
swal.close();
}
});
}
function createOrderSummaryContent(orderDetails) {
$('#REPLACE-ORDER-SUMMARY').empty();
//Create content for Delivery Details
var dynamicContent = '';
dynamicContent += '<table id="cart-summary" class="std table">';
dynamicContent += '<tbody>';
dynamicContent += '<tr style=""> <td>Total products</td> <td class="price"><span class="success">' +
orderDetails.itemcount + '</span></td> </tr>';
dynamicContent += '<tr class="cart-total-price"> <td>Sub Total</td> <td class="price">$' +
fixFloat(orderDetails.subtotal, 2) + '</td> </tr>';
dynamicContent += '<tr> <td>Total tax</td> <td class="price" id="total-tax">$' +
(checkForParameter(orderDetails.taxtotal) ? fixFloat(orderDetails.taxtotal, 2) : '0.00') + '</td> </tr>';
dynamicContent += '<tr> <td>Shipping Cost</td> <td class="price" id="total-tax">$' +
fixFloat(orderDetails.altshippingcost, 2) + '</td> </tr>';
dynamicContent += '<tr> <td>Handling Cost</td> <td class="price" id="total-tax">$' +
fixFloat(orderDetails.althandlingcost, 2) + '</td> </tr>';
dynamicContent += '<tr> <td> Total</td> <td class=" site-color" id="total-price">$' +
fixFloat(orderDetails.total, 2) + '</td> </tr>';
dynamicContent += '</tbody>';
dynamicContent += '<tbody></tbody>';
dynamicContent += '</table>';
/*REPLACE-DELIVERY-METHOD*/
$('#REPLACE-ORDER-SUMMARY').append(dynamicContent);
//Enable href link to create(place) Sales Order
$('#checkoutPlaceOrderLink')[0].href = 'javascript:checkForPaymentOption();';
$('#checkoutPlaceOrderLink').removeAttr('disabled');
$('#checkoutPlaceOrderLink').removeClass('customDisabled');
}
function createPaymentContet() {
//$('#REPLACE-PAYMENT-METHOD').empty();
//for PAID ORDER
console.log('payment method')
var myvar;
myvar = '<div class="order-box-header">' +
' Payment Method' +
' </div>' +
' <div class="order-box-content">' +
' <div class="address" id="REPLACE-PAYMENT-METHOD">' +
' <div style="clear:both;"></div>' +
' <div class="address-name payment-method">' +
' <input type="radio" name="payment" value="" id="card-pay" checked> <img style="height: 30px;" src="images/site/card-payment.jpg" alt="card-payment"><br>' +
'<input type="radio" name="payment" value="" id="paypal-pay"> <img style="height: 30px;" src="images/site/payment/paypal.png" alt="card-payment"><br>' +
' </div>' +
' <div style="clear:both;"></div>' +
' <div class="pull-left" style="color:darkred;" id="errorWarningCheckout">' +
' </div>' +
' <div style="clear:both;"></div>' +
' </div>' +
' </div>';
$('#REPLACE-PAYMENT-BOX').empty();
$('#REPLACE-PAYMENT-BOX').append(myvar);
$('input[name="payment"]').click(function() {
if ($('input#paypal-pay').prop("checked") == true) {
$("#checkoutPlaceOrderLink").hide();
$("#paypal-button-container").empty();
// var rates = $('#REPLACE-SHIPPINGCOST-METHOD input');
// for (var i = 0; i < rates.length; i++) {
// if (rates[i].checked) {
// shippingMethod = rates[i].value;
// }
// }
// for (var key in estimateshippingCostResObj) {
// if (estimateshippingCostResObj[key].id == shippingMethod) {
// selectedShippingMthd = key;
// keyIndex = key;
// break;
// }
// }
paypal.Buttons({
env: 'production',
style: {
layout: 'horizontal'
},
client: {
production: 'ASuPKPqyJX98jkaWreQeH2An8BnuKWmzeGd--dtZpbVJvbBEdLYBoCky7b7BL7CJ-if0FSRYRbuRlXHo',
//sandbox: 'ASjhORj_YKAm-9dVQP1deaQrK14QzGRD9JI4JEZqiq9scAqBtgjkYqIuhxeSz4Pyei0ONe3DEwadjmiY'
},
// createOrder: function(data, actions) {
// // Set up the transaction
// return actions.order.create({
// purchase_units: [{
// amount: {
// value: 500
// }
// }]
// });
// },
onApprove: function(data, actions) {
var paypalPaymentObject = data;
var paypalOrderId = paypalPaymentObject.orderID;
var ptype = 'pp';
// Capture the funds from the transaction
return actions.order.authorize().then(function(authorization) {
swal({
title: 'Verifying Payment!',
text: 'Please wait...',
onOpen: function changeArrowfunction() {
swal.showLoading();
},
allowOutsideClick: false
});
var authorizationID = authorization.purchase_units[0]
.payments.authorizations[0].id;
var documentUrl = document.URL;
//var customerInternalId = (documentUrl.split('?custid=')[1]).split("&timeStamp")[0];
var customerInternalId = getCookie('customerID');
console.log('customerInternalId',customerInternalId)
if (paypalOrderId && authorizationID ) {
var u, cb;
u = getSuiteletURL['norcheckout'] + "&status=placeorder" + "&empid=" + customerInternalId + "&paypalOrderId=" + paypalOrderId + "&authorizationID=" + authorizationID + "&ptype=" + ptype;
cb = 'checkForPaymentOptionResponse';
getJSONP(u + '&callback=' + cb);
} else {
swal({
title: 'DECLINED!',
text: 'Payment Rejected',
type: 'error',
allowOutsideClick: false
});
}
});
}
}).render('#paypal-button-container');
$("#paypal-button-container").show();
} else if ($('input#card-pay').prop("checked") == true) {
console.log('cart')
$("#checkoutPlaceOrderLink").show();
$("#paypal-button-container").hide();
$("#paypal-button-container").empty();
}
});
}
/* Address functions :
- addAddress() <- To add new Shipping Address
- addAddressResponse() <- Handle addAddress() Response
- setBillingAsShipping() <- To ser Billing Address as Shipping Address
- setBillingAsShippingResponse() <- Handle setBillingAsShipping() Response
*/
function addAddress(isShipping) {
$.confirm({
title: 'Add Address',
content: 'url:add-address.html',
/* theme: 'dark',*/
type: 'blue',
typeAnimated: true,
closeIcon: true,
closeIconClass: 'fa fa-close',
draggable: false,
columnClass: 'medium',
/*columnClass: 'col-lg-12 col-md-12 col-sm-12 col-xs-12',*/
onContentReady: function() {
// when content is fetched & rendered in DOM
$("#addAddressForm").validate({
errorLabelContainer: $("#addAddressForm div.error")
});
/* Show field validation message */
$('#addAddressForm input').on("keypress", function() {
$("#addAddressForm div.error").empty();
$("#addAddressForm").validate();
});
$('#addAddressForm select').on("change", function() {
$("#addAddressForm div.error").empty();
$("#addAddressForm").validate();
});
$("#addAddressForm div.error").empty();
},
buttons: {
addAddress: {
text: 'Add Address',
btnClass: 'btn-info',
action: function() {
var requestParams = {
addrtype: (checkForParameter(isShipping) ? ('sa') : ('ba')),
empname: escape($('#addAddressForm input#InputFullName').val()),
compname: escape(assignDefaultValue($('#addAddressForm input#InputCompanyName').val(), "empty")),
addr1: escape($('#addAddressForm input#InputAddress1').val()),
addr2: escape(assignDefaultValue($('#addAddressForm input#InputAddress2').val(), "empty")),
//country: escape($('#addAddressForm input#InputCountry').val()),
city: escape($('#addAddressForm input#InputCity').val()),
zip: escape($('#addAddressForm input#InputZipCode').val()),
phone: escape($('#addAddressForm input#InputPhoneNumber').val()),
state: escape($('#addAddressForm select#InputState').val()),
};
var postParams = '';
for (var key in requestParams) {
if (!checkForParameter(requestParams[key])) {
$.alert('Please fill all the Required Fields (<span class="required"><sup>*</sup></span>)');
return false;
}
if (key == 'phone')
if ((requestParams[key]).length < 7) {
$.alert('Phone number should have seven digits or more');
return false;
}
if (!checkForEmptyFormSelects($('#addAddressForm select'), 'EMPTY')) {
$.alert('Please select State');
return false;
}
postParams += '&' + key + '=' + requestParams[key];
}
var u, cb;
u = getSuiteletURL['norcheckout'] + "&status=updateaddr" + "&empid=" + getCookie('customerID') + postParams;
cb = 'addAddressResponse';
getJSONP(u + '&callback=' + cb);
swal({
title: 'Updating Address!',
text: 'Please wait...',
onOpen: function changeArrowfunction() {
swal.showLoading();
},
allowOutsideClick: false
});
}
},
}
});
}
function addAddressResponse(data) {
var addAddressResponseObj = convertEscapetoUnescape(data);
if (addAddressResponseObj[addAddressResponseObj.length - 1].responseString == 'SUCCESS') {
swal("SUCCESS", "UPDATED ADDRESS", "success");
//Create Address Content
var myAddress = {
'shipaddress': addAddressResponseObj[0].shipaddress,
'billaddress': addAddressResponseObj[0].billaddress,
'shipphone': addAddressResponseObj[0].shipphone,
'billphone': addAddressResponseObj[0].billphone,
'phone': addAddressResponseObj[0].phone
};
createAddressContent(myAddress);
} else {
swal('ERROR', 'Failed to Update Address', 'error');
console.log('addAddressResponseObj', addAddressResponseObj);
}
}
function setBillingAsShipping(isSame) {
if (isSame == false) {
//isSame == false ; for address I represent false as billing address before, following the same scheme here...
var u, cb;
u = getSuiteletURL['norcheckout'] + "&status=issameaddr" + "&empid=" + getCookie('customerID');
cb = 'setBillingAsShippingResponse';
getJSONP(u + '&callback=' + cb);
swal({
title: 'Updating Address!',
text: 'Please wait...',
onOpen: function changeArrowfunction() {
swal.showLoading();
},
allowOutsideClick: false
});
}
}
function setBillingAsShippingResponse(data) {
var setBillingAsShippingResponseObj = convertEscapetoUnescape(data);
if (setBillingAsShippingResponseObj[setBillingAsShippingResponseObj.length - 1].responseString == 'SUCCESS') {
swal("SUCCESS", "UPDATED ADDRESS", "success");
//Create Address Content
var myAddress = {
'shipaddress': setBillingAsShippingResponseObj[0].shipaddress,
'billaddress': setBillingAsShippingResponseObj[0].billaddress,
'shipphone': setBillingAsShippingResponseObj[0].shipphone,
'billphone': setBillingAsShippingResponseObj[0].billphone,
'phone': setBillingAsShippingResponseObj[0].phone
};
createAddressContent(myAddress);
} else {
swal('ERROR', 'Failed to Update Address', 'error');
console.log('addAddressResponseObj', setBillingAsShippingResponseObj);
}
}
/* Sales Order functions :
- checkForPaymentOption() <- To verify payment and places order
- checkForPaymentOptionResponse() <- Handle checkForPaymentOption() Response
*/
function checkForPaymentOption() {
if (validateNormalAccess()) {
if (IS_SHIPPING_ADDRESS_EXISTS_FLAG && IS_BILLING_ADDRESS_EXISTS_FLAG) {
// var paymentOption1 = $('#REPLACE-PAYMENT-METHOD input#creditCard').prop('checked'); //cc
// var paymentOption2 = $('#REPLACE-PAYMENT-METHOD input#creditCard').prop('checked');
var creditCardMethod = $('#REPLACE-PAYMENT-METHOD input')[0].checked;
// console.log('creditCardMethod')
var payPalMethod = $('#REPLACE-PAYMENT-METHOD input')[1].checked;
if (creditCardMethod === true || payPalMethod === true) {
if (creditCardMethod === true) {
$.confirm({
title: 'Enter Credit Card Details',
content: 'url:credit-card.html',
/*theme: 'dark',*/
type: 'blue',
typeAnimated: true,
closeIcon: true,
closeIconClass: 'fa fa-close',
draggable: false,
columnClass: 'medium',
/*columnClass: 'col-lg-12 col-md-12 col-sm-12 col-xs-12',*/
onContentReady: function() {
// when content is fetched & rendered in DOM
$("#creditCardForm").validate({
errorLabelContainer: $("#creditCardForm div.error")
});
/* Disable Submit button unless validated for creditCardForm in
- Input field
- Select field
*/
$('#creditCardForm input').on("keypress", function() {
$("#creditCardForm div.error").empty();
$("#creditCardForm").validate();
});
$('#creditCardForm select').on("change", function() {
$("#creditCardForm div.error").empty();
$("#creditCardForm").validate();
});
$("#creditCardForm div.error").empty();
var self = this;
},
buttons: {
closeThisWindow: {
text: 'Close',
btnClass: 'btn-info',
action: function() {}
},
payNow: {
text: 'Pay Now',
btnClass: 'btn-danger',
action: function() {
var timeStamp = Date.parse(new Date()).toString();
var InputCCNumber = encryptionModule.encodedEncryption(timeStamp, $('#creditCardForm input#InputCCNumber').val());
var InputName = encryptionModule.encodedEncryption(timeStamp, $('#creditCardForm input#InputName').val());
var InputCCVNumber = encryptionModule.encodedEncryption(timeStamp, $('#creditCardForm input#InputCCVNumber').val());
var InputCCtype = encryptionModule.encodedEncryption(timeStamp, $('#creditCardForm select#InputCCtype').val());
var InputExpiryMonth = encryptionModule.encodedEncryption(timeStamp, $('#creditCardForm select#InputExpiryMonth').val());
var InputExpiryYear = encryptionModule.encodedEncryption(timeStamp, $('#creditCardForm select#InputExpiryYear').val());
var shipMeth = document.getElementById("REPLACE-DELIVERY-METHOD").getElementsByClassName('address-name')[0].getAttribute('data-value');
var requestParams = {
timestamp: encodeURIComponent(timeStamp),
ptype: encodeURIComponent('cc'),
ctype: encodeURIComponent(InputCCtype),
cnum: encodeURIComponent(InputCCNumber),
cname: encodeURIComponent(InputName),
cmonth: encodeURIComponent(InputExpiryMonth),
cyear: encodeURIComponent(InputExpiryYear),
cccv: encodeURIComponent(InputCCVNumber),
shipMeth: encodeURIComponent(shipMeth),
};
var postParams = '';
for (var key in requestParams) {
if (!checkForParameter(requestParams[key])) {
$.alert('Please fill all the Required Fields (<span class="required"><sup>*</sup></span>)');
return false;
}
if (!checkForEmptyFormSelects($('#creditCardForm select'), 'EMPTY') || !checkForEmptyFormInputs($('#creditCardForm input'))) {
$.alert('Please fill all the Required Fields (<span class="required"><sup>*</sup></span>)');
return false;
}
postParams += '&' + key + '=' + requestParams[key];
}
var u, cb;
u = getSuiteletURL['norcheckout'] + "&status=placeorder" + "&empid=" + getCookie('customerID') + postParams;
cb = 'checkForPaymentOptionResponse';
getJSONP(u + '&callback=' + cb);
//Disable href link to create(place) Sales Order
$('#checkoutPlaceOrderLink')[0].href = 'javascript:void(0);';
$('#checkoutPlaceOrderLink').attr('disabled', 'disabled');
$('#checkoutPlaceOrderLink').addClass('customDisabled');
swal({
title: 'Verifying Payment!',
text: 'Please wait...',
onOpen: function changeArrowfunction() {
swal.showLoading();
},
allowOutsideClick: false
});
}
},
}
});
}
} else {
//Show Empty Wishlist Warning (Empty Wishlist ->No request to approve)
$('#errorWarningCheckout').empty();
var errorMessage = '<div class="alert alert-danger alert-dismissable"> <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> <strong>Heads up!</strong> Please choose a payment method </div>';
$('#errorWarningCheckout').append(errorMessage);
}
} else {
if (!IS_SHIPPING_ADDRESS_EXISTS_FLAG)
swal("Incomplete Details", "Please Add Shipping Address", "warning")
else
swal("Incomplete Details", "Please Add Billing Address", "warning")
}
}
}
function checkForPaymentOptionResponse(data) {
var checkForPaymentOptionResponseObj = convertEscapetoUnescape(data);
console.log(checkForPaymentOptionResponseObj[0].responseString);
if (checkForPaymentOptionResponseObj[0].responseString == 'SUCCESS') {
swal({
title: 'SUCCESS!',
text: 'Payment Successfull',
type: 'success',
allowOutsideClick: false
});
var tranId = checkForPaymentOptionResponseObj[0].tranid;
setCookie("customerVerifyChekout", 'false', 1);
setCookie("customerTimeStamp", 'false', 1);
setTimeout(function() {
window.location.href = 'thanks-for-order.html?tranid=' + tranId + '&passcode=' + giveNumberCode(tranId);
}, 1500);
} else {
//Enable href link to create(place) Sales Order
$('#checkoutPlaceOrderLink')[0].href = 'javascript:checkForPaymentOption();';
$('#checkoutPlaceOrderLink').removeAttr('disabled');
$('#checkoutPlaceOrderLink').removeClass('customDisabled');
swal({
title: 'DECLINED!',
text: 'Payment Rejected',
type: 'error',
allowOutsideClick: false
});
}
}