ng-easycommerce-v18 0.4.1-beta.1 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +121 -126
- package/assets/decidirFormEc.html +514 -514
- package/assets/ec-i18n/ct.json +282 -286
- package/assets/ec-i18n/en.json +1 -12
- package/assets/ec-i18n/es.json +434 -445
- package/assets/ec-i18n/fr.json +0 -4
- package/assets/ec-i18n/gl.json +282 -286
- package/assets/ec-i18n/pr.json +282 -286
- package/assets/images/cards-occasional.svg +21 -21
- package/assets/recaptcha/recaptcha-site-keys.json +3 -3
- package/assets/recaptcha/recaptcha-sites-prod.json +38 -38
- package/assets/recaptcha/recaptcha-sites.json +52 -52
- package/esm2022/lib/api/connection.service.mjs +1 -1
- package/esm2022/lib/classes/checkout/steps.mjs +1 -1
- package/esm2022/lib/classes/component-helper.mjs +1 -1
- package/esm2022/lib/classes/filters/attributes-filter.mjs +1 -1
- package/esm2022/lib/classes/filters/category-filter.mjs +1 -1
- package/esm2022/lib/classes/filters/dynamics-filter.mjs +1 -1
- package/esm2022/lib/classes/filters/filter-factory.mjs +1 -1
- package/esm2022/lib/classes/filters/filter.mjs +1 -1
- package/esm2022/lib/classes/filters/index.mjs +1 -1
- package/esm2022/lib/classes/filters/price_range-filter.mjs +1 -1
- package/esm2022/lib/classes/filters/sort-filter.mjs +1 -1
- package/esm2022/lib/classes/index.mjs +1 -1
- package/esm2022/lib/classes/user.mjs +1 -1
- package/esm2022/lib/constants/api.constants.service.mjs +1 -1
- package/esm2022/lib/constants/core.constants.service.mjs +1 -1
- package/esm2022/lib/constants/index.mjs +1 -1
- package/esm2022/lib/ec-components/abstractions-components/block-ec.component.mjs +1 -1
- package/esm2022/lib/ec-components/abstractions-components/index.mjs +1 -1
- package/esm2022/lib/ec-components/abstractions-components/menu-ec.component.mjs +1 -1
- package/esm2022/lib/ec-components/account-ec/account-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/account-ec/index.mjs +1 -1
- package/esm2022/lib/ec-components/account-ec/order-ec/order-ec.component.mjs +9 -5
- package/esm2022/lib/ec-components/account-ec/orders-list-ec/orders-list-ec.component.mjs +5 -11
- package/esm2022/lib/ec-components/auth-ec/auth-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/index.mjs +1 -1
- package/esm2022/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/password-reset-ec/password-reset-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/blocks-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/index.mjs +1 -1
- package/esm2022/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/cart-ec/cart-ec.component.mjs +3 -12
- package/esm2022/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/cart-ec/index.mjs +1 -1
- package/esm2022/lib/ec-components/checkout-ec/checkout-ec.component.mjs +3 -10
- package/esm2022/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.mjs +3 -5
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.mjs +4 -44
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/index.mjs +1 -1
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/success-ec/success-ec.component.mjs +3 -4
- package/esm2022/lib/ec-components/collection-ec/collection-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/contact-ec/contact-ec.component.mjs +7 -3
- package/esm2022/lib/ec-components/coupon-ec/coupon-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/faqs-ec/faqs-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/filters-ec/filters-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/filters-sort-ec/filters-sort-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/footer-ec/footer-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +13 -27
- package/esm2022/lib/ec-components/home-ec/home-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/index.mjs +1 -2
- package/esm2022/lib/ec-components/price-range-filter/price-range-filter.component.mjs +3 -3
- package/esm2022/lib/ec-components/product-detail-ec/product-detail-ec.component.mjs +1 -1
- package/esm2022/lib/ec-components/product-ec/product-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/related-products-ec/related-products-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/reviews-ec/reviews-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/reviews-form-ec/reviews-form-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/section-container-ec/section-container-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/share-ec/share-buttons-ec/index.mjs +1 -1
- package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-email-ec/share-email-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-facebook-ec/share-facebook-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-pinterest-ec/share-pinterest-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-twitter-ec/share-twitter-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-whatsapp-ec/share-whatsapp-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/share-ec/share-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/sidebar-ec/sidebar-ec.component.mjs +7 -5
- package/esm2022/lib/ec-components/stores-ec/stores-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/variants-ec/variants-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/decidir-ec/decidir-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/index.mjs +1 -1
- package/esm2022/lib/ec-components/widgets-ec/loading/index.mjs +1 -1
- package/esm2022/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/price-ec/price-ec.component.mjs +11 -5
- package/esm2022/lib/ec-components/widgets-ec/rating-ec/rating-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/redsys-catch-ec/redsys-catch-ec.component.mjs +3 -3
- package/esm2022/lib/ec-directive/index.mjs +1 -1
- package/esm2022/lib/ec-directive/product-off.directive.mjs +1 -1
- package/esm2022/lib/ec-directive/product-stock.directive.mjs +1 -1
- package/esm2022/lib/ec-guards/auth.guard.mjs +1 -1
- package/esm2022/lib/ec-pipe/ec-currency-symbol.pipe.mjs +1 -1
- package/esm2022/lib/ec-pipe/ec-safe-html.pipe.mjs +1 -1
- package/esm2022/lib/ec-pipe/index.mjs +1 -1
- package/esm2022/lib/ec-services/addressing.service.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/analytics.service.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/doppler.service.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/facebook-pixel.service.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/gtm.service.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/index.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/metricool-pixel.service.mjs +11 -11
- package/esm2022/lib/ec-services/auth.service.mjs +1 -1
- package/esm2022/lib/ec-services/auth.storage.service.mjs +1 -1
- package/esm2022/lib/ec-services/base-api.service.mjs +1 -1
- package/esm2022/lib/ec-services/blocks-repository.service.mjs +1 -1
- package/esm2022/lib/ec-services/blocks.service.mjs +1 -1
- package/esm2022/lib/ec-services/cart.service.mjs +7 -42
- package/esm2022/lib/ec-services/channel.service.mjs +1 -1
- package/esm2022/lib/ec-services/checkout.service.mjs +1 -1
- package/esm2022/lib/ec-services/currency.service.mjs +1 -1
- package/esm2022/lib/ec-services/filters.service.mjs +1 -1
- package/esm2022/lib/ec-services/form.service.mjs +1 -1
- package/esm2022/lib/ec-services/index.mjs +1 -2
- package/esm2022/lib/ec-services/local-storage.service.mjs +1 -1
- package/esm2022/lib/ec-services/ngx-local-storage.service.mjs +1 -1
- package/esm2022/lib/ec-services/options.service.mjs +1 -1
- package/esm2022/lib/ec-services/order-utility.service.mjs +1 -1
- package/esm2022/lib/ec-services/orders.service.mjs +1 -1
- package/esm2022/lib/ec-services/pagination.service.mjs +1 -1
- package/esm2022/lib/ec-services/parameters.service.mjs +1 -1
- package/esm2022/lib/ec-services/payment.service.mjs +1 -1
- package/esm2022/lib/ec-services/product-detail.service.mjs +7 -45
- package/esm2022/lib/ec-services/products.service.mjs +1 -1
- package/esm2022/lib/ec-services/re-captcha.service.mjs +1 -1
- package/esm2022/lib/ec-services/reviews.service.mjs +1 -1
- package/esm2022/lib/ec-services/runtime-config.service.mjs +1 -1
- package/esm2022/lib/ec-services/shipment.service.mjs +1 -1
- package/esm2022/lib/ec-services/stores.service.mjs +1 -1
- package/esm2022/lib/ec-services/test.service.mjs +1 -1
- package/esm2022/lib/ec-services/toast.service.mjs +1 -1
- package/esm2022/lib/interceptors/auth.interceptor.mjs +1 -1
- package/esm2022/lib/interceptors/index.mjs +1 -1
- package/esm2022/lib/interceptors/runtime-config.interceptor.mjs +1 -1
- package/esm2022/lib/interfaces/analytics/event-key.mjs +1 -1
- package/esm2022/lib/interfaces/analytics/facebook-pixel-data.mjs +1 -1
- package/esm2022/lib/interfaces/analytics/gtm-config.mjs +1 -1
- package/esm2022/lib/interfaces/analytics/index.mjs +1 -1
- package/esm2022/lib/interfaces/blocks.mjs +1 -1
- package/esm2022/lib/interfaces/checkout.mjs +1 -1
- package/esm2022/lib/interfaces/connection.mjs +1 -1
- package/esm2022/lib/interfaces/coupon.mjs +1 -1
- package/esm2022/lib/interfaces/currency.mjs +1 -1
- package/esm2022/lib/interfaces/deserializable.mjs +1 -1
- package/esm2022/lib/interfaces/environment.mjs +1 -1
- package/esm2022/lib/interfaces/faqs.mjs +1 -1
- package/esm2022/lib/interfaces/filter.mjs +1 -1
- package/esm2022/lib/interfaces/index.mjs +1 -1
- package/esm2022/lib/interfaces/options.mjs +1 -1
- package/esm2022/lib/interfaces/pagination.mjs +1 -1
- package/esm2022/lib/interfaces/parameter.mjs +1 -1
- package/esm2022/lib/interfaces/product.mjs +1 -1
- package/esm2022/lib/interfaces/runtime-config.mjs +1 -1
- package/esm2022/lib/interfaces/step.mjs +1 -1
- package/esm2022/lib/interfaces/storage.mjs +1 -1
- package/esm2022/lib/interfaces/store.mjs +1 -1
- package/esm2022/lib/interfaces/types/user.type.mjs +1 -1
- package/esm2022/lib/providers/index.mjs +1 -1
- package/esm2022/lib/providers/provideEnvironment.mjs +1 -1
- package/esm2022/lib/providers/provideRuntimeConfig.mjs +1 -1
- package/esm2022/lib/stores/currency.store.mjs +1 -1
- package/esm2022/public-api.mjs +1 -1
- package/fesm2022/ng-easycommerce-v18.mjs +181 -412
- package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
- package/lib/ec-components/account-ec/order-ec/order-ec.component.d.ts +2 -2
- package/lib/ec-components/account-ec/orders-list-ec/orders-list-ec.component.d.ts +0 -3
- package/lib/ec-components/cart-ec/cart-ec.component.d.ts +2 -4
- package/lib/ec-components/checkout-ec/checkout-ec.component.d.ts +0 -2
- package/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.d.ts +0 -2
- package/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.d.ts +0 -6
- package/lib/ec-components/checkout-ec/success-ec/success-ec.component.d.ts +0 -1
- package/lib/ec-components/contact-ec/contact-ec.component.d.ts +1 -0
- package/lib/ec-components/header-ec/header-ec.component.d.ts +4 -12
- package/lib/ec-components/index.d.ts +0 -1
- package/lib/ec-components/sidebar-ec/sidebar-ec.component.d.ts +1 -2
- package/lib/ec-components/widgets-ec/price-ec/price-ec.component.d.ts +4 -2
- package/lib/ec-services/cart.service.d.ts +0 -1
- package/lib/ec-services/index.d.ts +0 -1
- package/lib/ec-services/product-detail.service.d.ts +0 -3
- package/package.json +1 -1
- package/esm2022/lib/ec-components/credit-account-banner-ec/credit-account-banner-ec.component.mjs +0 -79
- package/esm2022/lib/ec-services/price-visibility.service.mjs +0 -40
- package/lib/ec-components/credit-account-banner-ec/credit-account-banner-ec.component.d.ts +0 -27
- package/lib/ec-services/price-visibility.service.d.ts +0 -23
|
@@ -1,514 +1,514 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="es">
|
|
3
|
-
|
|
4
|
-
<head>
|
|
5
|
-
<meta charset="UTF-8">
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
-
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
|
|
8
|
-
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
|
|
9
|
-
<title>Decidir</title>
|
|
10
|
-
|
|
11
|
-
<script defer>
|
|
12
|
-
const subtotal = localStorage.getItem('subtotal')
|
|
13
|
-
// console.log(subtotal);
|
|
14
|
-
const dataDecidirHead = localStorage.getItem('dataDecidir')
|
|
15
|
-
&& JSON.parse(localStorage.getItem('dataDecidir'))
|
|
16
|
-
let modoHead = dataDecidirHead?.config?.public_environment || null
|
|
17
|
-
modoHead && (modoHead == 'prod' && (modoHead = false) || modoHead == 'test' && (modoHead = true))
|
|
18
|
-
//console.log('modo head',modoHead, dataDecidirHead)
|
|
19
|
-
!modoHead && (modoHead = window.location.host.includes('easycommerce'))
|
|
20
|
-
let my_awesome_script = document.createElement('script');
|
|
21
|
-
my_awesome_script.setAttribute('defer', 'defer')
|
|
22
|
-
my_awesome_script.setAttribute('src',
|
|
23
|
-
'https://live.decidir.com/static/v2.6.4/decidir.js'
|
|
24
|
-
);
|
|
25
|
-
document.head.appendChild(my_awesome_script);
|
|
26
|
-
|
|
27
|
-
//Script para el fingerpoint
|
|
28
|
-
function makeSessionId(length) {
|
|
29
|
-
var result = '';
|
|
30
|
-
var characters = 'abcdefghijklmnopqrstuvwxyz0123456789';
|
|
31
|
-
var charactersLength = characters.length;
|
|
32
|
-
for (var i = 0; i < length; i++) {
|
|
33
|
-
result += characters.charAt(Math.floor(Math.random() *
|
|
34
|
-
charactersLength));
|
|
35
|
-
}
|
|
36
|
-
return result;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
function addStreetAndNro() {
|
|
40
|
-
let row = document.createElement('div')
|
|
41
|
-
row.classList.add('row')
|
|
42
|
-
/*Columna Calle*/
|
|
43
|
-
let colAddress = document.createElement('div')
|
|
44
|
-
colAddress.classList.add('col-md-9', 'col-12')
|
|
45
|
-
let contInput = document.createElement('div')
|
|
46
|
-
contInput.classList.add('form-floating', 'mb-3')
|
|
47
|
-
let inputAddress = document.createElement('input')
|
|
48
|
-
inputAddress.classList.add('form-control')
|
|
49
|
-
inputAddress.setAttribute('data-decidir', 'address')
|
|
50
|
-
inputAddress.setAttribute('type', 'text')
|
|
51
|
-
inputAddress.setAttribute('id', 'address')
|
|
52
|
-
inputAddress.setAttribute('name', 'address')
|
|
53
|
-
inputAddress.setAttribute('required', '')
|
|
54
|
-
let labelAdress = document.createElement('label')
|
|
55
|
-
labelAdress.setAttribute('for', 'address')
|
|
56
|
-
labelAdress.textContent = 'Calle:'
|
|
57
|
-
contInput.appendChild(inputAddress)
|
|
58
|
-
contInput.appendChild(labelAdress)
|
|
59
|
-
colAddress.appendChild(contInput)
|
|
60
|
-
/*---*/
|
|
61
|
-
|
|
62
|
-
/*Columna Nro*/
|
|
63
|
-
let colNro = document.createElement('div')
|
|
64
|
-
colNro.classList.add('col-md-3', 'col-12')
|
|
65
|
-
let contNro = document.createElement('div')
|
|
66
|
-
contNro.classList.add('form-floating', 'mb-3')
|
|
67
|
-
let inputNro = document.createElement('input')
|
|
68
|
-
inputNro.classList.add('form-control')
|
|
69
|
-
inputNro.setAttribute('data-decidir', 'nro')
|
|
70
|
-
inputNro.setAttribute('type', 'number')
|
|
71
|
-
inputNro.setAttribute('id', 'nro')
|
|
72
|
-
inputNro.setAttribute('name', 'nro')
|
|
73
|
-
inputNro.setAttribute('required', '')
|
|
74
|
-
let labelNro = document.createElement('label')
|
|
75
|
-
labelNro.setAttribute('for', 'nro')
|
|
76
|
-
labelNro.textContent = 'Nro:'
|
|
77
|
-
contNro.appendChild(inputNro)
|
|
78
|
-
contNro.appendChild(labelNro)
|
|
79
|
-
colNro.appendChild(contNro)
|
|
80
|
-
/*---*/
|
|
81
|
-
|
|
82
|
-
row.appendChild(colAddress)
|
|
83
|
-
row.appendChild(colNro)
|
|
84
|
-
return row
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
function addTipoDeInteres() {
|
|
88
|
-
let row = document.createElement('div');
|
|
89
|
-
row.classList.add('row');
|
|
90
|
-
|
|
91
|
-
/* Columna Tipo de Interés */
|
|
92
|
-
let colInteres = document.createElement('div');
|
|
93
|
-
colInteres.classList.add('col-md-6', 'col-12');
|
|
94
|
-
let contSelect = document.createElement('div');
|
|
95
|
-
contSelect.classList.add('form-floating', 'mb-3');
|
|
96
|
-
|
|
97
|
-
let selectInteres = document.createElement('select');
|
|
98
|
-
selectInteres.classList.add('form-select');
|
|
99
|
-
selectInteres.setAttribute('data-decidir', 'tipo_interes');
|
|
100
|
-
selectInteres.setAttribute('id', 'tipo_interes');
|
|
101
|
-
selectInteres.setAttribute('name', 'tipo_interes');
|
|
102
|
-
selectInteres.setAttribute('required', '');
|
|
103
|
-
|
|
104
|
-
// Opción predeterminada
|
|
105
|
-
let optionDefault = document.createElement('option');
|
|
106
|
-
optionDefault.value = '';
|
|
107
|
-
optionDefault.textContent = 'Seleccione cantidad de cuotas';
|
|
108
|
-
optionDefault.disabled = true;
|
|
109
|
-
optionDefault.selected = true;
|
|
110
|
-
selectInteres.appendChild(optionDefault);
|
|
111
|
-
|
|
112
|
-
// Agregar cuotas activas como opciones
|
|
113
|
-
dataDecidirHead.config.public_card_type_configurations.forEach((cuota) => {
|
|
114
|
-
if (cuota.active) {
|
|
115
|
-
let option = document.createElement('option');
|
|
116
|
-
option.value = cuota.dues;
|
|
117
|
-
option.setAttribute('data-interest-rate', cuota.interestRate);
|
|
118
|
-
option.textContent = `${cuota.dues} cuotas (${cuota.interestRate}% interés)`;
|
|
119
|
-
selectInteres.appendChild(option);
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
|
|
123
|
-
let labelInteres = document.createElement('label');
|
|
124
|
-
labelInteres.setAttribute('for', 'tipo_interes');
|
|
125
|
-
labelInteres.textContent = 'Tipo de interés:';
|
|
126
|
-
|
|
127
|
-
contSelect.appendChild(selectInteres);
|
|
128
|
-
contSelect.appendChild(labelInteres);
|
|
129
|
-
colInteres.appendChild(contSelect);
|
|
130
|
-
/*---*/
|
|
131
|
-
|
|
132
|
-
/* Columna Total con interés */
|
|
133
|
-
let colRate = document.createElement('div');
|
|
134
|
-
colRate.classList.add('col-md-6', 'col-12');
|
|
135
|
-
let contInputRate = document.createElement('div');
|
|
136
|
-
contInputRate.classList.add('form-floating', 'mb-3');
|
|
137
|
-
|
|
138
|
-
let inputRate = document.createElement('input');
|
|
139
|
-
inputRate.classList.add('form-control');
|
|
140
|
-
inputRate.setAttribute('type', 'text');
|
|
141
|
-
inputRate.setAttribute('id', 'total_con_interes');
|
|
142
|
-
inputRate.setAttribute('name', 'total_con_interes');
|
|
143
|
-
inputRate.setAttribute('readonly', true); // Input de solo lectura
|
|
144
|
-
inputRate.setAttribute('placeholder', 'Total con interés');
|
|
145
|
-
|
|
146
|
-
let labelRate = document.createElement('label');
|
|
147
|
-
labelRate.setAttribute('for', 'total_con_interes');
|
|
148
|
-
labelRate.textContent = 'Total con interés:';
|
|
149
|
-
|
|
150
|
-
contInputRate.appendChild(inputRate);
|
|
151
|
-
contInputRate.appendChild(labelRate);
|
|
152
|
-
colRate.appendChild(contInputRate);
|
|
153
|
-
/*---*/
|
|
154
|
-
|
|
155
|
-
// Agregar columnas al row
|
|
156
|
-
row.appendChild(colInteres);
|
|
157
|
-
row.appendChild(colRate);
|
|
158
|
-
|
|
159
|
-
// Asegurarse de que el subtotal es un número
|
|
160
|
-
let subtotal = parseFloat(localStorage.getItem('subtotal'));
|
|
161
|
-
|
|
162
|
-
if (isNaN(subtotal)) {
|
|
163
|
-
subtotal = 0; // Si no es un número válido, lo dejamos como 0
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
// Evento para cambiar el valor del input según la opción seleccionada
|
|
167
|
-
selectInteres.addEventListener('change', function () {
|
|
168
|
-
let selectedOption = selectInteres.options[selectInteres.selectedIndex];
|
|
169
|
-
let interestRate = parseFloat(selectedOption.getAttribute('data-interest-rate')) || 0;
|
|
170
|
-
|
|
171
|
-
// Calcular el total con el interés aplicado
|
|
172
|
-
let totalConInteres = subtotal * (1 + interestRate / 100);
|
|
173
|
-
|
|
174
|
-
// Formatear el total con separadores de miles
|
|
175
|
-
let totalFormateado = totalConInteres.toLocaleString('es-ES', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
|
|
176
|
-
|
|
177
|
-
// Actualizar el input con el valor calculado y formateado
|
|
178
|
-
if (!isNaN(totalConInteres)) {
|
|
179
|
-
inputRate.value = totalFormateado; // Asignar el valor formateado al input
|
|
180
|
-
} else {
|
|
181
|
-
inputRate.value = ''; // Si el total es NaN, dejamos el campo vacío
|
|
182
|
-
}
|
|
183
|
-
});
|
|
184
|
-
|
|
185
|
-
return row;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
let my_copy_script = document.createElement('script');
|
|
192
|
-
my_copy_script.setAttribute('type', 'text/javascript');
|
|
193
|
-
|
|
194
|
-
let infoDecidir = JSON.parse(localStorage.getItem('dataDecidir')) || undefined
|
|
195
|
-
//console.log(infoDecidir)
|
|
196
|
-
let urlBase = 'https://h.online-metrix.net/fp/tags.js';
|
|
197
|
-
let org_id = infoDecidir?.config?.public_environment == 'test' ? '1snn5n9w' : 'k8vif92e'
|
|
198
|
-
let merchand_id = infoDecidir?.config?.public_merchand_id || 'decidir_agregador'
|
|
199
|
-
let cybersource = infoDecidir?.config?.public_cybersource || 'deshabilitado'
|
|
200
|
-
let session_id = makeSessionId(8)
|
|
201
|
-
|
|
202
|
-
my_copy_script.setAttribute('src', urlBase + '?org_id=' + org_id + '&session_id=' + merchand_id + session_id)
|
|
203
|
-
document.head.appendChild(my_copy_script)
|
|
204
|
-
|
|
205
|
-
</script>
|
|
206
|
-
</head>
|
|
207
|
-
|
|
208
|
-
<body>
|
|
209
|
-
|
|
210
|
-
<style>
|
|
211
|
-
.logo-pago-seguro-img {
|
|
212
|
-
/* width: 150px;
|
|
213
|
-
height: 48px; */
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
.loader {
|
|
217
|
-
border: 16px solid #f3f3f3;
|
|
218
|
-
border-top: 16px solid #dc3545;
|
|
219
|
-
border-radius: 50%;
|
|
220
|
-
width: 50px;
|
|
221
|
-
height: 50px;
|
|
222
|
-
animation: spin 2s linear infinite;
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
@keyframes spin {
|
|
226
|
-
0% {
|
|
227
|
-
transform: rotate(0deg);
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
100% {
|
|
231
|
-
transform: rotate(360deg);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
.flex-container {
|
|
236
|
-
display: flex;
|
|
237
|
-
justify-content: center;
|
|
238
|
-
align-items: center;
|
|
239
|
-
height: 80vh;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
.flex-container>div {
|
|
243
|
-
width: 100px;
|
|
244
|
-
height: 100px;
|
|
245
|
-
}
|
|
246
|
-
</style>
|
|
247
|
-
|
|
248
|
-
<div class="container-fluid">
|
|
249
|
-
<div class="row mt-3">
|
|
250
|
-
<div class="col-12">
|
|
251
|
-
<div class="card">
|
|
252
|
-
|
|
253
|
-
<div class="container-fluid mt-3">
|
|
254
|
-
<div class="row">
|
|
255
|
-
<div class="col-md-6 col-12">
|
|
256
|
-
<!-- <h5><b>Decidir</b></h5> -->
|
|
257
|
-
</div>
|
|
258
|
-
<div class="col-md-6 col-12">
|
|
259
|
-
<img src="../assets/images/cards-occasional.png" class="card-img-top" alt="...">
|
|
260
|
-
</div>
|
|
261
|
-
</div>
|
|
262
|
-
</div>
|
|
263
|
-
<div class="card-body">
|
|
264
|
-
<form action="" method="post" id="formulario">
|
|
265
|
-
<div>
|
|
266
|
-
<div id="contForm">
|
|
267
|
-
<div class="row">
|
|
268
|
-
<div class="col-md-8 col-12">
|
|
269
|
-
|
|
270
|
-
<div class="form-floating mb-3">
|
|
271
|
-
<input class="form-control" type="text" data-decidir="card_number"
|
|
272
|
-
placeholder="XXXXXXXXXXXXXXXX" maxlength="18" value=""
|
|
273
|
-
oninput="this.value = this.value.replace(/[^0-9.]/g, ''); this.value = this.value.replace(/(\..*)\./g, '$1');">
|
|
274
|
-
<label for="card_number">Numero de tarjeta:</label>
|
|
275
|
-
</div>
|
|
276
|
-
|
|
277
|
-
</div>
|
|
278
|
-
<div class="col-md-4 col-12">
|
|
279
|
-
|
|
280
|
-
<div class="form-floating mb-3">
|
|
281
|
-
<input class="form-control" type="text" data-decidir="security_code"
|
|
282
|
-
placeholder="XXX" maxlength="4" value=""
|
|
283
|
-
oninput="this.value = this.value.replace(/[^0-9.]/g, ''); this.value = this.value.replace(/(\..*)\./g, '$1');" />
|
|
284
|
-
<label for="security_code">Codigo de seguridad:</label>
|
|
285
|
-
</div>
|
|
286
|
-
|
|
287
|
-
</div>
|
|
288
|
-
</div>
|
|
289
|
-
<div class="row">
|
|
290
|
-
|
|
291
|
-
<div class="col-md-6 col-12">
|
|
292
|
-
<div class="form-floating mb-3">
|
|
293
|
-
<input class="form-control" type="text"
|
|
294
|
-
data-decidir="card_expiration_month" placeholder="MM" maxlength="2"
|
|
295
|
-
value=""
|
|
296
|
-
oninput="this.value = this.value.replace(/[^0-9.]/g, ''); this.value = this.value.replace(/(\..*)\./g, '$1');" />
|
|
297
|
-
<label for="card_expiration_month">Mes de vencimiento:</label>
|
|
298
|
-
</div>
|
|
299
|
-
</div>
|
|
300
|
-
|
|
301
|
-
<div class="col-md-6 col-12">
|
|
302
|
-
<div class="form-floating mb-3">
|
|
303
|
-
<input class="form-control" type="text"
|
|
304
|
-
data-decidir="card_expiration_year" placeholder="AA" maxlength="2"
|
|
305
|
-
value=""
|
|
306
|
-
oninput="this.value = this.value.replace(/[^0-9.]/g, ''); this.value = this.value.replace(/(\..*)\./g, '$1');" />
|
|
307
|
-
<label for="card_expiration_year">Año de vencimiento:</label>
|
|
308
|
-
</div>
|
|
309
|
-
</div>
|
|
310
|
-
</div>
|
|
311
|
-
<div class="row">
|
|
312
|
-
<div class="col-12 col-md-8">
|
|
313
|
-
<div class="form-floating mb-3">
|
|
314
|
-
<input class="form-control" type="text" data-decidir="card_holder_name"
|
|
315
|
-
placeholder="TITULAR" value="" />
|
|
316
|
-
<label for="card_holder_name">Nombre del titular:</label>
|
|
317
|
-
</div>
|
|
318
|
-
</div>
|
|
319
|
-
<div class="col-12 col-md-4">
|
|
320
|
-
<div class="form-floating mb-3">
|
|
321
|
-
<input class="form-control" id="date_of_birth" type="date"
|
|
322
|
-
data-decidir="date_of_birth" placeholder="" value="" required />
|
|
323
|
-
<label for="date_of_birth">Fecha de nacimiento:</label>
|
|
324
|
-
</div>
|
|
325
|
-
</div>
|
|
326
|
-
</div>
|
|
327
|
-
<div class="row">
|
|
328
|
-
<div class="col-md-6 col-12">
|
|
329
|
-
<div class="form-floating mb-3">
|
|
330
|
-
<select class="form-select" data-decidir="card_holder_doc_type">
|
|
331
|
-
<option value="dni">DNI</option>
|
|
332
|
-
</select>
|
|
333
|
-
<label for="card_holder_doc_type">Tipo de documento:</label>
|
|
334
|
-
</div>
|
|
335
|
-
</div>
|
|
336
|
-
<div class="col-md-6 col-12">
|
|
337
|
-
<div class="form-floating mb-3">
|
|
338
|
-
<input class="form-control" data-decidir="card_holder_doc_number"
|
|
339
|
-
placeholder="XXXXXXXXXX" maxlength="9" value=""
|
|
340
|
-
oninput="this.value = this.value.replace(/[^0-9.]/g, ''); this.value = this.value.replace(/(\..*)\./g, '$1');">
|
|
341
|
-
<label for="card_holder_doc_type">Numero de documento:</label>
|
|
342
|
-
</div>
|
|
343
|
-
</div>
|
|
344
|
-
</div>
|
|
345
|
-
</div>
|
|
346
|
-
<div class="w-100 text-center">
|
|
347
|
-
<div id="loadTokenBtn">
|
|
348
|
-
<div class="d-grid gap-2">
|
|
349
|
-
<input type="submit" value="Pagar" class="btn btn-outline-success mt-3" />
|
|
350
|
-
</div>
|
|
351
|
-
</div>
|
|
352
|
-
<div id="loadToken" class="text-center mt-4">
|
|
353
|
-
<div class="spinner-border" role="status">
|
|
354
|
-
<span class="visually-hidden">Cargando...</span>
|
|
355
|
-
</div>
|
|
356
|
-
</div>
|
|
357
|
-
</div>
|
|
358
|
-
</fieldset>
|
|
359
|
-
</form>
|
|
360
|
-
</div>
|
|
361
|
-
<div class="w-100 d-flex justify-content-end">
|
|
362
|
-
<div class="w-50 d-flex justify-content-end">
|
|
363
|
-
<img src="../assets/images/decidir-logo.png" class="card-img-top w-50 logo-pago-seguro-img "
|
|
364
|
-
alt="...">
|
|
365
|
-
</div>
|
|
366
|
-
</div>
|
|
367
|
-
</div>
|
|
368
|
-
|
|
369
|
-
</div>
|
|
370
|
-
</div>
|
|
371
|
-
</div>
|
|
372
|
-
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
|
|
373
|
-
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
|
|
374
|
-
|
|
375
|
-
<script defer>
|
|
376
|
-
if (cybersource != 'deshabilitado') {
|
|
377
|
-
document.getElementById('contForm').appendChild(addStreetAndNro())
|
|
378
|
-
document.getElementById('contForm').appendChild(addTipoDeInteres());
|
|
379
|
-
}
|
|
380
|
-
let iframe = document.createElement('iframe')
|
|
381
|
-
iframe.setAttribute('style', 'width: 100px; height: 100px; border: 0; position: absolute; top:-5000px;')
|
|
382
|
-
iframe.setAttribute('src', 'https://h.online-metrix.net/fp/tags?org_id=' + org_id + '&session_id=' + merchand_id + session_id)
|
|
383
|
-
|
|
384
|
-
document.body.appendChild(iframe)
|
|
385
|
-
|
|
386
|
-
window.onload = function () {
|
|
387
|
-
|
|
388
|
-
let loadToken = document.querySelector('#loadToken');
|
|
389
|
-
let loadTokenBtn = document.querySelector('#loadTokenBtn');
|
|
390
|
-
|
|
391
|
-
const isLoad = (state) => {
|
|
392
|
-
loadToken.style.display = !state && 'none' || 'block';
|
|
393
|
-
loadTokenBtn.style.display = state && 'none' || 'block';
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
isLoad(false)
|
|
397
|
-
|
|
398
|
-
const urlSandbox = "https://developers.decidir.com/api/v2";
|
|
399
|
-
const urlProduccion = "https://live.decidir.com/api/v2";
|
|
400
|
-
const dataRedirect = localStorage.getItem('dataRedirect')
|
|
401
|
-
const dataDecidir = localStorage.getItem('dataDecidir')
|
|
402
|
-
&& JSON.parse(localStorage.getItem('dataDecidir'))
|
|
403
|
-
|
|
404
|
-
const publicApiKey = dataDecidir?.config?.public_key
|
|
405
|
-
let cybersource = dataDecidir?.config?.public_cybersource && dataDecidir?.config?.public_cybersource == 'deshabilitado'
|
|
406
|
-
let modo = dataDecidir?.config?.public_environment || null
|
|
407
|
-
|
|
408
|
-
modo ? (modo == 'prod' ? modo = false : modo = true) : (modo = window.location.host.includes('easycommerce'))
|
|
409
|
-
|
|
410
|
-
const decidir = new Decidir(modo && modo ? urlSandbox : urlProduccion);
|
|
411
|
-
decidir.setPublishableKey(publicApiKey);
|
|
412
|
-
decidir.setTimeout(5000);
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
let form = document.querySelector('#formulario');
|
|
416
|
-
|
|
417
|
-
const setMessageInStore = (response) => {
|
|
418
|
-
if (response.hasOwnProperty('message')) {
|
|
419
|
-
localStorage.setItem('message', response.message)
|
|
420
|
-
}
|
|
421
|
-
if (response.hasOwnProperty('subMessage')) {
|
|
422
|
-
localStorage.setItem('subMessage', response.subMessage)
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
const sendToken = (data) => {
|
|
427
|
-
data['fraud_detection'] = {
|
|
428
|
-
"device_unique_identifier": session_id
|
|
429
|
-
}
|
|
430
|
-
data['date_of_birth'] = document.getElementById('date_of_birth').value;
|
|
431
|
-
// console.log('Datos para el envio: ', data)
|
|
432
|
-
// console.log(dataDecidir)
|
|
433
|
-
if (dataDecidir?.config?.public_cybersource != 'deshabilitado') {
|
|
434
|
-
data['address'] = {
|
|
435
|
-
'name': document.getElementById('address').value,
|
|
436
|
-
'number': document.getElementById('nro').value
|
|
437
|
-
}
|
|
438
|
-
data['subtotal'] = document.getElementById('total_con_interes').value
|
|
439
|
-
data['dues'] = document.getElementById('tipo_interes').value;
|
|
440
|
-
}
|
|
441
|
-
|
|
442
|
-
try {
|
|
443
|
-
fetch(dataRedirect, {
|
|
444
|
-
method: 'POST',
|
|
445
|
-
body: JSON.stringify(data),
|
|
446
|
-
headers: {
|
|
447
|
-
'Content-Type': 'application/json'
|
|
448
|
-
}
|
|
449
|
-
}).then(res => res.json())
|
|
450
|
-
.catch(error => {
|
|
451
|
-
console.error('Error:', error)
|
|
452
|
-
processError(response)
|
|
453
|
-
})
|
|
454
|
-
.then(response => {
|
|
455
|
-
// console.log('Success:', response)
|
|
456
|
-
setMessageInStore(response)
|
|
457
|
-
if (response.hasOwnProperty('status')) {
|
|
458
|
-
if (response.status == 'approved' || response.status == 'partially_authorized') {
|
|
459
|
-
processResponse(response)
|
|
460
|
-
} else {
|
|
461
|
-
processError(response)
|
|
462
|
-
}
|
|
463
|
-
} else {
|
|
464
|
-
processError(response)
|
|
465
|
-
}
|
|
466
|
-
});
|
|
467
|
-
} catch (error) {
|
|
468
|
-
processError(response)
|
|
469
|
-
}
|
|
470
|
-
localStorage.removeItem('dataRedirect')
|
|
471
|
-
localStorage.removeItem('dataDecidir')
|
|
472
|
-
localStorage.removeItem('subtotal')
|
|
473
|
-
}
|
|
474
|
-
|
|
475
|
-
const sdkResponseHandler = (status, response) => {
|
|
476
|
-
// console.log('Respuesta: ', response)
|
|
477
|
-
if (status != 200 && status != 201) {
|
|
478
|
-
//Manejo de error: Ver Respuesta de Error
|
|
479
|
-
processError(response)
|
|
480
|
-
} else {
|
|
481
|
-
//Manejo de respuesta donde response = {token: "99ab0740-4ef9-4b38-bdf9-c4c963459b22"}
|
|
482
|
-
sendToken(response)
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
|
|
486
|
-
const sendForm = (event) => {
|
|
487
|
-
isLoad(true)
|
|
488
|
-
// console.log('Formulario: ', form)
|
|
489
|
-
event.preventDefault();
|
|
490
|
-
decidir.createToken(form, sdkResponseHandler);
|
|
491
|
-
return false;
|
|
492
|
-
}
|
|
493
|
-
|
|
494
|
-
const processError = (error) => {
|
|
495
|
-
// console.log("ERROR ENVIO BACK ", error);
|
|
496
|
-
isLoad(false)
|
|
497
|
-
localStorage.setItem('state', 'failure')
|
|
498
|
-
}
|
|
499
|
-
|
|
500
|
-
const processResponse = (response) => {
|
|
501
|
-
// console.log("ENVIO BACK ", response);
|
|
502
|
-
isLoad(false)
|
|
503
|
-
localStorage.setItem('state', response.status == 'approved' ? 'success' : 'partially_authorized')
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
form.addEventListener('submit', sendForm);
|
|
507
|
-
|
|
508
|
-
};
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
</script>
|
|
512
|
-
</body>
|
|
513
|
-
|
|
514
|
-
</html>
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="es">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8">
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
+
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
|
|
8
|
+
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
|
|
9
|
+
<title>Decidir</title>
|
|
10
|
+
|
|
11
|
+
<script defer>
|
|
12
|
+
const subtotal = localStorage.getItem('subtotal')
|
|
13
|
+
// console.log(subtotal);
|
|
14
|
+
const dataDecidirHead = localStorage.getItem('dataDecidir')
|
|
15
|
+
&& JSON.parse(localStorage.getItem('dataDecidir'))
|
|
16
|
+
let modoHead = dataDecidirHead?.config?.public_environment || null
|
|
17
|
+
modoHead && (modoHead == 'prod' && (modoHead = false) || modoHead == 'test' && (modoHead = true))
|
|
18
|
+
//console.log('modo head',modoHead, dataDecidirHead)
|
|
19
|
+
!modoHead && (modoHead = window.location.host.includes('easycommerce'))
|
|
20
|
+
let my_awesome_script = document.createElement('script');
|
|
21
|
+
my_awesome_script.setAttribute('defer', 'defer')
|
|
22
|
+
my_awesome_script.setAttribute('src',
|
|
23
|
+
'https://live.decidir.com/static/v2.6.4/decidir.js'
|
|
24
|
+
);
|
|
25
|
+
document.head.appendChild(my_awesome_script);
|
|
26
|
+
|
|
27
|
+
//Script para el fingerpoint
|
|
28
|
+
function makeSessionId(length) {
|
|
29
|
+
var result = '';
|
|
30
|
+
var characters = 'abcdefghijklmnopqrstuvwxyz0123456789';
|
|
31
|
+
var charactersLength = characters.length;
|
|
32
|
+
for (var i = 0; i < length; i++) {
|
|
33
|
+
result += characters.charAt(Math.floor(Math.random() *
|
|
34
|
+
charactersLength));
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function addStreetAndNro() {
|
|
40
|
+
let row = document.createElement('div')
|
|
41
|
+
row.classList.add('row')
|
|
42
|
+
/*Columna Calle*/
|
|
43
|
+
let colAddress = document.createElement('div')
|
|
44
|
+
colAddress.classList.add('col-md-9', 'col-12')
|
|
45
|
+
let contInput = document.createElement('div')
|
|
46
|
+
contInput.classList.add('form-floating', 'mb-3')
|
|
47
|
+
let inputAddress = document.createElement('input')
|
|
48
|
+
inputAddress.classList.add('form-control')
|
|
49
|
+
inputAddress.setAttribute('data-decidir', 'address')
|
|
50
|
+
inputAddress.setAttribute('type', 'text')
|
|
51
|
+
inputAddress.setAttribute('id', 'address')
|
|
52
|
+
inputAddress.setAttribute('name', 'address')
|
|
53
|
+
inputAddress.setAttribute('required', '')
|
|
54
|
+
let labelAdress = document.createElement('label')
|
|
55
|
+
labelAdress.setAttribute('for', 'address')
|
|
56
|
+
labelAdress.textContent = 'Calle:'
|
|
57
|
+
contInput.appendChild(inputAddress)
|
|
58
|
+
contInput.appendChild(labelAdress)
|
|
59
|
+
colAddress.appendChild(contInput)
|
|
60
|
+
/*---*/
|
|
61
|
+
|
|
62
|
+
/*Columna Nro*/
|
|
63
|
+
let colNro = document.createElement('div')
|
|
64
|
+
colNro.classList.add('col-md-3', 'col-12')
|
|
65
|
+
let contNro = document.createElement('div')
|
|
66
|
+
contNro.classList.add('form-floating', 'mb-3')
|
|
67
|
+
let inputNro = document.createElement('input')
|
|
68
|
+
inputNro.classList.add('form-control')
|
|
69
|
+
inputNro.setAttribute('data-decidir', 'nro')
|
|
70
|
+
inputNro.setAttribute('type', 'number')
|
|
71
|
+
inputNro.setAttribute('id', 'nro')
|
|
72
|
+
inputNro.setAttribute('name', 'nro')
|
|
73
|
+
inputNro.setAttribute('required', '')
|
|
74
|
+
let labelNro = document.createElement('label')
|
|
75
|
+
labelNro.setAttribute('for', 'nro')
|
|
76
|
+
labelNro.textContent = 'Nro:'
|
|
77
|
+
contNro.appendChild(inputNro)
|
|
78
|
+
contNro.appendChild(labelNro)
|
|
79
|
+
colNro.appendChild(contNro)
|
|
80
|
+
/*---*/
|
|
81
|
+
|
|
82
|
+
row.appendChild(colAddress)
|
|
83
|
+
row.appendChild(colNro)
|
|
84
|
+
return row
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
function addTipoDeInteres() {
|
|
88
|
+
let row = document.createElement('div');
|
|
89
|
+
row.classList.add('row');
|
|
90
|
+
|
|
91
|
+
/* Columna Tipo de Interés */
|
|
92
|
+
let colInteres = document.createElement('div');
|
|
93
|
+
colInteres.classList.add('col-md-6', 'col-12');
|
|
94
|
+
let contSelect = document.createElement('div');
|
|
95
|
+
contSelect.classList.add('form-floating', 'mb-3');
|
|
96
|
+
|
|
97
|
+
let selectInteres = document.createElement('select');
|
|
98
|
+
selectInteres.classList.add('form-select');
|
|
99
|
+
selectInteres.setAttribute('data-decidir', 'tipo_interes');
|
|
100
|
+
selectInteres.setAttribute('id', 'tipo_interes');
|
|
101
|
+
selectInteres.setAttribute('name', 'tipo_interes');
|
|
102
|
+
selectInteres.setAttribute('required', '');
|
|
103
|
+
|
|
104
|
+
// Opción predeterminada
|
|
105
|
+
let optionDefault = document.createElement('option');
|
|
106
|
+
optionDefault.value = '';
|
|
107
|
+
optionDefault.textContent = 'Seleccione cantidad de cuotas';
|
|
108
|
+
optionDefault.disabled = true;
|
|
109
|
+
optionDefault.selected = true;
|
|
110
|
+
selectInteres.appendChild(optionDefault);
|
|
111
|
+
|
|
112
|
+
// Agregar cuotas activas como opciones
|
|
113
|
+
dataDecidirHead.config.public_card_type_configurations.forEach((cuota) => {
|
|
114
|
+
if (cuota.active) {
|
|
115
|
+
let option = document.createElement('option');
|
|
116
|
+
option.value = cuota.dues;
|
|
117
|
+
option.setAttribute('data-interest-rate', cuota.interestRate);
|
|
118
|
+
option.textContent = `${cuota.dues} cuotas (${cuota.interestRate}% interés)`;
|
|
119
|
+
selectInteres.appendChild(option);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
let labelInteres = document.createElement('label');
|
|
124
|
+
labelInteres.setAttribute('for', 'tipo_interes');
|
|
125
|
+
labelInteres.textContent = 'Tipo de interés:';
|
|
126
|
+
|
|
127
|
+
contSelect.appendChild(selectInteres);
|
|
128
|
+
contSelect.appendChild(labelInteres);
|
|
129
|
+
colInteres.appendChild(contSelect);
|
|
130
|
+
/*---*/
|
|
131
|
+
|
|
132
|
+
/* Columna Total con interés */
|
|
133
|
+
let colRate = document.createElement('div');
|
|
134
|
+
colRate.classList.add('col-md-6', 'col-12');
|
|
135
|
+
let contInputRate = document.createElement('div');
|
|
136
|
+
contInputRate.classList.add('form-floating', 'mb-3');
|
|
137
|
+
|
|
138
|
+
let inputRate = document.createElement('input');
|
|
139
|
+
inputRate.classList.add('form-control');
|
|
140
|
+
inputRate.setAttribute('type', 'text');
|
|
141
|
+
inputRate.setAttribute('id', 'total_con_interes');
|
|
142
|
+
inputRate.setAttribute('name', 'total_con_interes');
|
|
143
|
+
inputRate.setAttribute('readonly', true); // Input de solo lectura
|
|
144
|
+
inputRate.setAttribute('placeholder', 'Total con interés');
|
|
145
|
+
|
|
146
|
+
let labelRate = document.createElement('label');
|
|
147
|
+
labelRate.setAttribute('for', 'total_con_interes');
|
|
148
|
+
labelRate.textContent = 'Total con interés:';
|
|
149
|
+
|
|
150
|
+
contInputRate.appendChild(inputRate);
|
|
151
|
+
contInputRate.appendChild(labelRate);
|
|
152
|
+
colRate.appendChild(contInputRate);
|
|
153
|
+
/*---*/
|
|
154
|
+
|
|
155
|
+
// Agregar columnas al row
|
|
156
|
+
row.appendChild(colInteres);
|
|
157
|
+
row.appendChild(colRate);
|
|
158
|
+
|
|
159
|
+
// Asegurarse de que el subtotal es un número
|
|
160
|
+
let subtotal = parseFloat(localStorage.getItem('subtotal'));
|
|
161
|
+
|
|
162
|
+
if (isNaN(subtotal)) {
|
|
163
|
+
subtotal = 0; // Si no es un número válido, lo dejamos como 0
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// Evento para cambiar el valor del input según la opción seleccionada
|
|
167
|
+
selectInteres.addEventListener('change', function () {
|
|
168
|
+
let selectedOption = selectInteres.options[selectInteres.selectedIndex];
|
|
169
|
+
let interestRate = parseFloat(selectedOption.getAttribute('data-interest-rate')) || 0;
|
|
170
|
+
|
|
171
|
+
// Calcular el total con el interés aplicado
|
|
172
|
+
let totalConInteres = subtotal * (1 + interestRate / 100);
|
|
173
|
+
|
|
174
|
+
// Formatear el total con separadores de miles
|
|
175
|
+
let totalFormateado = totalConInteres.toLocaleString('es-ES', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
|
|
176
|
+
|
|
177
|
+
// Actualizar el input con el valor calculado y formateado
|
|
178
|
+
if (!isNaN(totalConInteres)) {
|
|
179
|
+
inputRate.value = totalFormateado; // Asignar el valor formateado al input
|
|
180
|
+
} else {
|
|
181
|
+
inputRate.value = ''; // Si el total es NaN, dejamos el campo vacío
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
return row;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
let my_copy_script = document.createElement('script');
|
|
192
|
+
my_copy_script.setAttribute('type', 'text/javascript');
|
|
193
|
+
|
|
194
|
+
let infoDecidir = JSON.parse(localStorage.getItem('dataDecidir')) || undefined
|
|
195
|
+
//console.log(infoDecidir)
|
|
196
|
+
let urlBase = 'https://h.online-metrix.net/fp/tags.js';
|
|
197
|
+
let org_id = infoDecidir?.config?.public_environment == 'test' ? '1snn5n9w' : 'k8vif92e'
|
|
198
|
+
let merchand_id = infoDecidir?.config?.public_merchand_id || 'decidir_agregador'
|
|
199
|
+
let cybersource = infoDecidir?.config?.public_cybersource || 'deshabilitado'
|
|
200
|
+
let session_id = makeSessionId(8)
|
|
201
|
+
|
|
202
|
+
my_copy_script.setAttribute('src', urlBase + '?org_id=' + org_id + '&session_id=' + merchand_id + session_id)
|
|
203
|
+
document.head.appendChild(my_copy_script)
|
|
204
|
+
|
|
205
|
+
</script>
|
|
206
|
+
</head>
|
|
207
|
+
|
|
208
|
+
<body>
|
|
209
|
+
|
|
210
|
+
<style>
|
|
211
|
+
.logo-pago-seguro-img {
|
|
212
|
+
/* width: 150px;
|
|
213
|
+
height: 48px; */
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.loader {
|
|
217
|
+
border: 16px solid #f3f3f3;
|
|
218
|
+
border-top: 16px solid #dc3545;
|
|
219
|
+
border-radius: 50%;
|
|
220
|
+
width: 50px;
|
|
221
|
+
height: 50px;
|
|
222
|
+
animation: spin 2s linear infinite;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
@keyframes spin {
|
|
226
|
+
0% {
|
|
227
|
+
transform: rotate(0deg);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
100% {
|
|
231
|
+
transform: rotate(360deg);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
.flex-container {
|
|
236
|
+
display: flex;
|
|
237
|
+
justify-content: center;
|
|
238
|
+
align-items: center;
|
|
239
|
+
height: 80vh;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.flex-container>div {
|
|
243
|
+
width: 100px;
|
|
244
|
+
height: 100px;
|
|
245
|
+
}
|
|
246
|
+
</style>
|
|
247
|
+
|
|
248
|
+
<div class="container-fluid">
|
|
249
|
+
<div class="row mt-3">
|
|
250
|
+
<div class="col-12">
|
|
251
|
+
<div class="card">
|
|
252
|
+
|
|
253
|
+
<div class="container-fluid mt-3">
|
|
254
|
+
<div class="row">
|
|
255
|
+
<div class="col-md-6 col-12">
|
|
256
|
+
<!-- <h5><b>Decidir</b></h5> -->
|
|
257
|
+
</div>
|
|
258
|
+
<div class="col-md-6 col-12">
|
|
259
|
+
<img src="../assets/images/cards-occasional.png" class="card-img-top" alt="...">
|
|
260
|
+
</div>
|
|
261
|
+
</div>
|
|
262
|
+
</div>
|
|
263
|
+
<div class="card-body">
|
|
264
|
+
<form action="" method="post" id="formulario">
|
|
265
|
+
<div>
|
|
266
|
+
<div id="contForm">
|
|
267
|
+
<div class="row">
|
|
268
|
+
<div class="col-md-8 col-12">
|
|
269
|
+
|
|
270
|
+
<div class="form-floating mb-3">
|
|
271
|
+
<input class="form-control" type="text" data-decidir="card_number"
|
|
272
|
+
placeholder="XXXXXXXXXXXXXXXX" maxlength="18" value=""
|
|
273
|
+
oninput="this.value = this.value.replace(/[^0-9.]/g, ''); this.value = this.value.replace(/(\..*)\./g, '$1');">
|
|
274
|
+
<label for="card_number">Numero de tarjeta:</label>
|
|
275
|
+
</div>
|
|
276
|
+
|
|
277
|
+
</div>
|
|
278
|
+
<div class="col-md-4 col-12">
|
|
279
|
+
|
|
280
|
+
<div class="form-floating mb-3">
|
|
281
|
+
<input class="form-control" type="text" data-decidir="security_code"
|
|
282
|
+
placeholder="XXX" maxlength="4" value=""
|
|
283
|
+
oninput="this.value = this.value.replace(/[^0-9.]/g, ''); this.value = this.value.replace(/(\..*)\./g, '$1');" />
|
|
284
|
+
<label for="security_code">Codigo de seguridad:</label>
|
|
285
|
+
</div>
|
|
286
|
+
|
|
287
|
+
</div>
|
|
288
|
+
</div>
|
|
289
|
+
<div class="row">
|
|
290
|
+
|
|
291
|
+
<div class="col-md-6 col-12">
|
|
292
|
+
<div class="form-floating mb-3">
|
|
293
|
+
<input class="form-control" type="text"
|
|
294
|
+
data-decidir="card_expiration_month" placeholder="MM" maxlength="2"
|
|
295
|
+
value=""
|
|
296
|
+
oninput="this.value = this.value.replace(/[^0-9.]/g, ''); this.value = this.value.replace(/(\..*)\./g, '$1');" />
|
|
297
|
+
<label for="card_expiration_month">Mes de vencimiento:</label>
|
|
298
|
+
</div>
|
|
299
|
+
</div>
|
|
300
|
+
|
|
301
|
+
<div class="col-md-6 col-12">
|
|
302
|
+
<div class="form-floating mb-3">
|
|
303
|
+
<input class="form-control" type="text"
|
|
304
|
+
data-decidir="card_expiration_year" placeholder="AA" maxlength="2"
|
|
305
|
+
value=""
|
|
306
|
+
oninput="this.value = this.value.replace(/[^0-9.]/g, ''); this.value = this.value.replace(/(\..*)\./g, '$1');" />
|
|
307
|
+
<label for="card_expiration_year">Año de vencimiento:</label>
|
|
308
|
+
</div>
|
|
309
|
+
</div>
|
|
310
|
+
</div>
|
|
311
|
+
<div class="row">
|
|
312
|
+
<div class="col-12 col-md-8">
|
|
313
|
+
<div class="form-floating mb-3">
|
|
314
|
+
<input class="form-control" type="text" data-decidir="card_holder_name"
|
|
315
|
+
placeholder="TITULAR" value="" />
|
|
316
|
+
<label for="card_holder_name">Nombre del titular:</label>
|
|
317
|
+
</div>
|
|
318
|
+
</div>
|
|
319
|
+
<div class="col-12 col-md-4">
|
|
320
|
+
<div class="form-floating mb-3">
|
|
321
|
+
<input class="form-control" id="date_of_birth" type="date"
|
|
322
|
+
data-decidir="date_of_birth" placeholder="" value="" required />
|
|
323
|
+
<label for="date_of_birth">Fecha de nacimiento:</label>
|
|
324
|
+
</div>
|
|
325
|
+
</div>
|
|
326
|
+
</div>
|
|
327
|
+
<div class="row">
|
|
328
|
+
<div class="col-md-6 col-12">
|
|
329
|
+
<div class="form-floating mb-3">
|
|
330
|
+
<select class="form-select" data-decidir="card_holder_doc_type">
|
|
331
|
+
<option value="dni">DNI</option>
|
|
332
|
+
</select>
|
|
333
|
+
<label for="card_holder_doc_type">Tipo de documento:</label>
|
|
334
|
+
</div>
|
|
335
|
+
</div>
|
|
336
|
+
<div class="col-md-6 col-12">
|
|
337
|
+
<div class="form-floating mb-3">
|
|
338
|
+
<input class="form-control" data-decidir="card_holder_doc_number"
|
|
339
|
+
placeholder="XXXXXXXXXX" maxlength="9" value=""
|
|
340
|
+
oninput="this.value = this.value.replace(/[^0-9.]/g, ''); this.value = this.value.replace(/(\..*)\./g, '$1');">
|
|
341
|
+
<label for="card_holder_doc_type">Numero de documento:</label>
|
|
342
|
+
</div>
|
|
343
|
+
</div>
|
|
344
|
+
</div>
|
|
345
|
+
</div>
|
|
346
|
+
<div class="w-100 text-center">
|
|
347
|
+
<div id="loadTokenBtn">
|
|
348
|
+
<div class="d-grid gap-2">
|
|
349
|
+
<input type="submit" value="Pagar" class="btn btn-outline-success mt-3" />
|
|
350
|
+
</div>
|
|
351
|
+
</div>
|
|
352
|
+
<div id="loadToken" class="text-center mt-4">
|
|
353
|
+
<div class="spinner-border" role="status">
|
|
354
|
+
<span class="visually-hidden">Cargando...</span>
|
|
355
|
+
</div>
|
|
356
|
+
</div>
|
|
357
|
+
</div>
|
|
358
|
+
</fieldset>
|
|
359
|
+
</form>
|
|
360
|
+
</div>
|
|
361
|
+
<div class="w-100 d-flex justify-content-end">
|
|
362
|
+
<div class="w-50 d-flex justify-content-end">
|
|
363
|
+
<img src="../assets/images/decidir-logo.png" class="card-img-top w-50 logo-pago-seguro-img "
|
|
364
|
+
alt="...">
|
|
365
|
+
</div>
|
|
366
|
+
</div>
|
|
367
|
+
</div>
|
|
368
|
+
|
|
369
|
+
</div>
|
|
370
|
+
</div>
|
|
371
|
+
</div>
|
|
372
|
+
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
|
|
373
|
+
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
|
|
374
|
+
|
|
375
|
+
<script defer>
|
|
376
|
+
if (cybersource != 'deshabilitado') {
|
|
377
|
+
document.getElementById('contForm').appendChild(addStreetAndNro())
|
|
378
|
+
document.getElementById('contForm').appendChild(addTipoDeInteres());
|
|
379
|
+
}
|
|
380
|
+
let iframe = document.createElement('iframe')
|
|
381
|
+
iframe.setAttribute('style', 'width: 100px; height: 100px; border: 0; position: absolute; top:-5000px;')
|
|
382
|
+
iframe.setAttribute('src', 'https://h.online-metrix.net/fp/tags?org_id=' + org_id + '&session_id=' + merchand_id + session_id)
|
|
383
|
+
|
|
384
|
+
document.body.appendChild(iframe)
|
|
385
|
+
|
|
386
|
+
window.onload = function () {
|
|
387
|
+
|
|
388
|
+
let loadToken = document.querySelector('#loadToken');
|
|
389
|
+
let loadTokenBtn = document.querySelector('#loadTokenBtn');
|
|
390
|
+
|
|
391
|
+
const isLoad = (state) => {
|
|
392
|
+
loadToken.style.display = !state && 'none' || 'block';
|
|
393
|
+
loadTokenBtn.style.display = state && 'none' || 'block';
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
isLoad(false)
|
|
397
|
+
|
|
398
|
+
const urlSandbox = "https://developers.decidir.com/api/v2";
|
|
399
|
+
const urlProduccion = "https://live.decidir.com/api/v2";
|
|
400
|
+
const dataRedirect = localStorage.getItem('dataRedirect')
|
|
401
|
+
const dataDecidir = localStorage.getItem('dataDecidir')
|
|
402
|
+
&& JSON.parse(localStorage.getItem('dataDecidir'))
|
|
403
|
+
|
|
404
|
+
const publicApiKey = dataDecidir?.config?.public_key
|
|
405
|
+
let cybersource = dataDecidir?.config?.public_cybersource && dataDecidir?.config?.public_cybersource == 'deshabilitado'
|
|
406
|
+
let modo = dataDecidir?.config?.public_environment || null
|
|
407
|
+
|
|
408
|
+
modo ? (modo == 'prod' ? modo = false : modo = true) : (modo = window.location.host.includes('easycommerce'))
|
|
409
|
+
|
|
410
|
+
const decidir = new Decidir(modo && modo ? urlSandbox : urlProduccion);
|
|
411
|
+
decidir.setPublishableKey(publicApiKey);
|
|
412
|
+
decidir.setTimeout(5000);
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
let form = document.querySelector('#formulario');
|
|
416
|
+
|
|
417
|
+
const setMessageInStore = (response) => {
|
|
418
|
+
if (response.hasOwnProperty('message')) {
|
|
419
|
+
localStorage.setItem('message', response.message)
|
|
420
|
+
}
|
|
421
|
+
if (response.hasOwnProperty('subMessage')) {
|
|
422
|
+
localStorage.setItem('subMessage', response.subMessage)
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
const sendToken = (data) => {
|
|
427
|
+
data['fraud_detection'] = {
|
|
428
|
+
"device_unique_identifier": session_id
|
|
429
|
+
}
|
|
430
|
+
data['date_of_birth'] = document.getElementById('date_of_birth').value;
|
|
431
|
+
// console.log('Datos para el envio: ', data)
|
|
432
|
+
// console.log(dataDecidir)
|
|
433
|
+
if (dataDecidir?.config?.public_cybersource != 'deshabilitado') {
|
|
434
|
+
data['address'] = {
|
|
435
|
+
'name': document.getElementById('address').value,
|
|
436
|
+
'number': document.getElementById('nro').value
|
|
437
|
+
}
|
|
438
|
+
data['subtotal'] = document.getElementById('total_con_interes').value
|
|
439
|
+
data['dues'] = document.getElementById('tipo_interes').value;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
try {
|
|
443
|
+
fetch(dataRedirect, {
|
|
444
|
+
method: 'POST',
|
|
445
|
+
body: JSON.stringify(data),
|
|
446
|
+
headers: {
|
|
447
|
+
'Content-Type': 'application/json'
|
|
448
|
+
}
|
|
449
|
+
}).then(res => res.json())
|
|
450
|
+
.catch(error => {
|
|
451
|
+
console.error('Error:', error)
|
|
452
|
+
processError(response)
|
|
453
|
+
})
|
|
454
|
+
.then(response => {
|
|
455
|
+
// console.log('Success:', response)
|
|
456
|
+
setMessageInStore(response)
|
|
457
|
+
if (response.hasOwnProperty('status')) {
|
|
458
|
+
if (response.status == 'approved' || response.status == 'partially_authorized') {
|
|
459
|
+
processResponse(response)
|
|
460
|
+
} else {
|
|
461
|
+
processError(response)
|
|
462
|
+
}
|
|
463
|
+
} else {
|
|
464
|
+
processError(response)
|
|
465
|
+
}
|
|
466
|
+
});
|
|
467
|
+
} catch (error) {
|
|
468
|
+
processError(response)
|
|
469
|
+
}
|
|
470
|
+
localStorage.removeItem('dataRedirect')
|
|
471
|
+
localStorage.removeItem('dataDecidir')
|
|
472
|
+
localStorage.removeItem('subtotal')
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
const sdkResponseHandler = (status, response) => {
|
|
476
|
+
// console.log('Respuesta: ', response)
|
|
477
|
+
if (status != 200 && status != 201) {
|
|
478
|
+
//Manejo de error: Ver Respuesta de Error
|
|
479
|
+
processError(response)
|
|
480
|
+
} else {
|
|
481
|
+
//Manejo de respuesta donde response = {token: "99ab0740-4ef9-4b38-bdf9-c4c963459b22"}
|
|
482
|
+
sendToken(response)
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
const sendForm = (event) => {
|
|
487
|
+
isLoad(true)
|
|
488
|
+
// console.log('Formulario: ', form)
|
|
489
|
+
event.preventDefault();
|
|
490
|
+
decidir.createToken(form, sdkResponseHandler);
|
|
491
|
+
return false;
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
const processError = (error) => {
|
|
495
|
+
// console.log("ERROR ENVIO BACK ", error);
|
|
496
|
+
isLoad(false)
|
|
497
|
+
localStorage.setItem('state', 'failure')
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
const processResponse = (response) => {
|
|
501
|
+
// console.log("ENVIO BACK ", response);
|
|
502
|
+
isLoad(false)
|
|
503
|
+
localStorage.setItem('state', response.status == 'approved' ? 'success' : 'partially_authorized')
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
form.addEventListener('submit', sendForm);
|
|
507
|
+
|
|
508
|
+
};
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
</script>
|
|
512
|
+
</body>
|
|
513
|
+
|
|
514
|
+
</html>
|