809 lines
23 KiB
JavaScript
809 lines
23 KiB
JavaScript
/*
|
|
** nopCommerce one page checkout
|
|
*/
|
|
|
|
|
|
var Checkout = {
|
|
loadWaiting: false,
|
|
failureUrl: false,
|
|
|
|
init: function (failureUrl) {
|
|
this.loadWaiting = false;
|
|
this.failureUrl = failureUrl;
|
|
|
|
Accordion.disallowAccessToNextSections = true;
|
|
},
|
|
|
|
ajaxFailure: function () {
|
|
location.href = Checkout.failureUrl;
|
|
},
|
|
|
|
_disableEnableAll: function (element, isDisabled) {
|
|
var descendants = element.find('*');
|
|
$(descendants).each(function () {
|
|
if (isDisabled) {
|
|
$(this).prop("disabled", true);
|
|
} else {
|
|
$(this).prop("disabled", false);
|
|
}
|
|
});
|
|
|
|
if (isDisabled) {
|
|
element.prop("disabled", true);
|
|
} else {
|
|
$(this).prop("disabled", false);
|
|
}
|
|
},
|
|
|
|
setLoadWaiting: function (step, keepDisabled) {
|
|
var container;
|
|
if (step) {
|
|
if (this.loadWaiting) {
|
|
this.setLoadWaiting(false);
|
|
}
|
|
container = $('#' + step + '-buttons-container');
|
|
container.addClass('disabled');
|
|
container.css('opacity', '.5');
|
|
this._disableEnableAll(container, true);
|
|
$('#' + step + '-please-wait').show();
|
|
} else {
|
|
if (this.loadWaiting) {
|
|
container = $('#' + this.loadWaiting + '-buttons-container');
|
|
var isDisabled = keepDisabled ? true : false;
|
|
if (!isDisabled) {
|
|
container.removeClass('disabled');
|
|
container.css('opacity', '1');
|
|
}
|
|
this._disableEnableAll(container, isDisabled);
|
|
$('#' + this.loadWaiting + '-please-wait').hide();
|
|
}
|
|
}
|
|
this.loadWaiting = step;
|
|
},
|
|
|
|
gotoSection: function (section) {
|
|
section = $('#opc-' + section);
|
|
section.addClass('allow');
|
|
Accordion.openSection(section);
|
|
},
|
|
|
|
back: function () {
|
|
if (this.loadWaiting) return;
|
|
Accordion.openPrevSection(true, true);
|
|
},
|
|
|
|
setStepResponse: function(response) {
|
|
if (response.update_section) {
|
|
$('#checkout-' + response.update_section.name + '-load').html(response.update_section.html);
|
|
}
|
|
if (response.allow_sections) {
|
|
response.allow_sections.each(function(e) {
|
|
$('#opc-' + e).addClass('allow');
|
|
});
|
|
}
|
|
|
|
//TODO move it to a new method
|
|
if ($("#billing-address-select").length > 0) {
|
|
Billing.newAddress(!$('#billing-address-select').val());
|
|
} else {
|
|
Billing.newAddress(true);
|
|
}
|
|
|
|
if ($("#shipping-address-select").length > 0) {
|
|
Shipping.newAddress(response.selected_id == undefined ? $('#shipping-address-select').val() : response.selected_id, $('#billing-address-select').children("option:selected").val());
|
|
}
|
|
|
|
if (response.goto_section) {
|
|
Checkout.gotoSection(response.goto_section);
|
|
return true;
|
|
}
|
|
if (response.redirect) {
|
|
location.href = response.redirect;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
};
|
|
|
|
|
|
var Billing = {
|
|
form: false,
|
|
saveUrl: false,
|
|
disableBillingAddressCheckoutStep: false,
|
|
guest: false,
|
|
selectedStateId: 0,
|
|
|
|
init: function(form, saveUrl, disableBillingAddressCheckoutStep, guest) {
|
|
this.form = form;
|
|
this.saveUrl = saveUrl;
|
|
this.disableBillingAddressCheckoutStep = disableBillingAddressCheckoutStep;
|
|
this.guest = guest;
|
|
},
|
|
|
|
newAddress: function(isNew) {
|
|
$('#save-billing-address-button').hide();
|
|
|
|
if (isNew) {
|
|
$('#billing-new-address-form').show();
|
|
$('#edit-billing-address-button').hide();
|
|
$('#delete-billing-address-button').hide();
|
|
} else {
|
|
$('#billing-new-address-form').hide();
|
|
$('#edit-billing-address-button').show();
|
|
$('#delete-billing-address-button').show();
|
|
}
|
|
$(document).trigger({ type: "onepagecheckout_billing_address_new" });
|
|
Billing.initializeCountrySelect();
|
|
},
|
|
|
|
setDefaultCountry: function (defaultCountry) {
|
|
$('#opc-billing select[data-trigger="country-select"] option[value="' + defaultCountry + '"]').prop('selected', true);
|
|
$('#opc-billing select[data-trigger="country-select"] option:selected').change()
|
|
},
|
|
|
|
resetSelectedAddress: function() {
|
|
var selectElement = $('#billing-address-select');
|
|
if (selectElement) {
|
|
selectElement.val('');
|
|
}
|
|
$(document).trigger({ type: "onepagecheckout_billing_address_reset" });
|
|
},
|
|
|
|
save: function() {
|
|
if (Checkout.loadWaiting !== false) return;
|
|
|
|
Checkout.setLoadWaiting('billing');
|
|
|
|
$.ajax({
|
|
cache: false,
|
|
url: this.saveUrl,
|
|
data: $(this.form).serialize(),
|
|
type: "POST",
|
|
success: this.nextStep,
|
|
complete: this.resetLoadWaiting,
|
|
error: Checkout.ajaxFailure
|
|
});
|
|
},
|
|
|
|
resetLoadWaiting: function() {
|
|
Checkout.setLoadWaiting(false);
|
|
},
|
|
|
|
nextStep: function(response) {
|
|
//ensure that response.wrong_billing_address is set
|
|
//if not set, "true" is the default value
|
|
if (typeof response.wrong_billing_address === 'undefined') {
|
|
response.wrong_billing_address = false;
|
|
}
|
|
if (Billing.disableBillingAddressCheckoutStep) {
|
|
if (response.wrong_billing_address) {
|
|
Accordion.showSection('#opc-billing');
|
|
} else {
|
|
Accordion.hideSection('#opc-billing');
|
|
}
|
|
}
|
|
|
|
|
|
if (response.error) {
|
|
if (typeof response.message === 'string') {
|
|
alert(response.message);
|
|
} else {
|
|
alert(response.message.join("\n"));
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
Checkout.setStepResponse(response);
|
|
Billing.initializeCountrySelect();
|
|
},
|
|
|
|
initializeCountrySelect: function() {
|
|
if ($('#opc-billing').has('select[data-trigger="country-select"]')) {
|
|
$('#opc-billing select[data-trigger="country-select"]').countrySelect();
|
|
}
|
|
},
|
|
|
|
editAddress: function(url) {
|
|
Billing.resetBillingForm();
|
|
//Billing.initializeStateSelect();
|
|
|
|
var prefix = 'BillingNewAddress_';
|
|
var selectedItem = $('#billing-address-select').children("option:selected").val();
|
|
$.ajax({
|
|
cache: false,
|
|
type: "GET",
|
|
url: url,
|
|
data: {
|
|
addressId: selectedItem,
|
|
},
|
|
success: function (data, textStatus, jqXHR) {
|
|
$.each(data, function (id, value) {
|
|
if (value === null)
|
|
return;
|
|
|
|
if (id.indexOf("CustomAddressAttributes") >= 0 && Array.isArray(value)) {
|
|
$.each(value, function (i, customAttribute) {
|
|
if (customAttribute.DefaultValue) {
|
|
$(`#${customAttribute.ControlId}`).val(
|
|
customAttribute.DefaultValue
|
|
);
|
|
} else {
|
|
$.each(customAttribute.Values, function (j, attributeValue) {
|
|
if (attributeValue.IsPreSelected) {
|
|
$(`#${customAttribute.ControlId}`).val(attributeValue.Id);
|
|
$(
|
|
`#${customAttribute.ControlId}_${attributeValue.Id}`
|
|
).prop("checked", attributeValue.Id);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
return;
|
|
}
|
|
|
|
var val = $(`#${prefix}${id}`).val(value);
|
|
if (id.indexOf("CountryId") >= 0) {
|
|
val.trigger("change");
|
|
}
|
|
if (id.indexOf("StateProvinceId") >= 0) {
|
|
Billing.setSelectedStateId(value);
|
|
}
|
|
});
|
|
},
|
|
complete: function (jqXHR, textStatus) {
|
|
$("#billing-new-address-form").show();
|
|
$("#edit-billing-address-button").hide();
|
|
$("#delete-billing-address-button").hide();
|
|
$("#save-billing-address-button").show();
|
|
},
|
|
error: Checkout.ajaxFailure,
|
|
});
|
|
},
|
|
|
|
saveEditAddress: function(url) {
|
|
var selectedId;
|
|
$.ajax({
|
|
cache: false,
|
|
url: url + '?opc=true',
|
|
data: $(this.form).serialize(),
|
|
type: "POST",
|
|
success: function (response) {
|
|
if (response.error) {
|
|
alert(response.message);
|
|
return false;
|
|
} else {
|
|
selectedId = response.selected_id;
|
|
Checkout.setStepResponse(response);
|
|
Billing.resetBillingForm();
|
|
}
|
|
},
|
|
complete: function() {
|
|
var selectElement = $('#billing-address-select');
|
|
if (selectElement && selectedId) {
|
|
selectElement.val(selectedId);
|
|
}
|
|
},
|
|
error: Checkout.ajaxFailure
|
|
});
|
|
},
|
|
|
|
deleteAddress: function (url) {
|
|
var selectedAddress = $('#billing-address-select').children("option:selected").val();
|
|
$.ajax({
|
|
cache: false,
|
|
type: "GET",
|
|
url: url,
|
|
data: {
|
|
"addressId": selectedAddress,
|
|
"opc": 'true'
|
|
},
|
|
success: function (response) {
|
|
Checkout.setStepResponse(response);
|
|
},
|
|
error: Checkout.ajaxFailure
|
|
});
|
|
},
|
|
|
|
setSelectedStateId: function (id) {
|
|
this.selectedStateId = id;
|
|
},
|
|
|
|
resetBillingForm: function() {
|
|
$(':input', '#billing-new-address-form')
|
|
.not(':button, :submit, :reset, :hidden')
|
|
.removeAttr('checked').removeAttr('selected')
|
|
$(':input', '#billing-new-address-form')
|
|
.not(':checkbox, :radio, select')
|
|
.val('');
|
|
|
|
$('.address-id', '#billing-new-address-form').val('0');
|
|
$('select option[value="0"]', '#billing-new-address-form').prop('selected', true);
|
|
}
|
|
};
|
|
|
|
var Shipping = {
|
|
form: false,
|
|
saveUrl: false,
|
|
|
|
init: function (form, saveUrl) {
|
|
this.form = form;
|
|
this.saveUrl = saveUrl;
|
|
},
|
|
|
|
newAddress: function (id, billingAddressId) {
|
|
isNew = !id;
|
|
if (isNew) {
|
|
this.resetSelectedAddress();
|
|
$('#shipping-new-address-form').show();
|
|
$('#edit-shipping-address-button').hide();
|
|
$('#delete-shipping-address-button').hide();
|
|
} else {
|
|
$('#shipping-new-address-form').hide();
|
|
if (id == billingAddressId || (id != undefined && billingAddressId == undefined)) {
|
|
$('#edit-shipping-address-button').hide();
|
|
$("#save-shipping-address-button").hide();
|
|
$('#delete-shipping-address-button').hide();
|
|
} else {
|
|
$("#save-shipping-address-button").hide();
|
|
$('#edit-shipping-address-button').show();
|
|
$('#delete-shipping-address-button').show();
|
|
}
|
|
}
|
|
$(document).trigger({ type: "onepagecheckout_shipping_address_new" });
|
|
Shipping.initializeCountrySelect();
|
|
},
|
|
|
|
resetSelectedAddress: function () {
|
|
var selectElement = $('#shipping-address-select');
|
|
if (selectElement) {
|
|
selectElement.val('');
|
|
}
|
|
$(document).trigger({ type: "onepagecheckout_shipping_address_reset" });
|
|
},
|
|
|
|
editAddress: function (url) {
|
|
Shipping.resetShippingForm();
|
|
|
|
var prefix = 'ShippingNewAddress_';
|
|
var selectedItem = $('#shipping-address-select').children("option:selected").val();
|
|
$.ajax({
|
|
cache: false,
|
|
type: "GET",
|
|
url: url,
|
|
data: {
|
|
addressId: selectedItem,
|
|
},
|
|
success: function (data, textStatus, jqXHR) {
|
|
$.each(data, function (id, value) {
|
|
if (value === null)
|
|
return;
|
|
|
|
if (id.indexOf("CustomAddressAttributes") >= 0 && Array.isArray(value)) {
|
|
$.each(value, function (i, customAttribute) {
|
|
if (customAttribute.DefaultValue) {
|
|
$(`#${customAttribute.ControlId}`).val(
|
|
customAttribute.DefaultValue
|
|
);
|
|
} else {
|
|
$.each(customAttribute.Values, function (j, attributeValue) {
|
|
if (attributeValue.IsPreSelected) {
|
|
$(`#${customAttribute.ControlId}`).val(attributeValue.Id);
|
|
$(
|
|
`#${customAttribute.ControlId}_${attributeValue.Id}`
|
|
).prop("checked", attributeValue.Id);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
return;
|
|
}
|
|
|
|
var val = $(`#${prefix}${id}`).val(value);
|
|
if (id.indexOf("CountryId") >= 0) {
|
|
val.trigger("change");
|
|
}
|
|
if (id.indexOf("StateProvinceId") >= 0) {
|
|
Billing.setSelectedStateId(value);
|
|
}
|
|
});
|
|
},
|
|
complete: function (jqXHR, textStatus) {
|
|
$("#shipping-new-address-form").show();
|
|
$("#edit-shipping-address-button").hide();
|
|
$("#delete-shipping-address-button").hide();
|
|
$("#save-shipping-address-button").show();
|
|
},
|
|
error: Checkout.ajaxFailure,
|
|
});
|
|
},
|
|
|
|
saveEditAddress: function (url) {
|
|
var selectedId;
|
|
$.ajax({
|
|
cache: false,
|
|
url: url + '?opc=true',
|
|
data: $(this.form).serialize(),
|
|
type: "POST",
|
|
success: function (response) {
|
|
if (response.error) {
|
|
alert(response.message);
|
|
return false;
|
|
} else {
|
|
selectedId = response.selected_id;
|
|
Checkout.setStepResponse(response);
|
|
Shipping.resetShippingForm();
|
|
}
|
|
},
|
|
complete: function () {
|
|
var selectElement = $('#shipping-address-select');
|
|
if (selectElement && selectedId) {
|
|
selectElement.val(selectedId);
|
|
}
|
|
},
|
|
error: Checkout.ajaxFailure
|
|
});
|
|
},
|
|
|
|
deleteAddress: function (url) {
|
|
var selectedAddress = $('#shipping-address-select').children("option:selected").val();
|
|
$.ajax({
|
|
cache: false,
|
|
type: "GET",
|
|
url: url,
|
|
data: {
|
|
"addressId": selectedAddress,
|
|
"opc": 'true'
|
|
},
|
|
success: function (response) {
|
|
Checkout.setStepResponse(response);
|
|
},
|
|
error: Checkout.ajaxFailure
|
|
});
|
|
},
|
|
|
|
save: function () {
|
|
if (Checkout.loadWaiting !== false) return;
|
|
|
|
Checkout.setLoadWaiting('shipping');
|
|
|
|
$.ajax({
|
|
cache: false,
|
|
url: this.saveUrl,
|
|
data: $(this.form).serialize(),
|
|
type: "POST",
|
|
success: this.nextStep,
|
|
complete: this.resetLoadWaiting,
|
|
error: Checkout.ajaxFailure
|
|
});
|
|
},
|
|
|
|
resetLoadWaiting: function () {
|
|
Checkout.setLoadWaiting(false);
|
|
},
|
|
|
|
nextStep: function (response) {
|
|
if (response.error) {
|
|
if (typeof response.message === 'string') {
|
|
alert(response.message);
|
|
} else {
|
|
alert(response.message.join("\n"));
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
Checkout.setStepResponse(response);
|
|
},
|
|
|
|
initializeCountrySelect: function () {
|
|
if ($('#opc-shipping').has('select[data-trigger="country-select"]')) {
|
|
$('#opc-shipping select[data-trigger="country-select"]').countrySelect();
|
|
}
|
|
},
|
|
|
|
resetShippingForm: function () {
|
|
$(':input', '#shipping-new-address-form')
|
|
.not(':button, :submit, :reset, :hidden')
|
|
.removeAttr('checked').removeAttr('selected')
|
|
$(':input', '#shipping-new-address-form')
|
|
.not(':checkbox, :radio, select')
|
|
.val('');
|
|
|
|
$('.address-id', '#shipping-new-address-form').val('0');
|
|
$('select option[value="0"]', '#shipping-new-address-form').prop('selected', true);
|
|
}
|
|
};
|
|
|
|
|
|
|
|
var ShippingMethod = {
|
|
form: false,
|
|
saveUrl: false,
|
|
localized_data: false,
|
|
|
|
init: function (form, saveUrl, localized_data) {
|
|
this.form = form;
|
|
this.saveUrl = saveUrl;
|
|
this.localized_data = localized_data;
|
|
},
|
|
|
|
validate: function () {
|
|
var methods = document.getElementsByName('shippingoption');
|
|
if (methods.length === 0) {
|
|
alert(this.localized_data.NotAvailableMethodsError);
|
|
return false;
|
|
}
|
|
|
|
for (var i = 0; i < methods.length; i++) {
|
|
if (methods[i].checked) {
|
|
return true;
|
|
}
|
|
}
|
|
alert(this.localized_data.SpecifyMethodError);
|
|
return false;
|
|
},
|
|
|
|
save: function () {
|
|
if (Checkout.loadWaiting !== false) return;
|
|
|
|
if (this.validate()) {
|
|
Checkout.setLoadWaiting('shipping-method');
|
|
|
|
$.ajax({
|
|
cache: false,
|
|
url: this.saveUrl,
|
|
data: $(this.form).serialize(),
|
|
type: "POST",
|
|
success: this.nextStep,
|
|
complete: this.resetLoadWaiting,
|
|
error: Checkout.ajaxFailure
|
|
});
|
|
}
|
|
},
|
|
|
|
resetLoadWaiting: function () {
|
|
Checkout.setLoadWaiting(false);
|
|
},
|
|
|
|
nextStep: function (response) {
|
|
if (response.error) {
|
|
if (typeof response.message === 'string') {
|
|
alert(response.message);
|
|
} else {
|
|
alert(response.message.join("\n"));
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
Checkout.setStepResponse(response);
|
|
}
|
|
};
|
|
|
|
|
|
|
|
var PaymentMethod = {
|
|
form: false,
|
|
saveUrl: false,
|
|
localized_data: false,
|
|
|
|
init: function (form, saveUrl, localized_data) {
|
|
this.form = form;
|
|
this.saveUrl = saveUrl;
|
|
this.localized_data = localized_data;
|
|
},
|
|
|
|
toggleUseRewardPoints: function (useRewardPointsInput) {
|
|
if (useRewardPointsInput.checked) {
|
|
$('#payment-method-block').hide();
|
|
}
|
|
else {
|
|
$('#payment-method-block').show();
|
|
}
|
|
},
|
|
|
|
validate: function () {
|
|
var methods = document.getElementsByName('paymentmethod');
|
|
if (methods.length === 0) {
|
|
alert(this.localized_data.NotAvailableMethodsError);
|
|
return false;
|
|
}
|
|
|
|
for (var i = 0; i < methods.length; i++) {
|
|
if (methods[i].checked) {
|
|
return true;
|
|
}
|
|
}
|
|
alert(this.localized_data.SpecifyMethodError);
|
|
return false;
|
|
},
|
|
|
|
save: function () {
|
|
if (Checkout.loadWaiting !== false) return;
|
|
|
|
if (this.validate()) {
|
|
Checkout.setLoadWaiting('payment-method');
|
|
$.ajax({
|
|
cache: false,
|
|
url: this.saveUrl,
|
|
data: $(this.form).serialize(),
|
|
type: "POST",
|
|
success: this.nextStep,
|
|
complete: this.resetLoadWaiting,
|
|
error: Checkout.ajaxFailure
|
|
});
|
|
}
|
|
},
|
|
|
|
resetLoadWaiting: function () {
|
|
Checkout.setLoadWaiting(false);
|
|
},
|
|
|
|
nextStep: function (response) {
|
|
if (response.error) {
|
|
if (typeof response.message === 'string') {
|
|
alert(response.message);
|
|
} else {
|
|
alert(response.message.join("\n"));
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
Checkout.setStepResponse(response);
|
|
}
|
|
};
|
|
|
|
|
|
|
|
var PaymentInfo = {
|
|
form: false,
|
|
saveUrl: false,
|
|
|
|
init: function (form, saveUrl) {
|
|
this.form = form;
|
|
this.saveUrl = saveUrl;
|
|
},
|
|
|
|
save: function () {
|
|
if (Checkout.loadWaiting !== false) return;
|
|
|
|
Checkout.setLoadWaiting('payment-info');
|
|
$.ajax({
|
|
cache: false,
|
|
url: this.saveUrl,
|
|
data: $(this.form).serialize(),
|
|
type: "POST",
|
|
success: this.nextStep,
|
|
complete: this.resetLoadWaiting,
|
|
error: Checkout.ajaxFailure
|
|
});
|
|
},
|
|
|
|
resetLoadWaiting: function () {
|
|
Checkout.setLoadWaiting(false);
|
|
},
|
|
|
|
nextStep: function (response) {
|
|
if (response.error) {
|
|
if (typeof response.message === 'string') {
|
|
alert(response.message);
|
|
} else {
|
|
alert(response.message.join("\n"));
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
Checkout.setStepResponse(response);
|
|
}
|
|
};
|
|
|
|
|
|
|
|
var ConfirmOrder = {
|
|
form: false,
|
|
saveUrl: false,
|
|
isSuccess: false,
|
|
isCaptchaEnabled: false,
|
|
isReCaptchaV3: false,
|
|
recaptchaPublicKey: "",
|
|
div: false,
|
|
|
|
init: function (saveUrl, successUrl, isCaptchaEnabled, isReCaptchaV3, recaptchaPublicKey, div) {
|
|
this.div = div;
|
|
this.saveUrl = saveUrl;
|
|
this.successUrl = successUrl;
|
|
this.isCaptchaEnabled = isCaptchaEnabled;
|
|
this.isReCaptchaV3 = isReCaptchaV3;
|
|
this.recaptchaPublicKey = recaptchaPublicKey;
|
|
},
|
|
|
|
save: async function () {
|
|
if (Checkout.loadWaiting !== false) return;
|
|
|
|
//terms of service
|
|
var termOfServiceOk = true;
|
|
if ($('#termsofservice').length > 0) {
|
|
//terms of service element exists
|
|
if (!$('#termsofservice').is(':checked')) {
|
|
$("#terms-of-service-warning-box").dialog();
|
|
termOfServiceOk = false;
|
|
} else {
|
|
termOfServiceOk = true;
|
|
}
|
|
}
|
|
if (termOfServiceOk) {
|
|
Checkout.setLoadWaiting('confirm-order');
|
|
var postData = {};
|
|
|
|
if (ConfirmOrder.isCaptchaEnabled) {
|
|
var captchaTok = await ConfirmOrder.getCaptchaToken('OpcConfirmOrder');
|
|
postData['g-recaptcha-response'] = captchaTok;
|
|
}
|
|
|
|
addAntiForgeryToken(postData);
|
|
$.ajax({
|
|
cache: false,
|
|
url: this.saveUrl,
|
|
data: postData,
|
|
type: "POST",
|
|
success: this.nextStep,
|
|
complete: this.resetLoadWaiting,
|
|
error: Checkout.ajaxFailure
|
|
});
|
|
} else {
|
|
return false;
|
|
}
|
|
},
|
|
|
|
getCaptchaToken: async function (action) {
|
|
var recaptchaToken = ''
|
|
if (ConfirmOrder.isReCaptchaV3) {
|
|
grecaptcha.ready(() => {
|
|
grecaptcha.execute(this.recaptchaPublicKey, { action: action }).then((token) => {
|
|
recaptchaToken = token;
|
|
});
|
|
});
|
|
while (recaptchaToken == '') {
|
|
await new Promise(t => setTimeout(t, 100));
|
|
}
|
|
} else {
|
|
recaptchaToken = $(this.div).find('.captcha-box textarea[name="g-recaptcha-response"]').val();
|
|
}
|
|
|
|
return recaptchaToken;
|
|
},
|
|
|
|
resetLoadWaiting: function (transport) {
|
|
Checkout.setLoadWaiting(false, ConfirmOrder.isSuccess);
|
|
},
|
|
|
|
nextStep: function (response) {
|
|
if (response.error) {
|
|
if (typeof response.message === 'string') {
|
|
alert(response.message);
|
|
} else {
|
|
alert(response.message.join("\n"));
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
if (response.redirect) {
|
|
ConfirmOrder.isSuccess = true;
|
|
location.href = response.redirect;
|
|
return;
|
|
}
|
|
if (response.success) {
|
|
ConfirmOrder.isSuccess = true;
|
|
window.location = ConfirmOrder.successUrl;
|
|
}
|
|
|
|
Checkout.setStepResponse(response);
|
|
}
|
|
};
|