vk-payments 0.0.15 → 0.0.17
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/bundles/vk-payments.umd.js +19 -10
- package/bundles/vk-payments.umd.js.map +1 -1
- package/bundles/vk-payments.umd.min.js +1 -1
- package/bundles/vk-payments.umd.min.js.map +1 -1
- package/esm2015/lib/sps-decidir/components/sps-decidir.component.js +15 -9
- package/esm2015/lib/sps-decidir/services/sps-decidir.api.service.js +4 -3
- package/esm5/lib/sps-decidir/components/sps-decidir.component.js +16 -9
- package/esm5/lib/sps-decidir/services/sps-decidir.api.service.js +5 -3
- package/fesm2015/vk-payments.js +17 -10
- package/fesm2015/vk-payments.js.map +1 -1
- package/fesm5/vk-payments.js +19 -10
- package/fesm5/vk-payments.js.map +1 -1
- package/lib/sps-decidir/services/sps-decidir.api.service.d.ts +1 -1
- package/package.json +1 -1
- package/vk-payments.metadata.json +1 -1
|
@@ -1489,6 +1489,7 @@
|
|
|
1489
1489
|
* @param {?} amount
|
|
1490
1490
|
* @param {?} creditCardId
|
|
1491
1491
|
* @param {?} domainId
|
|
1492
|
+
* @param {?} bin
|
|
1492
1493
|
* @return {?}
|
|
1493
1494
|
*/
|
|
1494
1495
|
SpsDecidirApiService.prototype.getPlansByCreditCardId = /**
|
|
@@ -1497,12 +1498,13 @@
|
|
|
1497
1498
|
* @param {?} amount
|
|
1498
1499
|
* @param {?} creditCardId
|
|
1499
1500
|
* @param {?} domainId
|
|
1501
|
+
* @param {?} bin
|
|
1500
1502
|
* @return {?}
|
|
1501
1503
|
*/
|
|
1502
|
-
function (access_token, url, amount, creditCardId, domainId) {
|
|
1504
|
+
function (access_token, url, amount, creditCardId, domainId, bin) {
|
|
1503
1505
|
this._setAuthHeaders(access_token);
|
|
1504
1506
|
/** @type {?} */
|
|
1505
|
-
var body = { amount: amount, creditCardId: creditCardId, domainId: domainId };
|
|
1507
|
+
var body = { amount: amount, creditCardId: creditCardId, domainId: domainId, bin: bin };
|
|
1506
1508
|
return this.httpClient.post(this.normalizeUrl(url) + '/CalculateAmountInInstallments', body, { headers: this.authHeaders });
|
|
1507
1509
|
};
|
|
1508
1510
|
/**
|
|
@@ -1656,6 +1658,7 @@
|
|
|
1656
1658
|
* @param {?} amount
|
|
1657
1659
|
* @param {?} creditCardId
|
|
1658
1660
|
* @param {?} domainId
|
|
1661
|
+
* @param {?} bin
|
|
1659
1662
|
* @return {?}
|
|
1660
1663
|
*/
|
|
1661
1664
|
SpsDecidirComponent.prototype.getPlansByCreditCardId = /**
|
|
@@ -1663,11 +1666,12 @@
|
|
|
1663
1666
|
* @param {?} amount
|
|
1664
1667
|
* @param {?} creditCardId
|
|
1665
1668
|
* @param {?} domainId
|
|
1669
|
+
* @param {?} bin
|
|
1666
1670
|
* @return {?}
|
|
1667
1671
|
*/
|
|
1668
|
-
function (amount, creditCardId, domainId) {
|
|
1672
|
+
function (amount, creditCardId, domainId, bin) {
|
|
1669
1673
|
var _this = this;
|
|
1670
|
-
this.spsDecidirApiService.getPlansByCreditCardId(this.accessToken, this.vkUrlApi, amount, creditCardId, domainId)
|
|
1674
|
+
this.spsDecidirApiService.getPlansByCreditCardId(this.accessToken, this.vkUrlApi, amount, creditCardId, domainId, bin)
|
|
1671
1675
|
.subscribe((/**
|
|
1672
1676
|
* @param {?} res
|
|
1673
1677
|
* @return {?}
|
|
@@ -1723,10 +1727,13 @@
|
|
|
1723
1727
|
return;
|
|
1724
1728
|
}
|
|
1725
1729
|
this.selectCreditCardPlan = null;
|
|
1726
|
-
if (this.currency === 'ARS') {
|
|
1727
|
-
this.getPlansByCreditCardId(this.paymentAmount, this.issuer, this.domainId);
|
|
1730
|
+
if (this.currency === 'ARS' && this.cardText.length == 8) {
|
|
1731
|
+
this.getPlansByCreditCardId(this.paymentAmount, this.issuer, this.domainId, this.cardText.substring(0, 8));
|
|
1728
1732
|
return;
|
|
1729
1733
|
}
|
|
1734
|
+
else {
|
|
1735
|
+
this.cardText = '';
|
|
1736
|
+
}
|
|
1730
1737
|
if (this.currency === 'USD') {
|
|
1731
1738
|
this.totalAmount = this.totalFinancedAmount = this.paymentAmount;
|
|
1732
1739
|
}
|
|
@@ -2206,7 +2213,9 @@
|
|
|
2206
2213
|
}));
|
|
2207
2214
|
}
|
|
2208
2215
|
// setea tarjeta
|
|
2209
|
-
|
|
2216
|
+
if (this.cardText.length === 8) {
|
|
2217
|
+
this.setCreditType(this.cardText);
|
|
2218
|
+
}
|
|
2210
2219
|
};
|
|
2211
2220
|
/**
|
|
2212
2221
|
* @param {?} bin
|
|
@@ -2217,11 +2226,11 @@
|
|
|
2217
2226
|
* @return {?}
|
|
2218
2227
|
*/
|
|
2219
2228
|
function (bin) {
|
|
2220
|
-
if (bin.length <
|
|
2229
|
+
if (bin.length < 8) {
|
|
2221
2230
|
this.issuer = null;
|
|
2222
2231
|
return;
|
|
2223
2232
|
}
|
|
2224
|
-
if (bin.length ===
|
|
2233
|
+
if (bin.length === 8) {
|
|
2225
2234
|
this.issuer = null;
|
|
2226
2235
|
// visa debito
|
|
2227
2236
|
if (bin.substring(0, 4) === '4770' ||
|
|
@@ -2392,7 +2401,7 @@
|
|
|
2392
2401
|
SpsDecidirComponent.decorators = [
|
|
2393
2402
|
{ type: core.Component, args: [{
|
|
2394
2403
|
selector: 'sps-form-pay',
|
|
2395
|
-
template: "<!-- https://github.com/decidir/sdk-javascript-v2 -->\r\n\r\n<form action=\"\" method=\"POST\" id=\"formulario\" #f=\"ngForm\" autocomplete=\"off\">\r\n <!-- Numero de tarjeta -->\r\n <div class=\"formRow\">\r\n <label for=\"card_number\">{{ language.toLowerCase() === 'en' ? 'Card number' : 'N\u00FAmero de Tarjeta' }}</label>\r\n <span>\r\n <input id=\"card_number\"\r\n type=\"text\"\r\n name=\"card\"\r\n placeholder=\"{{ language.toLowerCase() === 'en' ? 'Card number' : 'N\u00FAmero de Tarjeta' }}\"\r\n minlength=\"12\"\r\n maxlength=\"19\"\r\n data-decidir=\"card_number\"\r\n required\r\n (input)=\"onCardChange()\"\r\n (paste)=\"onPaste()\"\r\n [disabled]=\"disabled\"\r\n [(ngModel)]=\"cardText\"\r\n #card=\"ngModel\" />\r\n </span>\r\n <p class=\"alert-text\" *ngIf=\"card.errors?.required && submitPressed\">\r\n {{ language.toLowerCase() === 'en' ? 'Required' : 'Complet\u00E1 el n\u00FAmero de tarjeta' }}\r\n </p>\r\n <p class=\"alert-text\" *ngIf=\"card.errors?.minlength && submitPressed\">\r\n {{ language.toLowerCase() === 'en' ? 'Required' : 'Requiere 13 digitos m\u00EDnimo' }}\r\n </p>\r\n </div>\r\n\r\n <!-- Card-issuer -->\r\n <div class=\"formRow\">\r\n <label>{{ language.toLowerCase() === 'en' ? 'Pay with' : 'Pagar con' }}</label>\r\n <div class=\"select-icon\">\r\n <select name=\"iss\"\r\n required\r\n #iss=\"ngModel\"\r\n [disabled]=\"disabled\"\r\n (change)=\"selectedCreditCard()\"\r\n [(ngModel)]=\"issuer\">\r\n <option [value]=\"null\" selected disabled>\r\n {{ language.toLowerCase() === 'en' ? 'SELECT...' : 'Sin Seleccionar...' }}\r\n </option>\r\n <ng-container *ngIf=\"currency === 'USD'; else credCardsArgTemplate\">\r\n <option [value]=\"1\">Visa</option>\r\n <option [value]=\"15\">MasterCard</option>\r\n </ng-container>\r\n <ng-template #credCardsArgTemplate>\r\n <option [ngValue]=\"item.id\" *ngFor=\"let item of creditCards\">{{item.name}}</option>\r\n </ng-template>\r\n </select>\r\n </div>\r\n <p class=\"alert-text\" *ngIf=\"iss.invalid && submitPressed\">\r\n {{ language.toLowerCase() === 'en' ? 'Required' : 'Seleccion\u00E1 el emisor de la tarjeta' }}\r\n </p>\r\n </div>\r\n\r\n <div class=\"formRow\">\r\n <div class=\"form-row-2col\">\r\n <!-- Expiry-month-->\r\n <div class=\"formRow\">\r\n <label>\r\n {{ language.toLowerCase() === 'en' ? 'Month of expiration' : 'Mes de expiraci\u00F3n' }}\r\n </label>\r\n <span>\r\n <input type=\"text\"\r\n name=\"month\"\r\n placeholder=\"MM\"\r\n minlength=\"2\"\r\n maxlength=\"2\"\r\n data-decidir=\"card_expiration_month\"\r\n required\r\n [disabled]=\"disabled\"\r\n (input)=\"onMonthChange()\"\r\n (focusout)=\"onMonthLostFocus()\"\r\n (paste)=\"onPaste()\"\r\n [(ngModel)]=\"monthText\"\r\n #month=\"ngModel\" />\r\n </span>\r\n </div>\r\n <!-- Expiry-year-->\r\n <div class=\"formRow\">\r\n <label>\r\n {{ language.toLowerCase() === 'en' ? 'Year of expiration' : 'A\u00F1o de expiraci\u00F3n' }}\r\n </label>\r\n <span>\r\n <input type=\"text\"\r\n name=\"year\"\r\n placeholder=\"AA\"\r\n minlength=\"2\"\r\n maxlength=\"2\"\r\n data-decidir=\"card_expiration_year\"\r\n required\r\n [disabled]=\"disabled\"\r\n (input)=\"onYearChange()\"\r\n (blur)=\"onYearBlur($event)\"\r\n (paste)=\"onPaste()\"\r\n [(ngModel)]=\"yearText\"\r\n #year=\"ngModel\"/>\r\n </span>\r\n </div>\r\n </div>\r\n <p class=\"alert-text\" *ngIf=\"month.invalid && submitPressed\">\r\n {{ language.toLowerCase() === 'en' ? 'Required' : 'Complet\u00E1 el mes de vencimiento de la tarjeta' }}</p>\r\n <p class=\"alert-text\" *ngIf=\"year.invalid && submitPressed\">\r\n {{ language.toLowerCase() === 'en' ? 'Required' : 'Complet\u00E1 el a\u00F1o de vencimiento de la tarjeta' }}</p>\r\n <p class=\"alert-text\" *ngIf=\"invalidDate\">\r\n {{ language.toLowerCase() === 'en' ? 'Enter a valid expiration date' : 'La fecha de la tarjeta ingresada est\u00E1 vencida'}}\r\n </p>\r\n </div>\r\n\r\n <!-- Card-name -->\r\n <div class=\"formRow\">\r\n <label>\r\n {{ language.toLowerCase() === 'en' ? 'Holder name' : 'Nombre y apellido impreso en la tarjeta' }}\r\n </label>\r\n\r\n <span>\r\n <input type=\"text\"\r\n name=\"payername\"\r\n placeholder=\"{{language.toLowerCase() === 'en' ? 'Holder name' : 'TITULAR'}}\" value=\"{{payerName}}\"\r\n maxlength=\"22\"\r\n data-decidir=\"card_holder_name\"\r\n required\r\n [disabled]=\"disabled\"\r\n (input)=\"onPayerNameChange()\"\r\n (paste)=\"onPaste()\"\r\n [(ngModel)]=\"payerNameText\"\r\n #payername=\"ngModel\" />\r\n </span>\r\n <p [hidden]=\"disabled\" class=\"alert-text\" *ngIf=\"!payername.valid && submitPressed\">\r\n {{ language.toLowerCase() === 'en' ? 'Required' : 'Complet\u00E1 el nombre del titular de la tarjeta' }}\r\n </p>\r\n </div>\r\n\r\n <div class=\"formRow\" *ngIf=\"currency === 'USD'\">\r\n <input type=\"hidden\" data-decidir=\"card_holder_doc_type\" name=\"type\">\r\n <input type=\"hidden\" data-decidir=\"card_holder_doc_number\" name=\"dni\">\r\n </div>\r\n\r\n\r\n <div class=\"formRow\" *ngIf=\"currency === 'ARS'\">\r\n <label for=\"card_holder_doc_type\">N\u00FAmero de documento del titular</label>\r\n <div class=\"form-row-2col\">\r\n <!-- Tipo de documento-->\r\n <div class=\"formRow\">\r\n <div class=\"select-icon\">\r\n <select data-decidir=\"card_holder_doc_type\" ngModel required #type=\"ngModel\" name=\"type\"\r\n [disabled]=\"disabled\">\r\n <option value=\"\" disabled selected>Seleccionar...</option>\r\n <option value=\"dni\">DNI</option>\r\n <option value=\"cuil\">CUIL</option>\r\n </select>\r\n </div>\r\n </div>\r\n <!-- DNI -->\r\n <div class=\"formRow\">\r\n <span>\r\n <input id=\"card_holder_doc_type\"\r\n type=\"text\"\r\n name=\"dni\"\r\n minlength=\"7\"\r\n maxlength=\"11\"\r\n data-decidir=\"card_holder_doc_number\"\r\n required\r\n [disabled]=\"disabled\"\r\n (input)=\"onDniChange()\"\r\n (paste)=\"onPaste()\"\r\n [(ngModel)]=\"dniText\"\r\n #dni=\"ngModel\" />\r\n </span>\r\n </div>\r\n </div>\r\n <p class=\"alert-text\" *ngIf=\"type.invalid && submitPressed\">Seleccion\u00E1 tipo de documento</p>\r\n <p class=\"alert-text\" *ngIf=\"dni.errors?.minlength && submitPressed\">Requiere 7 digitos m\u00EDnimo</p>\r\n <p class=\"alert-text\" *ngIf=\"dni.errors?.required && submitPressed\">Complet\u00E1 el n\u00FAmero de documento</p>\r\n </div>\r\n <!-- CVV -->\r\n <div class=\"formRow\">\r\n <label for=\"security_code\">{{ language.toLowerCase() === 'en' ? 'CSC' : 'C\u00F3digo de seguridad' }}</label>\r\n <span>\r\n <input id=\"security_code\"\r\n type=\"text\"\r\n name=\"cvc\"\r\n placeholder=\"CSC\"\r\n minlength=\"3\"\r\n maxlength=\"4\"\r\n data-decidir=\"security_code\"\r\n required\r\n [disabled]=\"disabled\"\r\n (input)=\"onCodeChange()\"\r\n (paste)=\"onPaste()\"\r\n [(ngModel)]=\"cvcText\"\r\n #cvc=\"ngModel\" />\r\n </span>\r\n <p class=\"alert-text\" *ngIf=\"cvc.errors?.minlength && submitPressed\">\r\n {{ language.toLowerCase() === 'en' ? 'Enter a valid csc' : 'Requiere 3 digitos m\u00EDnimo' }}\r\n </p>\r\n <p class=\"alert-text\" *ngIf=\"cvc.errors?.required && submitPressed\">\r\n {{ language.toLowerCase() === 'en' ? 'Required' : 'Complet\u00E1 el c\u00F3digo de seguridad' }}\r\n </p>\r\n </div>\r\n\r\n <!-- Cuotas -->\r\n <ng-container *ngIf=\"currency === 'ARS'\">\r\n <div class=\"formRow\">\r\n <label>Cuotas</label>\r\n <div class=\"select-icon\">\r\n <select name=\"ins\"\r\n required\r\n [disabled]=\"disabled\"\r\n [(ngModel)]=\"selectCreditCardPlan\"\r\n (change)=\"selectedCreditCardPlan()\"\r\n #ins=\"ngModel\">\r\n <option [value]=\"null\" selected disabled>Sin Seleccionar...</option>\r\n <option [ngValue]=\"item\" *ngFor=\"let item of creditCardPlans\">{{ item.description }}</option>\r\n </select>\r\n </div>\r\n <p class=\"alert-text\" *ngIf=\"ins.invalid && submitPressed\">Seleccion\u00E1 cantidad de cuotas</p>\r\n </div>\r\n </ng-container>\r\n\r\n <div>\r\n <div>\r\n <div class=\"amount-resume\" *ngIf=\"f.valid\">\r\n <ng-container *ngIf=\"currency === 'ARS'\">\r\n <p>Total al contado</p>\r\n <h1>$ {{ totalAmount | number:'2.2-2' }}</h1>\r\n <p>Total financiado</p>\r\n <h3>$ {{ totalFinancedAmount | number:'2.2-2'}}</h3>\r\n <p>TEA: {{ currentTEA }}%</p>\r\n <p>CFT: {{ currentCFT }}%</p>\r\n </ng-container>\r\n <ng-container *ngIf=\"currency === 'USD'\">\r\n <p>Total</p>\r\n <h1>{{ labelButton }}</h1>\r\n </ng-container>\r\n <div *ngIf=\"paymentState === 'unsubmitted'\">\r\n <button *ngIf=\"currency === 'ARS'\" type=\"submit\" (click)=\"onSubmit($event)\">\r\n Pagar ${{ totalFinancedAmount | number:'2.2-2' }}\r\n </button>\r\n\r\n <button *ngIf=\"currency === 'USD'\" type=\"submit\" (click)=\"onSubmit($event)\">\r\n {{ labelButton }}\r\n </button>\r\n </div>\r\n <div *ngIf=\"paymentState === 'success' || paymentState === 'processing'\">\r\n <button *ngIf=\"currency === 'ARS'\" disabled>Pagar $ {{totalFinancedAmount | number:'2.2-2'}}</button>\r\n <button *ngIf=\"currency === 'USD'\" disabled>{{ labelButton }}</button>\r\n </div>\r\n </div>\r\n <p [hidden]=\"disabled\" class=\"alert-text\" *ngIf=\"!f.valid\">\r\n {{ language.toLowerCase() === 'en' ? 'Complete all fields' : 'Complet\u00E1 los campos faltantes' }}\r\n </p>\r\n <div *ngIf=\"!f.valid && paymentState !== 'success' && paymentState !== 'apiError' && paymentState !== 'error'\">\r\n <button *ngIf=\"currency === 'ARS'\" type=\"submit\" (click)=\"onSubmit($event)\">Pagar $\r\n {{ paymentAmount | number:'2.2-2' }}\r\n </button>\r\n <button *ngIf=\"currency === 'USD'\" type=\"submit\" (click)=\"onSubmit($event)\">\r\n {{ labelButton }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"logo\">\r\n <img [src]=\"logoSps\" alt=\"SPS Decidir\" class=\"responsive-img\" style=\"width: 50px;\">\r\n </div>\r\n <div>\r\n <div class=\"pay-message info\" *ngIf=\"paymentState === 'processing'\">\r\n <i class=\"material-icons\">info</i>\r\n <p>\r\n {{ language.toLowerCase() === 'en' ? 'Processing payment...' : 'Procesando pago...' }}\r\n </p>\r\n </div>\r\n <div class=\"pay-message error\" *ngIf=\"paymentState === 'error'\">\r\n <i class=\"material-icons\">error</i>\r\n <p>\r\n {{errorMessage}}\r\n <br>\r\n {{ language.toLowerCase() === 'en' ? 'Error processing the payment' : 'No se proces\u00F3 el pago' }}\r\n </p>\r\n </div>\r\n <div *ngIf=\"language.toLowerCase() !== 'en' && paymentState === 'success'\" class=\"pay-message success\">\r\n <i class=\"material-icons\">check_circle</i>\r\n <p>\r\n Tu pago se ha confirmado!\r\n <br>\r\n Estos son los datos de la transacci\u00F3n:\r\n </p>\r\n <i class=\"data\">Nro. de Pago: {{paymentSuccessInfo.payment_id}}</i>\r\n <i class=\"data\">Ticket: {{paymentSuccessInfo.ticket}}</i>\r\n <i class=\"data\">Cod. Autorizaci\u00F3n: {{paymentSuccessInfo.card_authorization_code}}</i>\r\n </div>\r\n\r\n <div *ngIf=\"language.toLowerCase() === 'en' && paymentState === 'success'\" class=\"pay-message success\">\r\n <i class=\"material-icons\">check_circle</i>\r\n <p>\r\n Your payment has been confirmed!\r\n <br>\r\n These are the transaction data:\r\n </p>\r\n <i class=\"data\">Payment No.: {{paymentSuccessInfo.payment_id}}</i>\r\n <i class=\"data\">Ticket: {{paymentSuccessInfo.ticket}}</i>\r\n <i class=\"data\">Authorization Code: {{paymentSuccessInfo.card_authorization_code}}</i>\r\n </div>\r\n\r\n <div class=\"pay-message error\" *ngIf=\"paymentState === 'apiError'\">\r\n <i class=\"material-icons\">error</i>\r\n <p>\r\n {{ language.toLowerCase() === 'en' ? 'Error processing the payment (Vitnik)' : 'Error al procesar el pago (Vitnik)'}}\r\n </p>\r\n </div>\r\n\r\n <button *ngIf=\"language.toLowerCase() === 'es' && (paymentState === 'apiError' || paymentState === 'error')\" (click)=\"resetForm()\">\r\n Limpiar formulario\r\n </button>\r\n <button *ngIf=\"language.toLowerCase() === 'en' && (paymentState === 'apiError' || paymentState === 'error')\" (click)=\"resetForm()\">\r\n Clear form\r\n </button>\r\n\r\n </div>\r\n</form>\r\n",
|
|
2404
|
+
template: "<!-- https://github.com/decidir/sdk-javascript-v2 -->\r\n\r\n<form action=\"\" method=\"POST\" id=\"formulario\" #f=\"ngForm\" autocomplete=\"off\">\r\n <!-- Numero de tarjeta -->\r\n <div class=\"formRow\">\r\n <label for=\"card_number\">{{ language.toLowerCase() === 'en' ? 'Card number' : 'N\u00FAmero de Tarjeta' }}</label>\r\n <span>\r\n <input id=\"card_number\"\r\n type=\"text\"\r\n name=\"card\"\r\n placeholder=\"{{ language.toLowerCase() === 'en' ? 'Card number' : 'N\u00FAmero de Tarjeta' }}\"\r\n minlength=\"12\"\r\n maxlength=\"19\"\r\n pattern=\"[0-9]*\"\r\n data-decidir=\"card_number\"\r\n required\r\n (input)=\"onCardChange()\"\r\n (paste)=\"onPaste()\"\r\n [disabled]=\"disabled\"\r\n [(ngModel)]=\"cardText\"\r\n #card=\"ngModel\" />\r\n </span>\r\n <p class=\"alert-text\" *ngIf=\"card.errors?.required && submitPressed\">\r\n {{ language.toLowerCase() === 'en' ? 'Required' : 'Complet\u00E1 el n\u00FAmero de tarjeta' }}\r\n </p>\r\n <p class=\"alert-text\" *ngIf=\"card.errors?.minlength && submitPressed\">\r\n {{ language.toLowerCase() === 'en' ? 'Required' : 'Requiere 13 digitos m\u00EDnimo' }}\r\n </p>\r\n </div>\r\n\r\n <!-- Card-issuer -->\r\n <div class=\"formRow\">\r\n <label>{{ language.toLowerCase() === 'en' ? 'Pay with' : 'Pagar con' }}</label>\r\n <div class=\"select-icon\">\r\n <select name=\"iss\"\r\n required\r\n #iss=\"ngModel\"\r\n [disabled]=\"disabled\"\r\n (change)=\"selectedCreditCard()\"\r\n [(ngModel)]=\"issuer\">\r\n <option [value]=\"null\" selected disabled>\r\n {{ language.toLowerCase() === 'en' ? 'SELECT...' : 'Sin Seleccionar...' }}\r\n </option>\r\n <ng-container *ngIf=\"currency === 'USD'; else credCardsArgTemplate\">\r\n <option [value]=\"1\">Visa</option>\r\n <option [value]=\"15\">MasterCard</option>\r\n </ng-container>\r\n <ng-template #credCardsArgTemplate>\r\n <option [ngValue]=\"item.id\" *ngFor=\"let item of creditCards\">{{item.name}}</option>\r\n </ng-template>\r\n </select>\r\n </div>\r\n <p class=\"alert-text\" *ngIf=\"iss.invalid && submitPressed\">\r\n {{ language.toLowerCase() === 'en' ? 'Required' : 'Seleccion\u00E1 el emisor de la tarjeta' }}\r\n </p>\r\n </div>\r\n\r\n <div class=\"formRow\">\r\n <div class=\"form-row-2col\">\r\n <!-- Expiry-month-->\r\n <div class=\"formRow\">\r\n <label>\r\n {{ language.toLowerCase() === 'en' ? 'Month of expiration' : 'Mes de expiraci\u00F3n' }}\r\n </label>\r\n <span>\r\n <input type=\"text\"\r\n name=\"month\"\r\n placeholder=\"MM\"\r\n minlength=\"2\"\r\n maxlength=\"2\"\r\n data-decidir=\"card_expiration_month\"\r\n required\r\n [disabled]=\"disabled\"\r\n (input)=\"onMonthChange()\"\r\n (focusout)=\"onMonthLostFocus()\"\r\n (paste)=\"onPaste()\"\r\n [(ngModel)]=\"monthText\"\r\n #month=\"ngModel\" />\r\n </span>\r\n </div>\r\n <!-- Expiry-year-->\r\n <div class=\"formRow\">\r\n <label>\r\n {{ language.toLowerCase() === 'en' ? 'Year of expiration' : 'A\u00F1o de expiraci\u00F3n' }}\r\n </label>\r\n <span>\r\n <input type=\"text\"\r\n name=\"year\"\r\n placeholder=\"AA\"\r\n minlength=\"2\"\r\n maxlength=\"2\"\r\n data-decidir=\"card_expiration_year\"\r\n required\r\n [disabled]=\"disabled\"\r\n (input)=\"onYearChange()\"\r\n (blur)=\"onYearBlur($event)\"\r\n (paste)=\"onPaste()\"\r\n [(ngModel)]=\"yearText\"\r\n #year=\"ngModel\"/>\r\n </span>\r\n </div>\r\n </div>\r\n <p class=\"alert-text\" *ngIf=\"month.invalid && submitPressed\">\r\n {{ language.toLowerCase() === 'en' ? 'Required' : 'Complet\u00E1 el mes de vencimiento de la tarjeta' }}</p>\r\n <p class=\"alert-text\" *ngIf=\"year.invalid && submitPressed\">\r\n {{ language.toLowerCase() === 'en' ? 'Required' : 'Complet\u00E1 el a\u00F1o de vencimiento de la tarjeta' }}</p>\r\n <p class=\"alert-text\" *ngIf=\"invalidDate\">\r\n {{ language.toLowerCase() === 'en' ? 'Enter a valid expiration date' : 'La fecha de la tarjeta ingresada est\u00E1 vencida'}}\r\n </p>\r\n </div>\r\n\r\n <!-- Card-name -->\r\n <div class=\"formRow\">\r\n <label>\r\n {{ language.toLowerCase() === 'en' ? 'Holder name' : 'Nombre y apellido impreso en la tarjeta' }}\r\n </label>\r\n\r\n <span>\r\n <input type=\"text\"\r\n name=\"payername\"\r\n placeholder=\"{{language.toLowerCase() === 'en' ? 'Holder name' : 'TITULAR'}}\" value=\"{{payerName}}\"\r\n maxlength=\"22\"\r\n data-decidir=\"card_holder_name\"\r\n required\r\n [disabled]=\"disabled\"\r\n (input)=\"onPayerNameChange()\"\r\n (paste)=\"onPaste()\"\r\n [(ngModel)]=\"payerNameText\"\r\n #payername=\"ngModel\" />\r\n </span>\r\n <p [hidden]=\"disabled\" class=\"alert-text\" *ngIf=\"!payername.valid && submitPressed\">\r\n {{ language.toLowerCase() === 'en' ? 'Required' : 'Complet\u00E1 el nombre del titular de la tarjeta' }}\r\n </p>\r\n </div>\r\n\r\n <div class=\"formRow\" *ngIf=\"currency === 'USD'\">\r\n <input type=\"hidden\" data-decidir=\"card_holder_doc_type\" name=\"type\">\r\n <input type=\"hidden\" data-decidir=\"card_holder_doc_number\" name=\"dni\">\r\n </div>\r\n\r\n\r\n <div class=\"formRow\" *ngIf=\"currency === 'ARS'\">\r\n <label for=\"card_holder_doc_type\">N\u00FAmero de documento del titular</label>\r\n <div class=\"form-row-2col\">\r\n <!-- Tipo de documento-->\r\n <div class=\"formRow\">\r\n <div class=\"select-icon\">\r\n <select data-decidir=\"card_holder_doc_type\" ngModel required #type=\"ngModel\" name=\"type\"\r\n [disabled]=\"disabled\">\r\n <option value=\"\" disabled selected>Seleccionar...</option>\r\n <option value=\"dni\">DNI</option>\r\n <option value=\"cuil\">CUIL</option>\r\n </select>\r\n </div>\r\n </div>\r\n <!-- DNI -->\r\n <div class=\"formRow\">\r\n <span>\r\n <input id=\"card_holder_doc_type\"\r\n type=\"text\"\r\n name=\"dni\"\r\n minlength=\"7\"\r\n maxlength=\"11\"\r\n data-decidir=\"card_holder_doc_number\"\r\n required\r\n [disabled]=\"disabled\"\r\n (input)=\"onDniChange()\"\r\n (paste)=\"onPaste()\"\r\n [(ngModel)]=\"dniText\"\r\n #dni=\"ngModel\" />\r\n </span>\r\n </div>\r\n </div>\r\n <p class=\"alert-text\" *ngIf=\"type.invalid && submitPressed\">Seleccion\u00E1 tipo de documento</p>\r\n <p class=\"alert-text\" *ngIf=\"dni.errors?.minlength && submitPressed\">Requiere 7 digitos m\u00EDnimo</p>\r\n <p class=\"alert-text\" *ngIf=\"dni.errors?.required && submitPressed\">Complet\u00E1 el n\u00FAmero de documento</p>\r\n </div>\r\n <!-- CVV -->\r\n <div class=\"formRow\">\r\n <label for=\"security_code\">{{ language.toLowerCase() === 'en' ? 'CSC' : 'C\u00F3digo de seguridad' }}</label>\r\n <span>\r\n <input id=\"security_code\"\r\n type=\"text\"\r\n name=\"cvc\"\r\n placeholder=\"CSC\"\r\n minlength=\"3\"\r\n maxlength=\"4\"\r\n data-decidir=\"security_code\"\r\n required\r\n [disabled]=\"disabled\"\r\n (input)=\"onCodeChange()\"\r\n (paste)=\"onPaste()\"\r\n [(ngModel)]=\"cvcText\"\r\n #cvc=\"ngModel\" />\r\n </span>\r\n <p class=\"alert-text\" *ngIf=\"cvc.errors?.minlength && submitPressed\">\r\n {{ language.toLowerCase() === 'en' ? 'Enter a valid csc' : 'Requiere 3 digitos m\u00EDnimo' }}\r\n </p>\r\n <p class=\"alert-text\" *ngIf=\"cvc.errors?.required && submitPressed\">\r\n {{ language.toLowerCase() === 'en' ? 'Required' : 'Complet\u00E1 el c\u00F3digo de seguridad' }}\r\n </p>\r\n </div>\r\n\r\n <!-- Cuotas -->\r\n <ng-container *ngIf=\"currency === 'ARS'\">\r\n <div class=\"formRow\">\r\n <label>Cuotas</label>\r\n <div class=\"select-icon\">\r\n <select name=\"ins\"\r\n required\r\n [disabled]=\"disabled\"\r\n [(ngModel)]=\"selectCreditCardPlan\"\r\n (change)=\"selectedCreditCardPlan()\"\r\n #ins=\"ngModel\">\r\n <option [value]=\"null\" selected disabled>Sin Seleccionar...</option>\r\n <option [ngValue]=\"item\" *ngFor=\"let item of creditCardPlans\">{{ item.description }}</option>\r\n </select>\r\n </div>\r\n <p class=\"alert-text\" *ngIf=\"ins.invalid && submitPressed\">Seleccion\u00E1 cantidad de cuotas</p>\r\n </div>\r\n </ng-container>\r\n\r\n <div>\r\n <div>\r\n <div class=\"amount-resume\" *ngIf=\"f.valid\">\r\n <ng-container *ngIf=\"currency === 'ARS'\">\r\n <p>Total al contado</p>\r\n <h1>$ {{ totalAmount | number:'2.2-2' }}</h1>\r\n <p>Total financiado</p>\r\n <h3>$ {{ totalFinancedAmount | number:'2.2-2'}}</h3>\r\n <p>TEA: {{ currentTEA }}%</p>\r\n <p>CFT: {{ currentCFT }}%</p>\r\n </ng-container>\r\n <ng-container *ngIf=\"currency === 'USD'\">\r\n <p>Total</p>\r\n <h1>{{ labelButton }}</h1>\r\n </ng-container>\r\n <div *ngIf=\"paymentState === 'unsubmitted'\">\r\n <button *ngIf=\"currency === 'ARS'\" type=\"submit\" (click)=\"onSubmit($event)\">\r\n Pagar ${{ totalFinancedAmount | number:'2.2-2' }}\r\n </button>\r\n\r\n <button *ngIf=\"currency === 'USD'\" type=\"submit\" (click)=\"onSubmit($event)\">\r\n {{ labelButton }}\r\n </button>\r\n </div>\r\n <div *ngIf=\"paymentState === 'success' || paymentState === 'processing'\">\r\n <button *ngIf=\"currency === 'ARS'\" disabled>Pagar $ {{totalFinancedAmount | number:'2.2-2'}}</button>\r\n <button *ngIf=\"currency === 'USD'\" disabled>{{ labelButton }}</button>\r\n </div>\r\n </div>\r\n <p [hidden]=\"disabled\" class=\"alert-text\" *ngIf=\"!f.valid\">\r\n {{ language.toLowerCase() === 'en' ? 'Complete all fields' : 'Complet\u00E1 los campos faltantes' }}\r\n </p>\r\n <div *ngIf=\"!f.valid && paymentState !== 'success' && paymentState !== 'apiError' && paymentState !== 'error'\">\r\n <button *ngIf=\"currency === 'ARS'\" type=\"submit\" (click)=\"onSubmit($event)\">Pagar $\r\n {{ paymentAmount | number:'2.2-2' }}\r\n </button>\r\n <button *ngIf=\"currency === 'USD'\" type=\"submit\" (click)=\"onSubmit($event)\">\r\n {{ labelButton }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"logo\">\r\n <img [src]=\"logoSps\" alt=\"SPS Decidir\" class=\"responsive-img\" style=\"width: 50px;\">\r\n </div>\r\n <div>\r\n <div class=\"pay-message info\" *ngIf=\"paymentState === 'processing'\">\r\n <i class=\"material-icons\">info</i>\r\n <p>\r\n {{ language.toLowerCase() === 'en' ? 'Processing payment...' : 'Procesando pago...' }}\r\n </p>\r\n </div>\r\n <div class=\"pay-message error\" *ngIf=\"paymentState === 'error'\">\r\n <i class=\"material-icons\">error</i>\r\n <p>\r\n {{errorMessage}}\r\n <br>\r\n {{ language.toLowerCase() === 'en' ? 'Error processing the payment' : 'No se proces\u00F3 el pago' }}\r\n </p>\r\n </div>\r\n <div *ngIf=\"language.toLowerCase() !== 'en' && paymentState === 'success'\" class=\"pay-message success\">\r\n <i class=\"material-icons\">check_circle</i>\r\n <p>\r\n Tu pago se ha confirmado!\r\n <br>\r\n Estos son los datos de la transacci\u00F3n:\r\n </p>\r\n <i class=\"data\">Nro. de Pago: {{paymentSuccessInfo.payment_id}}</i>\r\n <i class=\"data\">Ticket: {{paymentSuccessInfo.ticket}}</i>\r\n <i class=\"data\">Cod. Autorizaci\u00F3n: {{paymentSuccessInfo.card_authorization_code}}</i>\r\n </div>\r\n\r\n <div *ngIf=\"language.toLowerCase() === 'en' && paymentState === 'success'\" class=\"pay-message success\">\r\n <i class=\"material-icons\">check_circle</i>\r\n <p>\r\n Your payment has been confirmed!\r\n <br>\r\n These are the transaction data:\r\n </p>\r\n <i class=\"data\">Payment No.: {{paymentSuccessInfo.payment_id}}</i>\r\n <i class=\"data\">Ticket: {{paymentSuccessInfo.ticket}}</i>\r\n <i class=\"data\">Authorization Code: {{paymentSuccessInfo.card_authorization_code}}</i>\r\n </div>\r\n\r\n <div class=\"pay-message error\" *ngIf=\"paymentState === 'apiError'\">\r\n <i class=\"material-icons\">error</i>\r\n <p>\r\n {{ language.toLowerCase() === 'en' ? 'Error processing the payment (Vitnik)' : 'Error al procesar el pago (Vitnik)'}}\r\n </p>\r\n </div>\r\n\r\n <button *ngIf=\"language.toLowerCase() === 'es' && (paymentState === 'apiError' || paymentState === 'error')\" (click)=\"resetForm()\">\r\n Limpiar formulario\r\n </button>\r\n <button *ngIf=\"language.toLowerCase() === 'en' && (paymentState === 'apiError' || paymentState === 'error')\" (click)=\"resetForm()\">\r\n Clear form\r\n </button>\r\n\r\n </div>\r\n</form>\r\n",
|
|
2396
2405
|
styles: ["@charset \"UTF-8\";.flex-row-wrap{display:flex;flex-flow:row wrap;flex-direction:row;justify-content:space-between;align-items:center}.flex-row-wrap div{margin:10px;width:200px;flex-grow:1}#formulario{background-color:transparent;font-family:inherit,sans-serif}#formulario label{font-size:14px;color:#888}.formRow{margin-top:10px}.form-row-2col{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.form-row-2col .formRow{width:49%;margin-top:0}.form-row-3col{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.form-row-3col .formRow{width:32%;margin-top:0}span{background-color:#fff;border:.5px solid #707070;border-radius:2px;padding:2px 10px;display:block;margin-top:4px}input[type=password],input[type=text]{background:0 0;border:none;color:#000;font-size:15px;height:23px;width:100%;text-transform:uppercase;vertical-align:top}select{width:100%;font-size:15px;height:30px;padding:2px 10px;border:.5px solid #707070;border-radius:2px;display:block;margin-top:4px;-webkit-appearance:none;-moz-appearance:none;position:relative;z-index:1;background:0 0}.select-icon{position:relative}.select-icon::after{content:\"\uE5CF\";font-family:\"Material Icons\";position:absolute;right:5px;top:3px;font-size:24px}.icon-select{width:24px;position:absolute;right:13px}.alert-text{font-size:15px;color:#009ee3;margin-top:7px;margin-bottom:0}:focus{outline:0}.pay-message{margin-top:10px;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:20px}.pay-message p{font-size:1.1rem;text-align:center;line-height:130%;margin-bottom:10px}.pay-message i.data{font-size:.9rem;text-align:center}.pay-message i.material-icons{font-size:2rem;margin-bottom:5px}.success{background-color:#dff2bf;color:#4f8a10}.error{color:#d8000c;background-color:#ffd2d2}.info{color:#00529b;background-color:#bde5f8}button{background-color:#009ee3;color:#fff;font-size:18px;text-align:center;padding:10px 0;width:100%;border:none;border-radius:20px;margin-top:20px;cursor:pointer}button:disabled{background-color:#525252;cursor:default}.amount-resume h1,.amount-resume h3{margin-top:0;margin-bottom:10px}.amount-resume p{font-size:13px;color:#525252;margin:5px 0;text-transform:uppercase;line-height:130%}.logo{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-end;padding-top:10px}.responsive-img{width:100%;height:auto}"]
|
|
2397
2406
|
}] }
|
|
2398
2407
|
];
|