vk-payments 0.2.13 → 0.2.15

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://vk-payments/lib/mercadopago/services/mercadopago.api.service.ts","ng://vk-payments/lib/mercadopago/components/mercadopago.component.ts","ng://vk-payments/lib/mercadopago/components/promotion-bank.component.ts","ng://vk-payments/lib/mercadopago/mercadopago.module.ts","ng://vk-payments/lib/paypal/components/paypal-new.component.ts","ng://vk-payments/lib/paypal/paypal.module.ts","ng://vk-payments/lib/sps-decidir/services/sps-decidir.api.service.ts","ng://vk-payments/lib/sps-decidir/components/sps-decidir.component.ts","ng://vk-payments/lib/sps-decidir/sps-decidir.module.ts","ng://vk-payments/lib/go-cuotas/services/go-cuotas.api.service.ts","ng://vk-payments/lib/go-cuotas/components/modal/modal.component.ts","ng://vk-payments/lib/go-cuotas/components/go-cuotas.component.ts","ng://vk-payments/lib/go-cuotas/go-cuotas.module.ts","ng://vk-payments/lib/modo/services/modo-api.service.ts","ng://vk-payments/lib/modo/components/modo/modo.component.ts","ng://vk-payments/lib/modo/modo.module.ts","ng://vk-payments/lib/vk-payments.module.ts"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","__values","o","m","i","MercadopagoApiService","httpClient","prototype","makePayment","cardPayment","access_token","url","_setAuthHeaders","post","normalizeUrl","headers","authHeaders","getMercadoPagoPromotions","get","charAt","substr","userToken","HttpHeaders","Content-Type","Authorization","Injectable","args","providedIn","HttpClient","MercadoPagoComponent","router","mercadopagoApiService","paymentState","tokenId","disabled","addScript","requiredIssuer","submitted","paymentResult","success","paymentId","integrator","statusPay","EventEmitter","ngOnInit","initMercadoPago","ngOnChanges","changes","paymentAmount","isFirstChange","checkOutForm","reset","_this","addMercadopagoScript","Mercadopago","setPublishableKey","publishableKey","getIdentificationTypes","totalAmount","defaultName","payerName","defaultDocType","scripttagElement","document","createElement","src","onload","appendChild","createToken","sendForm","status","response","emit","errorMessage","id","hashedCard","hashText","cardText","transactionAmount","description","installments","Number","issuerId","issuer","paymentMethodId","currentPaymentMethod","codCP","idVen","docNumber","additionalData","data","storeId","hash","mercadoPagoPayment","text","iterations","hashedtext","sha256","paymentResponseHandler","statusDetails","ticket","transactionId","logger","successUrl","navigate","failureUrl","checkPaymentMethod","cardNumber","currentInstallments","currentIssuers","toString","currentBin","substring","self_1","getPaymentMethod","bin","respCode","respBody","setCurrentMethod","res","additionalInfo","additional_info_needed","undefined","find","x","self_2","getIssuers","setIssuers","checkInstallments","requestObject","self","amount","issuer_id","getInstallments","setInstallments","filter","card","payment_method_id","payer_costs","onDuesSelection","_c","tslib_1.__values","_d","ins","totalFinancedAmount","total_amount","_e","e_2","labels","_f","includes","recommendedLabel","replace","split","currentTEA","currentCFT","onSubmit","form","valid","securityCode","cvcText","cardExpirationMonth","monthText","cardExpirationYear","yearText","cardholderName","docType","dniText","debugLog","console","log","clearSession","onYearChange","isNaN","setTimeout","onMonthLostFocus","onMonthChange","onCodeChange","onDniChange","onPayerNameChange","onCardChange","onPaste","message","JSON","stringify","accessToken","vkUrlApi","subscribe","error","resetForm","Component","selector","template","Router","Input","Output","ViewChild","static","PromotionBankComponent","mercadoPagoService","cardPromotions","COMPONENTS","MercadopagoModule","NgModule","declarations","exports","imports","CommonModule","FormsModule","ReactiveFormsModule","RouterModule","PayPalNewComponent","showError","loading","linkToPay","linkExecutePay","ngAfterViewChecked","addPaypalScript","paypalConfig","style","color","shape","height","commit","createOrder","actions","order","create","purchase_units","getElementById","reference_id","custom_id","application_context","shipping_preference","onApprove","capture","details","userid","fetch","method","content-type","window","location","href","onError","reload","onCancel","paypal","Buttons","render","clientId","currency","PaypalModule","HttpClientModule","SpsDecidirApiService","payment","getDecidirConfigByBin","getCreditCards","domainId","getPlansByCreditCardId","creditCardId","SpsDecidirComponent","spsDecidirApiService","language","disableSelect","selectCreditCardPlan","submitPressed","invalidDate","initDecidir","addDecidirScript","initializeSpsDecidir","creditCards","creditCardPlans","decidir","Decidir","spsUrlApi","useCybersource","defaultPublishableKey","selectedCreditCard","selectedCreditCardPlan","tna","cft","event","preventDefault","config","superviellePublishableKey","querySelector","processErrorToken","paymentResponse","token","documentNumber","cardholder","identification","number","paymentType","creditCardPlanId","payerNameText","subPayments","creditCardHash","lastFourDigits","slice","paymentSuccessInfo","payment_id","processErrorMessage","forEach","type","responseError","reason","additional_description","error_type","validation_errors","code","param","compareDate","year","month","day","d1","Date","d2","getTime","onYearBlur","element","getDate","target","focus","search","setCreditType","SpsDecidirModule","GoCuotasApiService","initPayment","areaCode","phoneNumber","email","getOrders","sale_token","cardMonthExpiration","cardYearExpiration","cardSecurityCode","ModalComponent","modalVisible","verificationCode","codeVerified","openModal","overflow","closeModal","onSubmitCode","alert","onVerificationCodeChange","GoCuotasComponent","goCuotasApiService","error_message","paymentCompleted","loadingMessage","paymentStatus","disabledSelect","isLoading","hasError","OinitPayment","codAreaText","telText","mailText","toLowerCase","initPaymentResponseHandler","ResponseHandlerError","errorsMessages","Opayment","modal","onCodeSent","finishPayment","FinishPaymentResponseHandler","ok","String","restartForm","onMailChange","onCodAreaChange","onTelChange","onInstallmentsChange","GoCuotasModule","providers","ModoApiService","http","createPayment","paymentRequest","apiUrl","ModoComponent","modoApi","loadModoScript","startModoPayment","createModoPayment","initialData_1","_a","modalObject","version","qrString","checkoutId","deeplink","callbackURL","callbackUrl","callbackURLSuccess","callbackUrlSuccess","refreshData","onSuccess","onFailure","onClose","ModoSDK","modoInitPayment","error_1","orderId","toPromise","internalPaymentId","Error","scriptUrl","script","ModoModule","LIB_MODULES","VkPaymentsModule"],"mappings":"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AAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { CardPayment } from '../models/mercadopago.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MercadopagoApiService {\r\n private authHeaders: HttpHeaders;\r\n\r\n constructor(private httpClient: HttpClient) { }\r\n\r\n makePayment(cardPayment: CardPayment, access_token: string, url: string): Observable<any> {\r\n this._setAuthHeaders(access_token);\r\n return this.httpClient.post(this.normalizeUrl(url) + '/Payment', cardPayment, { headers: this.authHeaders });\r\n }\r\n\r\n getMercadoPagoPromotions(url: string): Observable<any> {\r\n return this.httpClient.get(url);\r\n }\r\n\r\n normalizeUrl(url: string): string {\r\n if (url.length > 0 && url.charAt(url.length - 1) == '/') {\r\n url = url.substr(0, url.length - 1);\r\n }\r\n return url;\r\n }\r\n\r\n private _setAuthHeaders(access_token: string) {\r\n const userToken = 'Bearer ' + access_token;\r\n this.authHeaders = new HttpHeaders({ 'Content-Type': 'application/json', 'Authorization': userToken });\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { Router } from '@angular/router';\n\nimport { CardPayment, CreateTokenResponse, PaymentResult, ResponseInstallment } from '../models/mercadopago.model';\nimport { MercadopagoApiService } from '../services/mercadopago.api.service';\nimport sha256 from 'sha256';\n\n\ndeclare var Mercadopago: any;\n\n@Component({\n selector: 'mp-form-pay',\n templateUrl: './mercadopago.component.html',\n styleUrls: ['./mercadopago.component.scss']\n})\nexport class MercadoPagoComponent implements OnInit, OnChanges {\n\n totalAmount: number;\n totalFinancedAmount: number;\n currentBin: string;\n recommendedLabel: string;\n currentTEA: string;\n currentCFT: string;\n ticket: string;\n defaultName: string;\n defaultDocType: string;\n issuerId: string;\n currentPaymentMethod: any;\n currentIssuers: any[];\n currentInstallments: any[];\n cardPayment: CardPayment;\n\n // input bind\n yearText: string;\n monthText: string;\n dniText: string;\n cvcText: string;\n cardText: string;\n errorMessage: string;\n\n paymentState = 'unsubmitted';\n tokenId = '';\n disabled = false;\n addScript = false;\n requiredIssuer = false;\n submitted = false;\n\n paymentResult: PaymentResult = { success: false, paymentId: '', integrator: 'MP' };\n\n @Input() paymentAmount: number;\n @Input() payerName: string;\n @Input() payerEmail: string;\n @Input() accessToken: string;\n @Input() vkUrlApi: string;\n @Input() description: string;\n @Input() publishableKey: string;\n @Input() successUrl: string;\n @Input() failureUrl: string;\n @Input() imgCreditCards: string;\n @Input() imgMercadoPago: string;\n @Input() iconExpandMore: string;\n @Input() debugLog: boolean;\n @Input() storeId: string;\n @Input() idVen: number;\n @Input() data: string;\n @Output() statusPay = new EventEmitter<PaymentResult>();\n\n @ViewChild('f', { static: false }) checkOutForm: NgForm;\n\n constructor(private router: Router, private mercadopagoApiService: MercadopagoApiService) { }\n\n ngOnInit() {\n this.initMercadoPago();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!changes.paymentAmount.isFirstChange()) {\n this.disabled = false;\n this.checkOutForm.reset();\n }\n }\n\n private initMercadoPago() {\n this.addMercadopagoScript()\n .then(() => {\n Mercadopago.setPublishableKey(this.publishableKey);\n Mercadopago.getIdentificationTypes();\n\n this.totalAmount = this.paymentAmount;\n this.defaultName = this.payerName;\n this.defaultDocType = 'DNI';\n });\n }\n\n private addMercadopagoScript() {\n this.addScript = true;\n return new Promise((resolve, reject) => {\n const scripttagElement = document.createElement('script');\n scripttagElement.src = 'https://secure.mlstatic.com/sdk/javascript/v1/mercadopago.js?2345';\n scripttagElement.onload = resolve;\n document.body.appendChild(scripttagElement);\n });\n }\n\n private createToken(sendForm: any) {\n this.paymentState = 'processing';\n Mercadopago.createToken(sendForm, (status, response: any) => {\n \n if (status !== 200 && status !== 201) {\n this.paymentState = 'error';\n this.statusPay.emit(this.paymentResult);\n this.errorMessage = 'Revisa los datos del formulario.';\n // const causes: Cause[] = (response as ErrorTokenResponse).cause;\n // if (causes !== null && causes.length > 0) {\n // causes.forEach((item) => {\n // this.errorMessage += this.getErrorMessage(item.code) + '\\n';\n // });\n // }\n } else {\n this.tokenId = (response as CreateTokenResponse).id;\n this.makePayment();\n }\n });\n }\n\n private makePayment() {\n const hashedCard = this.hashText(this.cardText,100000);\n this.cardPayment = {\n tokenId: this.tokenId,\n transactionAmount: this.totalAmount,\n description: this.description,\n installments: Number(this.checkOutForm.value.installments),\n issuerId: this.checkOutForm.value.issuer,\n paymentMethodId: this.currentPaymentMethod[0].id,\n codCP: this.idVen,\n docNumber: this.checkOutForm.value.docNumber,\n additionalData: this.data,\n storeId: this.storeId,\n hash: hashedCard\n };\n this.mercadoPagoPayment();\n }\n\n private hashText(text: string, iterations:number): string{\n let hashedtext = text;\n for (let i = 0; i < iterations; i++) {\n hashedtext = sha256(hashedtext);\n }\n return hashedtext\n }\n\n private paymentResponseHandler(response: any) {\n if (response.success) {\n this.paymentState = response.data.statusDetails;\n this.ticket = response.data.transactionId;\n this.paymentResult = { success: true, paymentId: this.ticket, integrator: 'MP' };\n this.statusPay.emit(this.paymentResult);\n this.disabled = true;\n\n this.logger('paymentResponseHandler:', response);\n if (this.successUrl && this.successUrl.length > 0) {\n this.router.navigate([`${this.successUrl}`]);\n }\n } else {\n this.paymentState = 'apiError';\n this.statusPay.emit(this.paymentResult);\n if (this.successUrl && this.failureUrl.length > 0) {\n this.router.navigate([`${this.failureUrl}`]).then();\n }\n }\n }\n\n checkPaymentMethod() {\n if (this.checkOutForm.value.cardNumber != null) {\n this.currentInstallments = null;\n this.currentIssuers = null;\n if (this.checkOutForm.value.cardNumber.toString().length >= 6) {\n this.currentBin = this.checkOutForm.value.cardNumber.toString().substring(0, 6);\n const self = this;\n Mercadopago.getPaymentMethod(\n {\n 'bin': this.checkOutForm.value.cardNumber.toString()\n }, function (respCode, respBody) {\n if (respCode === 200) {\n self.setCurrentMethod(respBody);\n }\n });\n }\n if (this.checkOutForm.value.cardNumber.toString().length < 6) {\n this.requiredIssuer = false;\n }\n }\n }\n\n setCurrentMethod(res: any) {\n if (res) {\n this.logger('setCurrentMethod:', res);\n\n const additionalInfo: String[] = res[0].additional_info_needed;\n const issuerIdKey = 'issuer_id';\n\n if (additionalInfo.find(x => x == issuerIdKey) == undefined) {\n this.requiredIssuer = false;\n }\n else {\n this.requiredIssuer = true;\n }\n \n this.logger('requiredIssuer:', this.requiredIssuer);\n\n this.currentPaymentMethod = res;\n const self = this;\n Mercadopago.getIssuers(res[0].id, function (respCode, respBody) {\n if (respCode === 200) {\n self.setIssuers(respBody);\n }\n });\n\n self.checkInstallments(this.requiredIssuer);\n }\n }\n\n checkInstallments(requiredIssuer: boolean) {\n if (this.currentBin == undefined || this.currentBin.length < 6) {\n return;\n }\n const self = this;\n self.currentInstallments = null;\n\n let requestObject:any\n \n if (requiredIssuer) {\n requestObject = {\n 'bin': this.currentBin,\n 'amount': this.totalAmount,\n 'issuer_id': this.issuerId\n } \n }\n else {\n requestObject = {\n 'bin': this.currentBin,\n 'amount': this.totalAmount\n } \n }\n\n Mercadopago.getInstallments(requestObject, function (respCode, respBody) {\n if (respCode === 200) {\n self.setInstallments(respBody);\n } else {\n self.currentInstallments = null;\n }\n });\n }\n\n setInstallments(res: ResponseInstallment[]) {\n //this.logger('setInstallments:', res);\n\n if (res.length > 0) {\n if (this.issuerId != undefined && res.length > 1 && this.currentPaymentMethod.length > 0) {\n const result = res.filter(card => card.issuer.id === this.issuerId && card.payment_method_id === this.currentPaymentMethod[0].id);\n this.currentInstallments = result[0].payer_costs;\n this.issuerId = result[0].issuer.id;\n }\n else {\n this.currentInstallments = res[0].payer_costs;\n this.issuerId = res[0].issuer.id;\n }\n }\n }\n\n setIssuers(res: any) {\n //this.logger('setIssuers res', res);\n this.currentIssuers = res;\n }\n\n onDuesSelection(res: any) {\n for (const ins of this.currentInstallments) {\n if (ins.installments === Number(res.value.installments)) {\n this.totalFinancedAmount = ins.total_amount;\n for (const label of ins.labels) {\n if (label.includes('CFT')) {\n this.recommendedLabel = label.replace(/_/g, ': ').split('|', 2);\n this.currentTEA = this.recommendedLabel[1];\n this.currentCFT = this.recommendedLabel[0];\n }\n }\n }\n }\n }\n\n onSubmit(form: NgForm) {\n this.submitted = true;\n this.paymentResult = { success: false, paymentId: '', integrator: 'MP' };\n if (this.checkOutForm.valid) {\n const sendForm = {\n cardNumber: this.cardText,\n securityCode: this.cvcText,\n cardExpirationMonth: this.monthText,\n cardExpirationYear: this.yearText,\n cardholderName: this.defaultName,\n docType: this.defaultDocType,\n docNumber: this.dniText\n };\n\n if (this.debugLog) {\n console.log('sendForm', sendForm);\n }\n\n if (this.tokenId !== '') {\n Mercadopago.clearSession();\n }\n\n this.createToken(sendForm);\n }\n }\n\n // Input controls\n onYearChange() {\n if (isNaN(+this.yearText)) {\n setTimeout(() => {\n this.yearText = '';\n });\n }\n }\n\n onMonthLostFocus() {\n if (+this.monthText > 0 && !isNaN(+this.monthText)) {\n if (this.monthText == '1') {\n this.monthText = '01';\n }\n }\n }\n\n onMonthChange() {\n if (+this.monthText >= 0 && +this.monthText < 13 && !isNaN(+this.monthText)) {\n switch (this.monthText) {\n case '2': {\n this.monthText = '02';\n break;\n }\n case '3': {\n this.monthText = '03';\n break;\n }\n case '4': {\n this.monthText = '04';\n break;\n }\n case '5': {\n this.monthText = '05';\n break;\n }\n case '6': {\n this.monthText = '06';\n break;\n }\n case '7': {\n this.monthText = '07';\n break;\n }\n case '8': {\n this.monthText = '08';\n break;\n }\n case '9': {\n this.monthText = '09';\n break;\n }\n }\n } else {\n setTimeout(() => {\n this.monthText = '';\n });\n }\n }\n\n onCodeChange() {\n if (isNaN(+this.cvcText)) {\n setTimeout(() => {\n this.cvcText = '';\n });\n }\n }\n onDniChange() {\n if (isNaN(+this.dniText)) {\n setTimeout(() => {\n this.dniText = '';\n });\n }\n }\n\n onPayerNameChange() {\n if (!isNaN(+this.defaultName)) {\n setTimeout(() => {\n this.defaultName = '';\n });\n }\n }\n\n onCardChange() {\n if (isNaN(+this.cardText)) {\n setTimeout(() => {\n this.cardText = '';\n });\n }\n }\n\n onPaste(): boolean {\n return false;\n }\n\n logger(message: string, data: any): void {\n if (this.debugLog) {\n console.log(message, JSON.stringify(data));\n }\n }\n\n mercadoPagoPayment(){\n this.mercadopagoApiService.makePayment(this.cardPayment, this.accessToken, this.vkUrlApi)\n .subscribe(res => {\n this.paymentResponseHandler(res);\n }, error => {\n this.statusPay.emit(this.paymentResult);\n this.paymentState = 'apiError';\n console.log(error);\n });\n }\n\n resetForm() {\n this.disabled = false;\n this.totalAmount\n this.totalFinancedAmount = undefined;\n this.currentBin = undefined;\n this.recommendedLabel = undefined;\n this.currentTEA = undefined;\n this.currentCFT = undefined;\n this.ticket = undefined;\n this.defaultName = undefined;\n this.defaultDocType = undefined;\n this.issuerId = undefined;\n this.currentPaymentMethod = undefined;\n this.currentIssuers = null;\n this.currentInstallments = null;\n this.cardPayment = undefined;\n\n this.paymentResult = { success: false, paymentId: '', integrator: 'MP' };\n \n // Form bind\n this.monthText = undefined;\n this.yearText = undefined;\n this.cvcText = undefined;\n this.dniText = undefined;\n this.cardText = undefined;\n this.requiredIssuer = false;\n this.submitted = false;\n this.addScript = false;\n this.paymentState = 'unsubmitted';\n this.payerName = undefined;\n this.tokenId = '';\n this.errorMessage = undefined;\n\n this.checkOutForm.reset()\n\n this.initMercadoPago();\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { MercadopagoApiService } from '../services/mercadopago.api.service';\r\n\r\n\r\n@Component({\r\n selector: 'mp-promotion',\r\n templateUrl: './promotion-bank.component.html',\r\n styleUrls: ['./promotion-bank.component.scss']\r\n})\r\nexport class PromotionBankComponent implements OnInit {\r\n @Input() url: string;\r\n @Input() contentSource: string;\r\n\r\n cardPromotions: any;\r\n\r\n constructor(private mercadoPagoService: MercadopagoApiService) { }\r\n\r\n ngOnInit() {\r\n this.mercadoPagoService\r\n .getMercadoPagoPromotions(this.url)\r\n .subscribe(res => this.cardPromotions = res);\r\n }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { MercadoPagoComponent } from './components/mercadopago.component';\nimport { PromotionBankComponent } from './components/promotion-bank.component';\n\nconst COMPONENTS = [\n MercadoPagoComponent,\n PromotionBankComponent\n];\n\n@NgModule({\n declarations: COMPONENTS,\n exports: COMPONENTS,\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule\n ]\n})\nexport class MercadopagoModule { }\n","import { AfterViewChecked, Component, Input, OnInit } from '@angular/core';\n\nimport { PaypalResponse } from '../models/response-paypal.model';\n\ndeclare let paypal: any;\n\n@Component({\n selector: 'paypal-new-form-pay',\n templateUrl: './paypal-new.component.html',\n styleUrls: ['./paypal-new.component.scss']\n})\nexport class PayPalNewComponent implements OnInit, AfterViewChecked {\n @Input() accessToken: string;\n @Input() clientId: string;\n @Input() vkUrlApi: string;\n @Input() storeId: string;\n @Input() userId: string;\n @Input() transactionId: string;\n @Input() amount: string;\n @Input() currency: string;\n @Input() cancelUrl: string;\n @Input() successUrl: string;\n @Input() data: string;\n @Input() urlSignout: string;\n\n private addScript = false;\n\n errorsMessage: any;\n\n showError = false;\n loading = true;\n status = '';\n linkToPay = '';\n linkExecutePay = '';\n\n constructor() {\n // if (this.urlSignout === '') {\n // const wnd = window.open(this.urlSignout, 'myWindow', 'width=100,height=100');\n // setTimeout(function () { wnd.close(); }, 1000);\n // }\n }\n\n ngOnInit(): void {\n\n }\n\n ngAfterViewChecked(): void {\n if (!this.addScript) {\n this.addPaypalScript().then(() => {\n\n const paypalConfig = {\n style: {\n color: 'blue',\n shape: 'pill',\n label: 'pay',\n height: 40\n },\n commit: true,\n createOrder: function (data, actions) {\n return actions.order.create({\n purchase_units: [{\n amount: { value: (<HTMLInputElement>document.getElementById('amount')).value },\n reference_id: '\\'' + (<HTMLInputElement>document.getElementById('transactionId')).value + '\\'',\n custom_id: '\\'' + (<HTMLInputElement>document.getElementById('storeId')).value + '\\''\n }],\n application_context: {\n shipping_preference: 'NO_SHIPPING'\n }\n });\n },\n\n // Finalize the transaction\n onApprove: function (data, actions) {\n return actions.order.capture().then(function (details: PaypalResponse) {\n details.data = (<HTMLInputElement>document.getElementById('data')).value;\n details.userid = (<HTMLInputElement>document.getElementById('userId')).value;\n\n fetch((<HTMLInputElement>document.getElementById('vkUrlApi')).value, {\n method: 'post',\n headers: {\n 'content-type': 'application/json',\n 'Authorization': 'Bearer ' + (<HTMLInputElement>document.getElementById('accessToken')).value\n },\n body: JSON.stringify({ details })\n }).then((response) => {\n console.log('response-> api', response);\n }).then(() => {\n window.location.href = (<HTMLInputElement>document.getElementById('successUrl')).value;\n });\n });\n },\n onError: function (error) {\n window.location.reload();\n },\n onCancel: (data, actions) => {\n window.location.href = (<HTMLInputElement>document.getElementById('cancelUrl')).value;\n }\n };\n\n paypal.Buttons(paypalConfig).render('#paypal-button-container');\n this.loading = false;\n });\n }\n }\n\n private addPaypalScript() {\n this.addScript = true;\n return new Promise((resolve, reject) => {\n const scripttagElement = document.createElement('script');\n scripttagElement.src = `https://www.paypal.com/sdk/js?client-id=${this.clientId}&currency=${this.currency}`;\n scripttagElement.onload = resolve;\n document.body.appendChild(scripttagElement);\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { PayPalNewComponent } from './components/paypal-new.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n HttpClientModule,\n RouterModule\n ],\n declarations: [\n PayPalNewComponent\n ],\n exports: [\n PayPalNewComponent\n ]\n})\nexport class PaypalModule { }\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { CreditCard, CreditCardPlans, Payment, ResponseApi } from '../models/payment.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SpsDecidirApiService {\r\n private authHeaders: HttpHeaders;\r\n\r\n constructor(private httpClient: HttpClient) { }\r\n\r\n public makePayment(payment: Payment, access_token: string, url: string): Observable<any> {\r\n this._setAuthHeaders(access_token);\r\n return this.httpClient.post(this.normalizeUrl(url) + '/Payment', payment, { headers: this.authHeaders });\r\n }\r\n\r\n public getDecidirConfigByBin(bin: string, url: string,): Observable<any> {\r\n return this.httpClient.get<ResponseApi>(this.normalizeUrl(url) +`/GetDecidirConfigByBin?bin=${bin}`);\r\n }\r\n\r\n\r\n public normalizeUrl(url: string): string {\r\n if (url.length > 0 && url.charAt(url.length - 1) == '/') {\r\n url = url.substr(0, url.length - 1);\r\n }\r\n return url;\r\n }\r\n\r\n public getCreditCards(access_token: string, url: string, domainId: number): Observable<ResponseApi> {\r\n this._setAuthHeaders(access_token);\r\n return this.httpClient.get<ResponseApi>(this.normalizeUrl(url) + '/GetCreditCardsEnable?domainId='+ domainId, { headers: this.authHeaders });\r\n }\r\n\r\n public getPlansByCreditCardId(access_token: string, url: string, amount: string, creditCardId: number, domainId: number, bin: string): Observable<ResponseApi> {\r\n this._setAuthHeaders(access_token);\r\n const body = { amount: amount, creditCardId: creditCardId, domainId: domainId, bin: bin};\r\n return this.httpClient.post<ResponseApi>(this.normalizeUrl(url) + '/CalculateAmountInInstallments', body, { headers: this.authHeaders });\r\n }\r\n\r\n private _setAuthHeaders(access_token: string) {\r\n const userToken = 'Bearer ' + access_token;\r\n this.authHeaders = new HttpHeaders({ 'Content-Type': 'application/json', 'Authorization': userToken });\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport sha256 from 'sha256';\n\nimport {\n CreditCard,\n CreditCardPlans,\n ErrorToken,\n Payment,\n PaymentResponseInfo,\n PaymentResult,\n ResponseApi,\n SpsResponsePayment,\n} from '../models/payment.model';\nimport { SpsDecidirApiService } from '../services/sps-decidir.api.service';\n\ndeclare var Decidir: any;\n\n@Component({\n selector: 'sps-form-pay',\n templateUrl: './sps-decidir.component.html',\n styleUrls: ['./sps-decidir.component.scss']\n})\nexport class SpsDecidirComponent implements OnInit, OnChanges {\n\n @ViewChild('f', { static: false }) checkOutForm: NgForm;\n @Input() accessToken: string;\n @Input() spsUrlApi: string;\n @Input() vkUrlApi: string;\n @Input() paymentAmount: string;\n @Input() logoSps: string;\n @Input() currency: string;\n @Input() defaultPublishableKey: string;\n @Input() superviellePublishableKey: string;\n @Input() successUrl: string;\n @Input() failureUrl: string;\n @Input() useCybersource: boolean;\n @Input() debugLog: boolean;\n @Input() storeId: string;\n @Input() domainId: number;\n @Input() idVen: number;\n @Input() data: string;\n @Input() labelButton: string;\n @Input() language = 'es';\n @Output() statusPay = new EventEmitter<PaymentResult>();\n\n disabled = false;\n disableSelect = false;\n totalAmount: string;\n totalFinancedAmount: string;\n currentTEA: string;\n currentCFT: string;\n\n creditCards: CreditCard[];\n selectCreditCardPlan: CreditCardPlans = null;\n creditCardPlans: CreditCardPlans[];\n paymentResult: PaymentResult = { success: false, paymentId: '', integrator: 'DECIDIR' };\n\n // Form bind\n monthText: string;\n yearText: string;\n cvcText: string;\n dniText: string;\n payerNameText: string;\n cardText: string;\n submitPressed = false;\n invalidDate = false;\n\n private decidir: any;\n addScript = true;\n\n paymentState = 'unsubmitted';\n payerName: string;\n issuer?: number = null;\n payment: Payment;\n paymentSuccessInfo: PaymentResponseInfo;\n errorMessage: string;\n\n constructor(private router: Router, public spsDecidirApiService: SpsDecidirApiService) { }\n\n ngOnInit() {\n this.initDecidir();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!changes.paymentAmount.isFirstChange()) {\n this.checkOutForm.reset();\n this.disabled = false;\n this.disableSelect = false;\n }\n }\n\n private initDecidir() {\n this.addDecidirScript()\n .then(() => {\n this.getCreditCards();\n this.initializeSpsDecidir();\n });\n }\n\n addDecidirScript() {\n this.addScript = true;\n return new Promise((resolve) => {\n const scripttagElement = document.createElement('script');\n scripttagElement.src = 'https://live.decidir.com/static/v2.4/decidir.js';\n scripttagElement.onload = resolve;\n document.body.appendChild(scripttagElement);\n });\n }\n\n private getCreditCards() {\n this.spsDecidirApiService.getCreditCards(this.accessToken, this.vkUrlApi, this.domainId)\n .subscribe((res: ResponseApi) => {\n this.creditCards = res.data as CreditCard[];\n this.logger('getCreditCards', this.creditCards);\n }, _ => this.paymentState = 'apiError');\n }\n\n private getPlansByCreditCardId(amount: string, creditCardId: number, domainId: number, bin: string) {\n this.spsDecidirApiService.getPlansByCreditCardId(this.accessToken, this.vkUrlApi, amount, creditCardId, domainId, bin)\n .subscribe((res: ResponseApi) => {\n this.creditCardPlans = res.data as CreditCardPlans[];\n this.logger('getPlansByCreditCardId', this.creditCardPlans);\n }, _ => this.paymentState = 'apiError');\n }\n\n private initializeSpsDecidir() {\n this.decidir = new Decidir(this.spsDecidirApiService.normalizeUrl(this.spsUrlApi), !this.useCybersource);\n this.decidir.setTimeout(15000);\n this.decidir.setPublishableKey(this.defaultPublishableKey);\n }\n\n private logger(message: string, data: any): void {\n if (!this.debugLog) { return; }\n console.log(message, data);\n }\n\n public selectedCreditCard() {\n if (!this.issuer) { return; }\n\n this.selectCreditCardPlan = null;\n if (this.currency === 'ARS' && this.cardText.substring(0,8) !== '00000000') {\n this.getPlansByCreditCardId(this.paymentAmount, this.issuer, this.domainId, this.cardText.substring(0,8));\n return;\n } else {\n this.cardText ='';\n }\n\n if (this.currency === 'USD') {\n this.totalAmount = this.totalFinancedAmount = this.paymentAmount;\n }\n }\n\n selectedCreditCardPlan() {\n if (this.selectCreditCardPlan === null) { return; }\n\n this.totalFinancedAmount = this.selectCreditCardPlan.totalAmount;\n this.totalAmount = this.paymentAmount;\n this.currentTEA = this.selectCreditCardPlan.tna;\n this.currentCFT = this.selectCreditCardPlan.cft;\n }\n\n onSubmit(event) {\n event.preventDefault();\n this.submitPressed = true;\n this.paymentResult = { success: false, paymentId: '', integrator: 'DECIDIR' };\n\n if (!this.checkOutForm.valid) { return; }\n\n this.paymentState = 'processing';\n\n this.spsDecidirApiService.getDecidirConfigByBin(this.cardText.substring(0, 8), this.vkUrlApi)\n .subscribe(config => {\n if(config =='SPS-Decidir-Supervielle'){\n this.decidir.setPublishableKey(this.superviellePublishableKey);\n } else {\n this.decidir.setPublishableKey(this.defaultPublishableKey);\n }\n\n const form = document.querySelector('#formulario');\n this.decidir.createToken(form, (status: number, response: SpsResponsePayment) => {\n if (status !== 200 && status !== 201) {\n this.paymentState = 'error';\n this.statusPay.emit(this.paymentResult);\n this.processErrorToken(response);\n } else {\n this.makePayment(form, response);\n }\n });\n\n });\n }\n\n makePayment(form: any, paymentResponse: SpsResponsePayment): void {\n this.logger('makePayment:', JSON.stringify(paymentResponse));\n const hashedCard = this.hashText(this.cardText,100000);\n this.payment = {\n token: paymentResponse.id,\n amount: this.totalAmount,\n totalFinancedAmount: this.totalFinancedAmount,\n bin: paymentResponse.bin,\n currency: 'ARS',\n documentNumber: this.currency === 'USD' ? '0' : paymentResponse.cardholder.identification.number,\n idVen: this.idVen,\n paymentType: 'single',\n installments: this.currency === 'USD' ? 1 : this.selectCreditCardPlan.installments,\n creditCardPlanId: this.currency === 'USD' ? 0 : this.selectCreditCardPlan.id,\n paymentMethodId: this.issuer,\n cardholder: this.payerNameText,\n storeId: this.storeId,\n data: this.data,\n subPayments: [],\n creditCardHash: hashedCard,\n lastFourDigits: this.cardText.slice(-4)\n };\n \n\n this.logger('payment:', JSON.stringify(this.payment));\n this.spsDecidirApiService.makePayment(this.payment, this.accessToken, this.vkUrlApi)\n .subscribe((res: ResponseApi) => {\n this.paymentResponseHandler(res);\n }, error => {\n this.statusPay.emit(this.paymentResult);\n this.paymentState = 'apiError';\n console.error(error);\n });\n }\n\n private hashText(text: string, iterations:number): string{\n let hashedtext = text;\n for (let i = 0; i < iterations; i++) {\n hashedtext = sha256(hashedtext);\n }\n return hashedtext\n }\n\n paymentResponseHandler(response: ResponseApi) {\n this.logger('paymentResponseHandler:', JSON.stringify(response));\n\n if (response.success) {\n this.paymentState = 'success';\n this.paymentSuccessInfo = response.data as PaymentResponseInfo;\n this.paymentResult = { success: true, paymentId: this.paymentSuccessInfo.payment_id, integrator: 'DECIDIR' };\n this.statusPay.emit(this.paymentResult);\n this.disabled = true;\n this.disableSelect = true;\n\n if (this.successUrl && this.successUrl.length > 0) {\n this.router.navigate([`${this.successUrl}`]).then();\n return;\n }\n } else {\n this.paymentState = 'error';\n this.statusPay.emit(this.paymentResult);\n this.processErrorMessage(response.data);\n\n if (this.failureUrl && this.failureUrl.length > 0) {\n this.router.navigate([`${this.failureUrl}`]).then()\n return;\n }\n }\n }\n\n processErrorToken(response: any): void {\n this.disabled = true;\n this.disableSelect = true;\n\n const error: ErrorToken = response as ErrorToken;\n\n // obtenemos mensajes de error\n error.error.forEach((x) => {\n if (x.error.type === 'invalid_expiry_date') {\n this.errorMessage = 'Revisá la fecha de vencimiento.';\n } else {\n this.errorMessage = JSON.stringify(error);\n }\n });\n }\n\n // diferentes tipos de error nos devuelve decidir\n processErrorMessage(responseError: PaymentResponseInfo): void {\n this.disabled = true;\n this.disableSelect = true;\n\n if (responseError.error) {\n this.errorMessage = responseError.error.reason.description;\n\n if (responseError.error.reason.additional_description) {\n this.errorMessage = this.errorMessage + ' - ' + responseError.error.reason.additional_description;\n }\n\n if (this.errorMessage == '' || this.errorMessage == undefined) {\n this.errorMessage = JSON.stringify(responseError);\n }\n }\n else if (responseError.error_type) {\n switch (responseError.error_type) {\n case 'invalid_request_error':\n if (responseError.validation_errors.length > 0) {\n if (responseError.validation_errors[0].code === 'invalid_param') {\n switch (responseError.validation_errors[0].param) {\n case 'card_number':\n this.errorMessage = 'Tarjeta inválida';\n break;\n case 'bin':\n this.errorMessage = 'Tarjeta inválida';\n break;\n default:\n this.errorMessage = responseError.error.reason.description;\n if (this.errorMessage == '' || this.errorMessage == undefined) {\n this.errorMessage = JSON.stringify(responseError);\n }\n break;\n }\n }\n }\n break;\n case 'not_found_error':\n this.errorMessage = 'Datos no encontrados (404).';\n break;\n case 'authentication_error':\n this.errorMessage = 'Error (401).';\n break;\n case 'malformed_request_error':\n this.errorMessage = 'Error al enviar los datos (400).';\n break;\n case 'api_error':\n this.errorMessage = 'Error interno (409).';\n break;\n default:\n this.errorMessage = JSON.stringify(responseError);\n break;\n }\n }\n }\n\n compareDate(year: number, month: number, day: number): number {\n const d1: Date = new Date(year, month, day);\n const d2: Date = new Date();\n\n const same = d1.getTime() === d2.getTime();\n if (same) { return 0; }\n if (d1 > d2) { return 1; }\n if (d1 < d2) { return -1; }\n }\n\n // Input controls\n onYearChange() {\n if (Number.isNaN(+this.yearText)) {\n setTimeout(() => {\n this.yearText = '';\n });\n }\n }\n\n onYearBlur(element: any) {\n if (this.compareDate(\n Number(`20${this.yearText}`),\n Number(this.monthText),\n new Date().getDate()) < 0) {\n setTimeout(() => {\n this.yearText = '';\n this.invalidDate = true;\n element.target.focus();\n });\n } else {\n this.invalidDate = false;\n }\n\n }\n\n onMonthLostFocus() {\n if (+this.monthText > 0 && !isNaN(+this.monthText)) {\n if (this.monthText === '1') {\n this.monthText = '01';\n }\n }\n }\n\n onMonthChange() {\n if (+this.monthText >= 0 && +this.monthText < 13 && !isNaN(+this.monthText)) {\n switch (this.monthText) {\n case '2': {\n this.monthText = '02';\n break;\n }\n case '3': {\n this.monthText = '03';\n break;\n }\n case '4': {\n this.monthText = '04';\n break;\n }\n case '5': {\n this.monthText = '05';\n break;\n }\n case '6': {\n this.monthText = '06';\n break;\n }\n case '7': {\n this.monthText = '07';\n break;\n }\n case '8': {\n this.monthText = '08';\n break;\n }\n case '9': {\n this.monthText = '09';\n break;\n }\n }\n } else {\n setTimeout(() => {\n this.monthText = '';\n });\n }\n }\n\n onCodeChange() {\n if (Number.isNaN(+this.cvcText)) {\n setTimeout(() => {\n this.cvcText = '';\n });\n }\n\n if (this.cvcText.search(' ') > -1) {\n setTimeout(() => {\n this.cvcText = '';\n });\n }\n }\n\n onDniChange() {\n if (Number.isNaN(+this.dniText)) {\n setTimeout(() => {\n this.dniText = '';\n });\n }\n\n if (this.dniText.search(' ') > -1) {\n setTimeout(() => {\n this.dniText = '';\n });\n }\n }\n\n onPayerNameChange() {\n if (!isNaN(+this.payerNameText)) {\n setTimeout(() => {\n this.payerNameText = '';\n });\n }\n }\n\n onCardChange() {\n if (Number.isNaN(+this.cardText)) {\n setTimeout(() => {\n this.cardText = '';\n });\n }\n\n if (this.cardText.search(' ') > -1) {\n setTimeout(() => {\n this.cardText = '';\n });\n }\n\n if(this.cardText.length <8) {\n this.disableSelect = true;\n this.issuer = null;\n } else {\n this.disableSelect = false;\n }\n\n // setea tarjeta\n if (this.cardText.length === 8 && this.cardText !== '00000000'){\n this.setCreditType(this.cardText);\n }\n \n }\n\n setCreditType(bin: string): void {\n if (bin.length < 8) {\n this.issuer = null;\n return;\n }\n\n if (bin.length === 8) {\n this.issuer = null;\n\n // visa debito\n if (bin.substring(0, 4) === '4770' ||\n bin.substring(0, 6) === '442548' ||\n bin.substring(0, 6) === '406809' ||\n bin.substring(0, 6) === '408738' ||\n bin.substring(0, 6) === '411521' ||\n bin.substring(0, 6) === '411663' ||\n bin.substring(0, 6) === '426359' ||\n bin.substring(0, 6) === '429780' ||\n bin.substring(0, 6) === '438267' ||\n bin.substring(0, 6) === '461187' ||\n bin.substring(0, 6) === '500334' ||\n bin.substring(0, 6) === '509413' ||\n bin.substring(0, 6) === '512285' ||\n bin.substring(0, 6) === '512881' ||\n bin.substring(0, 6) === '518635' ||\n bin.substring(0, 6) === '538449' ||\n bin.substring(0, 6) === '550553' ||\n bin.substring(0, 6) === '566057' ||\n bin.substring(0, 6) === '567933' ||\n bin.substring(0, 6) === '572140' ||\n bin.substring(0, 6) === '584257' ||\n bin.substring(0, 6) === '598718' ||\n bin.substring(0, 6) === '605801' ||\n bin.substring(0, 6) === '606120' ||\n bin.substring(0, 6) === '631057' ||\n bin.substring(0, 6) === '676215' ||\n bin.substring(0, 6) === '713274' ||\n bin.substring(0, 6) === '713284' ||\n bin.substring(0, 6) === '717515' ||\n bin.substring(0, 6) === '748761' ||\n bin.substring(0, 6) === '753371' ||\n bin.substring(0, 6) === '753600' ||\n bin.substring(0, 6) === '912394' ||\n bin.substring(0, 6) === '916148' ||\n bin.substring(0, 6) === '916773' ||\n bin.substring(0, 6) === '923405' ||\n bin.substring(0, 6) === '930965' ||\n bin.substring(0, 6) === '934091' ||\n bin.substring(0, 6) === '935761' ||\n bin.substring(0, 6) === '943313' ||\n bin.substring(0, 6) === '945721' ||\n bin.substring(0, 6) === '948809' ||\n bin.substring(0, 6) === '960644' ||\n bin.substring(0, 6) === '969085' ||\n bin.substring(0, 6) === '970167' ||\n bin.substring(0, 6) === '978061' ||\n bin.substring(0, 8) === '40267919' ||\n bin.substring(0, 8) === '40327176' ||\n bin.substring(0, 8) === '40416004' ||\n bin.substring(0, 8) === '40421933' ||\n bin.substring(0, 8) === '40451556' ||\n bin.substring(0, 8) === '40541010' ||\n bin.substring(0, 8) === '40623835' ||\n bin.substring(0, 8) === '40733469' ||\n bin.substring(0, 8) === '40733586' ||\n bin.substring(0, 8) === '40872498' ||\n bin.substring(0, 8) === '45007789' ||\n bin.substring(0, 8) === '45024822' ||\n bin.substring(0, 8) === '45034751' ||\n bin.substring(0, 8) === '45046987' ||\n bin.substring(0, 8) === '45060549' ||\n bin.substring(0, 8) === '45062482' ||\n bin.substring(0, 8) === '45070071' ||\n bin.substring(0, 8) === '45084708' ||\n bin.substring(0, 8) === '45091433' ||\n bin.substring(0, 8) === '45100902' ||\n bin.substring(0, 8) === '45103869' ||\n bin.substring(0, 8) === '45131047' ||\n bin.substring(0, 8) === '45168884' ||\n bin.substring(0, 8) === '45174306' ||\n bin.substring(0, 8) === '45184611' ||\n bin.substring(0, 8) === '45191921' ||\n bin.substring(0, 8) === '45201881' ||\n bin.substring(0, 8) === '45206401' ||\n bin.substring(0, 8) === '45245294' ||\n bin.substring(0, 8) === '45314944' ||\n bin.substring(0, 8) === '45317847' ||\n bin.substring(0, 8) === '45357409' ||\n bin.substring(0, 8) === '45374587' ||\n bin.substring(0, 8) === '45394705' ||\n bin.substring(0, 8) === '45456584' ||\n bin.substring(0, 8) === '45541924' ||\n bin.substring(0, 8) === '45545795' ||\n bin.substring(0, 8) === '45567746' ||\n bin.substring(0, 8) === '45583759' ||\n bin.substring(0, 8) === '45648838' ||\n bin.substring(0, 8) === '45672506' ||\n bin.substring(0, 8) === '45678421' ||\n bin.substring(0, 8) === '45710756' ||\n bin.substring(0, 8) === '45716006' ||\n bin.substring(0, 8) === '45725029' ||\n bin.substring(0, 8) === '45732113' ||\n bin.substring(0, 8) === '45732698' ||\n bin.substring(0, 8) === '45793917' ||\n bin.substring(0, 8) === '45841185' ||\n bin.substring(0, 8) === '45862021' ||\n bin.substring(0, 8) === '45915336' ||\n bin.substring(0, 8) === '45971496') {\n this.issuer = 31;\n }\n // mastercard\n else if (bin.substring(0, 2) === '51' ||\n bin.substring(0, 2) === '52' ||\n bin.substring(0, 2) === '53' ||\n bin.substring(0, 2) === '54' ||\n bin.substring(0, 2) === '55') {\n this.issuer = 104;\n }\n // tarjeta naranja\n else if (bin.substring(0, 6) === '589562') {\n this.issuer = 24;\n }\n // visa credito\n else if (bin.substring(0, 1) === '4') {\n this.issuer = 1;\n }\n\n this.selectedCreditCard();\n }\n }\n\n onPaste(): boolean {\n return false;\n }\n\n resetForm() {\n this.disabled = false;\n this.disableSelect = false;\n this.totalAmount\n this.totalFinancedAmount = undefined;\n this.currentTEA = undefined;\n this.currentCFT = undefined;\n // creditCards: CreditCard[];\n this.creditCards = undefined;\n this.selectCreditCardPlan = null;\n // creditCardPlans: CreditCardPlans[];\n this.creditCardPlans = undefined;\n this.paymentResult = { success: false, paymentId: '', integrator: 'DECIDIR' };\n \n // Form bind\n this.monthText = undefined;\n this.yearText = undefined;\n this.cvcText = undefined;\n this.dniText = undefined;\n this.payerNameText = undefined;\n this.cardText = undefined;\n this.submitPressed = false;\n this.invalidDate = false;\n \n this.decidir = undefined;\n this.addScript = true;\n \n this.paymentState = 'unsubmitted';\n this.payerName = undefined;\n this.issuer = null;\n this.payment = undefined;\n this.paymentSuccessInfo = undefined;\n this.errorMessage = undefined;\n\n this.initDecidir();\n }\n\n}\n","import { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { SpsDecidirComponent } from './components/sps-decidir.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n HttpClientModule,\n RouterModule\n ],\n declarations: [\n SpsDecidirComponent\n ],\n exports: [\n SpsDecidirComponent\n ]\n})\nexport class SpsDecidirModule { }\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { InitPayment, ResponseApi, Payment } from '../models/go-cuotas.models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class GoCuotasApiService {\r\n private authHeaders: HttpHeaders | undefined;\r\n\r\n constructor(\r\n private httpClient: HttpClient\r\n ) { }\r\n \r\n public normalizeUrl(url: string): string {\r\n if (url.length > 0 && url.charAt(url.length - 1) == '/') {\r\n url = url.substr(0, url.length - 1);\r\n }\r\n\r\n return url;\r\n }\r\n\r\n public initPayment(access_token: string, url: string, initPayment: InitPayment): Observable<ResponseApi> {\r\n this._setAuthHeaders(access_token); \r\n\r\n const body = {\r\n cardholder: initPayment.cardholder,\r\n creditCardHash: initPayment.creditCardHash,\r\n amount: initPayment.amount,\r\n installments: initPayment.installments,\r\n documentNumber: initPayment.documentNumber,\r\n areaCode: initPayment.areaCode,\r\n phoneNumber: initPayment.phoneNumber,\r\n email: initPayment.email,\r\n idVen: initPayment.idVen,\r\n storeId: initPayment.storeId,\r\n data: initPayment.data\r\n };\r\n\r\n return this.httpClient.post<ResponseApi>(this.normalizeUrl(url) + '/init-payment', body, { headers: this.authHeaders });\r\n }\r\n\r\n public getOrders(access_token: string, url: string): Observable<ResponseApi> {\r\n this._setAuthHeaders(access_token);\r\n return this.httpClient.get<ResponseApi>(this.normalizeUrl(url) + '/orders', { headers: this.authHeaders });\r\n }\r\n\r\n public payment(access_token: string, url: string, payment: Payment): Observable<ResponseApi> {\r\n this._setAuthHeaders(access_token);\r\n const body = {\r\n id: payment.id,\r\n cardholder: payment.cardholder,\r\n sale_token: payment.sale_token,\r\n code: payment.code,\r\n creditCardHash: payment.creditCardHash,\r\n cardMonthExpiration: payment.cardMonthExpiration,\r\n cardYearExpiration: payment.cardYearExpiration,\r\n cardSecurityCode: payment.cardSecurityCode,\r\n idVen: payment.idVen,\r\n storeId: payment.storeId,\r\n data: payment.data\r\n }\r\n\r\n return this.httpClient.post<ResponseApi>(this.normalizeUrl(url) + '/payment', body, { headers: this.authHeaders });\r\n }\r\n\r\n private _setAuthHeaders(access_token: string) {\r\n const userToken = 'Bearer ' + access_token;\r\n this.authHeaders = new HttpHeaders({ 'Content-Type': 'application/json', 'Authorization': userToken });\r\n }\r\n}","import { Component, OnInit, EventEmitter, Output } from '@angular/core';\n\n@Component({\n selector: 'lib-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss']\n})\nexport class ModalComponent implements OnInit {\n\n modalVisible: boolean = false;\n verificationCode: string = '';\n\n @Output() codeVerified = new EventEmitter<string>();\n\n constructor() { }\n\n ngOnInit() {\n this.verificationCode = ''; \n }\n\n openModal() {\n this.verificationCode = '';\n this.modalVisible = true;\n document.body.style.overflow = '';\n }\n\n closeModal() {\n this.modalVisible = false;\n document.body.style.overflow = 'hidden';\n }\n\n onSubmitCode() {\n if (this.verificationCode) {\n this.codeVerified.emit(this.verificationCode); // Emitir el código ingresado\n this.modalVisible = false; \n } else {\n alert('Por favor ingrese el código.');\n }\n }\n\n onVerificationCodeChange() {\n if (isNaN(+this.verificationCode)) {\n setTimeout(() => {\n this.verificationCode = '';\n });\n }\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { PaymentResult, ResponseApi, InitPayment, Payment } from '../models/go-cuotas.models';\nimport { GoCuotasApiService } from '../services/go-cuotas.api.service';\nimport { ModalComponent } from './modal/modal.component';\n\n@Component({\n selector: 'lib-go-cuotas',\n templateUrl: './go-cuotas.component.html',\n styleUrls: ['./go-cuotas.component.scss']\n})\nexport class GoCuotasComponent implements OnInit {\n\n @Input() accessToken!: string;\n @Input() gcUrlApi!: string;\n @Input() vkUrlApi!: string;\n @Input() paymentAmount!: string;\n @Input() logoGC!: string;\n @Input() idVen!: number;\n @Input() storeId!: string;\n @Input() data!: string;\n @Output() statusPay = new EventEmitter<PaymentResult>();\n\n defaultName!: string;\n mailText!: string;\n codAreaText!: string;\n telText!: string;\n cardText!: string;\n yearText!: string;\n monthText!: string;\n dniText!: string;\n cvcText!: string;\n installments!: number;\n defaultDocType!: string;\n currentInstallments!: any[];\n totalAmount!: number;\n OinitPayment!: InitPayment;\n Opayment!: Payment;\n sale_token: string = '';\n error_message: string = '';\n paymentCompleted: boolean = false; \n loadingMessage: string = 'Iniciando el pago...';\n paymentStatus = 'unsubmitted';\n\n disabled = false;\n disabledSelect = false;\n submitted = false;\n isLoading: boolean = false;\n hasError: boolean = false;\n\n // accessToken: string = '2569793-51e1725c-9334-4ea2-ada0-b0c87187443c';\n // url: string = 'https://sandbox.gocuotas.com/api/full_sale/v1/';\n\n paymentResult: PaymentResult = { success: false, paymentId: '', integrator: 'GOCUOTAS' };\n\n @ViewChild('f', { static: false }) checkOutForm!: NgForm;\n @ViewChild(ModalComponent, {static: false}) modal!: ModalComponent;\n\n constructor(\n private goCuotasApiService: GoCuotasApiService\n ) { }\n\n ngOnInit() {\n this.defaultDocType = '';\n this.installments = 0;\n this.currentInstallments = [\n { value: 2, label: '2 Cuotas' },\n { value: 3, label: '3 Cuotas' }\n ]; // Opciones para \"Cantidad de cuotas\"\n\n this.totalAmount = Number(this.paymentAmount);\n }\n\n onSubmit(event: Event) {\n event.preventDefault();\n this.submitted = true;\n \n if (!this.checkOutForm.valid) { return; }\n\n this.isLoading = true;\n this.paymentCompleted = false;\n this.loadingMessage = 'Iniciando el pago...';\n this.paymentResult = { success: false, paymentId: '', integrator: 'GOCUOTAS' };\n\n \n this.OinitPayment = {\n amount: Number(this.paymentAmount) * 100,\n areaCode: this.codAreaText,\n installments: this.installments, \n documentNumber: this.dniText,\n phoneNumber: this.telText,\n email: this.mailText.toLowerCase(),\n cardholder: this.defaultName,\n creditCardHash: this.cardText,\n idVen: this.idVen,\n storeId: this.storeId,\n data: this.data\n }; \n\n this.initPayment();\n }\n\n initPayment() {\n this.isLoading = true;\n this.loadingMessage = 'Enviando código...';\n\n this.goCuotasApiService.initPayment(this.accessToken, this.vkUrlApi, this.OinitPayment)\n .subscribe({\n next: (v) => this.initPaymentResponseHandler(v),\n error: (v) => this.ResponseHandlerError(v)\n })\n }\n\n private initPaymentResponseHandler(response: ResponseApi) {\n if(!response.success) {\n this.error_message = response.errorsMessages[0];\n this.statusPay.emit(this.paymentResult);\n this.disabled = true;\n this.disabledSelect = true;\n\n return;\n }\n\n this.Opayment = {\n id: response.data.id,\n cardholder: this.defaultName,\n sale_token: response.data.response.sale_token,\n creditCardHash: this.cardText,\n cardMonthExpiration: Number(this.monthText),\n cardYearExpiration: Number(this.yearText),\n cardSecurityCode: Number(this.cvcText),\n idVen: this.idVen,\n storeId: this.storeId,\n data: this.data\n };\n\n this.isLoading = false;\n this.disabled = true;\n this.disabledSelect = true;\n this.modal.openModal();\n this.paymentStatus = 'sentCode';\n }\n\n onCodeSent(code: string) {\n this.isLoading = true;\n this.loadingMessage = 'Procesando pago...';\n \n this.Opayment.code = Number(code);\n \n if(code !== null){\n this.finishPayment();\n }\n }\n\n public finishPayment() {\n this.paymentStatus = 'processing';\n\n this.goCuotasApiService.payment(this.accessToken, this.vkUrlApi, this.Opayment)\n .subscribe({\n next: (v) => this.FinishPaymentResponseHandler(v), \n error: (v) => this.ResponseHandlerError(v)\n });\n }\n\n private ResponseHandlerError(response: any) {\n this.paymentStatus = 'error';\n this.disabled = true;\n this.disabledSelect = true;\n this.statusPay.emit(this.paymentResult);\n\n if(!response.ok && response.error === null && response.status === 500){\n this.error_message = \"Error en el servidor. Vuelva a intentar más tarde.\";\n this.isLoading = false;\n this.hasError = true; \n\n return;\n }\n\n this.error_message = response.error.errorsMessages[0];\n this.isLoading = false;\n this.hasError = true; \n }\n\n private FinishPaymentResponseHandler(response: ResponseApi){\n this.paymentStatus = 'success';\n\n if(!response.success) {\n this.error_message = response.errorsMessages[0];\n this.statusPay.emit(this.paymentResult);\n\n return;\n } \n\n this.Opayment.paymentId = response.data.paymentId\n this.paymentResult = { success: true, paymentId: String(this.Opayment.paymentId) , integrator: 'GOGUOTAS' };\n this.statusPay.emit(this.paymentResult);\n this.loadingMessage = '¡Pago procesado correctamente!';\n this.paymentCompleted = true; \n }\n\n restartForm() {\n this.hasError = false;\n this.submitted = false;\n this.disabled = false;\n this.disabledSelect = false;\n this.paymentStatus = 'unsubmitted';\n this.checkOutForm.reset(); \n this.installments = 0;\n this.defaultDocType = '';\n }\n\n // Input controls\n onYearChange() {\n if (isNaN(+this.yearText)) { \n setTimeout(() => {\n this.yearText = '';\n });\n }\n }\n\n onMonthLostFocus() {\n if (+this.monthText > 0 && !isNaN(+this.monthText)) {\n if (this.monthText == '1') {\n this.monthText = '01';\n }\n }\n }\n\n onMonthChange() {\n if (+this.monthText >= 0 && +this.monthText < 13 && !isNaN(+this.monthText)) {\n switch (this.monthText) {\n case '2': {\n this.monthText = '02';\n break;\n }\n case '3': {\n this.monthText = '03';\n break;\n }\n case '4': {\n this.monthText = '04';\n break;\n }\n case '5': {\n this.monthText = '05';\n break;\n }\n case '6': {\n this.monthText = '06';\n break;\n }\n case '7': {\n this.monthText = '07';\n break;\n }\n case '8': {\n this.monthText = '08';\n break;\n }\n case '9': {\n this.monthText = '09';\n break;\n }\n }\n } else {\n setTimeout(() => {\n this.monthText = '';\n });\n }\n }\n\n onCodeChange() {\n if (isNaN(+this.cvcText)) {\n setTimeout(() => {\n this.cvcText = '';\n });\n }\n }\n\n onDniChange() {\n if (isNaN(+this.dniText)) {\n setTimeout(() => {\n this.dniText = '';\n });\n }\n }\n\n onMailChange() {\n if (!isNaN(+this.mailText)) {\n setTimeout(() => {\n this.mailText = '';\n });\n }\n }\n\n onCodAreaChange() {\n if (isNaN(+this.codAreaText)) {\n setTimeout(() => {\n this.codAreaText = '';\n });\n }\n }\n\n onTelChange() {\n if (isNaN(+this.telText)) {\n setTimeout(() => {\n this.telText = '';\n });\n }\n }\n\n onPayerNameChange() {\n if (!isNaN(+this.defaultName)) {\n setTimeout(() => {\n this.defaultName = '';\n });\n }\n }\n\n onCardChange() {\n if (isNaN(+this.cardText)) {\n setTimeout(() => {\n this.cardText = '';\n });\n }\n }\n\n onInstallmentsChange() {\n //console.log('cuotas seleccionadas' ,this.installments)\n }\n\n onPaste(): boolean {\n return false;\n }\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GoCuotasComponent } from './components/go-cuotas.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { GoCuotasApiService } from './services/go-cuotas.api.service';\nimport { ModalComponent } from './components/modal/modal.component';\n\nconst COMPONENTS = [\n GoCuotasComponent,\n ModalComponent\n]\n\n@NgModule({\n declarations: [\n COMPONENTS \n ],\n exports: [\n COMPONENTS\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule\n ],\n providers: [\n GoCuotasApiService\n ]\n})\nexport class GoCuotasModule { }\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { CreatePaymentRequest, PaymentResponse } from '../models/modo.models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ModoApiService {\n private authHeaders: HttpHeaders | undefined;\n\n constructor(private http: HttpClient) { }\n\n createPayment(accessToken: string, paymentRequest: CreatePaymentRequest,apiUrl: string): Observable<PaymentResponse> {\n this._setAuthHeaders(accessToken); \n return this.http.post<PaymentResponse>(`${apiUrl}create-payment`, paymentRequest, { headers: this.authHeaders });\n }\n\n private _setAuthHeaders(accessToken: string) {\n const userToken = 'Bearer ' + accessToken;\n this.authHeaders = new HttpHeaders({ 'Content-Type': 'application/json', 'Authorization': userToken });\n }\n}","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ModoApiService } from '../../services/modo-api.service';\nimport { CreatePaymentRequest } from '../../models/modo.models';\n\n// Declara la variable global del SDK\ndeclare var ModoSDK: any;\n\n@Component({\n selector: 'vk-modo-payment',\n templateUrl: './modo.component.html',\n styleUrls: ['./modo.component.scss']\n})\nexport class ModoComponent implements OnInit {\n\n @Input() accessToken!: string;\n @Input() storeId: string;\n @Input() idVen: number;\n @Input() data: string;\n @Input() amount: number;\n @Input() orderId: string;\n @Input() vkUrlApi: string;\n @Input() callbackUrl: string;\n @Input() callbackUrlSuccess: string;\n @Output() statusPay = new EventEmitter<{ success: boolean; paymentId: string }>();\n\n isLoading = false;\n\n constructor(private modoApi: ModoApiService) { }\n\n ngOnInit(): void {\n this.loadModoScript();\n }\n\n async startModoPayment(): Promise<void> {\n this.isLoading = true;\n\n try {\n const initialData = await this.createModoPayment();\n this.isLoading = false;\n\n const modalObject = {\n version: '2',\n qrString: initialData.qrString,\n checkoutId: initialData.checkoutId,\n deeplink: {\n url: initialData.deeplink,\n callbackURL: this.callbackUrl,\n callbackURLSuccess: this.callbackUrlSuccess\n },\n\n callbackURL: this.callbackUrl,\n\n refreshData: () => this.createModoPayment(),\n\n onSuccess: () => {\n this.statusPay.emit({ success: true, paymentId: initialData.checkoutId });\n },\n onFailure: () => {\n this.statusPay.emit({ success: false, paymentId: initialData.checkoutId });\n },\n onCancel: () => {\n console.log('Pago cancelado por el usuario en el celular.');\n },\n onClose: () => {\n console.log('Modal de MODO cerrado.');\n },\n };\n\n // 3. Inicia el SDK de MODO\n ModoSDK.modoInitPayment(modalObject);\n\n } catch (error) {\n this.isLoading = false;\n this.statusPay.emit({ success: false, paymentId: '' });\n console.error(\"Error al iniciar el pago con MODO\", error);\n }\n }\n\n /**\n * Esta función se encarga de llamar a tu backend.\n * Se usa tanto para la carga inicial como para el refresco del SDK.\n */\n private async createModoPayment(): Promise<{ qrString: string; checkoutId: string; deeplink: string }> {\n const paymentRequest: CreatePaymentRequest = {\n amount: this.amount,\n orderId: this.orderId,\n storeId: this.storeId,\n idVen: this.idVen,\n data: this.data\n };\n\n const response = await this.modoApi.createPayment(this.accessToken, paymentRequest, this.vkUrlApi).toPromise();\n\n if (response.success && response.data) {\n return {\n qrString: response.data.qrString,\n checkoutId: response.data.internalPaymentId,\n deeplink: response.data.deeplink\n };\n } else {\n throw new Error('La respuesta de la API no fue exitosa.');\n }\n }\n\n private loadModoScript(): void {\n const scriptUrl = 'https://ecommerce-modal.modo.com.ar/bundle.js';\n if (!document.querySelector(`script[src=\"${scriptUrl}\"]`)) {\n const script = document.createElement('script');\n script.src = scriptUrl;\n document.body.appendChild(script);\n }\n }\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { ModoComponent } from './components/modo/modo.component';\n\n@NgModule({\n declarations: [\n ModoComponent\n ],\n imports: [\n CommonModule,\n HttpClientModule\n ],\n exports: [\n ModoComponent\n ]\n})\nexport class ModoModule { }","import { NgModule } from '@angular/core';\n\nimport { MercadopagoModule } from './mercadopago/mercadopago.module';\nimport { PaypalModule } from './paypal/paypal.module';\nimport { SpsDecidirModule } from './sps-decidir/sps-decidir.module';\nimport { GoCuotasModule } from './go-cuotas/go-cuotas.module';\nimport { ModoModule } from './modo/modo.module';\n\nconst LIB_MODULES = [\n MercadopagoModule,\n SpsDecidirModule,\n PaypalModule,\n GoCuotasModule,\n ModoModule\n];\n\n@NgModule({\n imports: LIB_MODULES,\n exports: LIB_MODULES\n})\nexport class VkPaymentsModule { }\n"]}
1
+ {"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://vk-payments/lib/mercadopago/services/mercadopago.api.service.ts","ng://vk-payments/lib/mercadopago/components/mercadopago.component.ts","ng://vk-payments/lib/mercadopago/components/promotion-bank.component.ts","ng://vk-payments/lib/mercadopago/mercadopago.module.ts","ng://vk-payments/lib/paypal/components/paypal-new.component.ts","ng://vk-payments/lib/paypal/paypal.module.ts","ng://vk-payments/lib/sps-decidir/services/sps-decidir.api.service.ts","ng://vk-payments/lib/sps-decidir/components/sps-decidir.component.ts","ng://vk-payments/lib/sps-decidir/sps-decidir.module.ts","ng://vk-payments/lib/go-cuotas/services/go-cuotas.api.service.ts","ng://vk-payments/lib/go-cuotas/components/modal/modal.component.ts","ng://vk-payments/lib/go-cuotas/components/go-cuotas.component.ts","ng://vk-payments/lib/go-cuotas/go-cuotas.module.ts","ng://vk-payments/lib/modo/services/modo-api.service.ts","ng://vk-payments/lib/modo/components/modo/modo.component.ts","ng://vk-payments/lib/modo/modo.module.ts","ng://vk-payments/lib/vk-payments.module.ts"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","__values","o","m","i","MercadopagoApiService","httpClient","prototype","makePayment","cardPayment","access_token","url","_setAuthHeaders","post","normalizeUrl","headers","authHeaders","getMercadoPagoPromotions","get","charAt","substr","userToken","HttpHeaders","Content-Type","Authorization","Injectable","args","providedIn","HttpClient","MercadoPagoComponent","router","mercadopagoApiService","paymentState","tokenId","disabled","addScript","requiredIssuer","submitted","paymentResult","success","paymentId","integrator","statusPay","EventEmitter","ngOnInit","initMercadoPago","ngOnChanges","changes","paymentAmount","isFirstChange","checkOutForm","reset","_this","addMercadopagoScript","Mercadopago","setPublishableKey","publishableKey","getIdentificationTypes","totalAmount","defaultName","payerName","defaultDocType","scripttagElement","document","createElement","src","onload","appendChild","createToken","sendForm","status","response","emit","errorMessage","id","hashedCard","hashText","cardText","transactionAmount","description","installments","Number","issuerId","issuer","paymentMethodId","currentPaymentMethod","codCP","idVen","docNumber","additionalData","data","storeId","hash","mercadoPagoPayment","text","iterations","hashedtext","sha256","paymentResponseHandler","statusDetails","ticket","transactionId","logger","successUrl","navigate","failureUrl","checkPaymentMethod","cardNumber","currentInstallments","currentIssuers","toString","currentBin","substring","self_1","getPaymentMethod","bin","respCode","respBody","setCurrentMethod","res","additionalInfo","additional_info_needed","undefined","find","x","self_2","getIssuers","setIssuers","checkInstallments","requestObject","self","amount","issuer_id","getInstallments","setInstallments","filter","card","payment_method_id","payer_costs","onDuesSelection","_c","tslib_1.__values","_d","ins","totalFinancedAmount","total_amount","_e","e_2","labels","_f","includes","recommendedLabel","replace","split","currentTEA","currentCFT","onSubmit","form","valid","securityCode","cvcText","cardExpirationMonth","monthText","cardExpirationYear","yearText","cardholderName","docType","dniText","debugLog","console","log","clearSession","onYearChange","isNaN","setTimeout","onMonthLostFocus","onMonthChange","onCodeChange","onDniChange","onPayerNameChange","onCardChange","onPaste","message","JSON","stringify","accessToken","vkUrlApi","subscribe","error","resetForm","Component","selector","template","Router","Input","Output","ViewChild","static","PromotionBankComponent","mercadoPagoService","cardPromotions","COMPONENTS","MercadopagoModule","NgModule","declarations","exports","imports","CommonModule","FormsModule","ReactiveFormsModule","RouterModule","PayPalNewComponent","showError","loading","linkToPay","linkExecutePay","ngAfterViewChecked","addPaypalScript","paypalConfig","style","color","shape","height","commit","createOrder","actions","order","create","purchase_units","getElementById","reference_id","custom_id","application_context","shipping_preference","onApprove","capture","details","userid","fetch","method","content-type","window","location","href","onError","reload","onCancel","paypal","Buttons","render","clientId","currency","PaypalModule","HttpClientModule","SpsDecidirApiService","payment","getDecidirConfigByBin","getCreditCards","domainId","getPlansByCreditCardId","creditCardId","SpsDecidirComponent","spsDecidirApiService","language","disableSelect","selectCreditCardPlan","submitPressed","invalidDate","initDecidir","addDecidirScript","initializeSpsDecidir","creditCards","creditCardPlans","decidir","Decidir","spsUrlApi","useCybersource","defaultPublishableKey","selectedCreditCard","selectedCreditCardPlan","tna","cft","event","preventDefault","config","superviellePublishableKey","querySelector","processErrorToken","paymentResponse","token","documentNumber","cardholder","identification","number","paymentType","creditCardPlanId","payerNameText","subPayments","creditCardHash","lastFourDigits","slice","paymentSuccessInfo","payment_id","processErrorMessage","forEach","type","responseError","reason","additional_description","error_type","validation_errors","code","param","compareDate","year","month","day","d1","Date","d2","getTime","onYearBlur","element","getDate","target","focus","search","setCreditType","SpsDecidirModule","GoCuotasApiService","initPayment","areaCode","phoneNumber","email","getOrders","sale_token","cardMonthExpiration","cardYearExpiration","cardSecurityCode","ModalComponent","modalVisible","verificationCode","codeVerified","openModal","overflow","closeModal","onSubmitCode","alert","onVerificationCodeChange","GoCuotasComponent","goCuotasApiService","error_message","paymentCompleted","loadingMessage","paymentStatus","disabledSelect","isLoading","hasError","OinitPayment","codAreaText","telText","mailText","toLowerCase","initPaymentResponseHandler","ResponseHandlerError","errorsMessages","Opayment","modal","onCodeSent","finishPayment","FinishPaymentResponseHandler","ok","String","restartForm","onMailChange","onCodAreaChange","onTelChange","onInstallmentsChange","GoCuotasModule","providers","ModoApiService","http","createPayment","paymentRequest","apiUrl","ModoComponent","modoApi","route","executionEnv","detectEnvironment","loadModoScript","params","snapshot","guid","platform","devicePlatform","warn","userAgent","navigator","vendor","opera","test","startModoPayment","createModoPayment","initialData","_a","openOnNativeNavigator","deeplink","open","initModoSdkModal","error_1","webkit","messageHandlers","externalURL","postMessage","modalObject","version","qrString","checkoutId","callbackURL","callbackUrl","callbackURLSuccess","callbackUrlSuccess","refreshData","onSuccess","onFailure","onClose","ModoSDK","modoInitPayment","orderId","toPromise","internalPaymentId","Error","scriptUrl","script","ActivatedRoute","ModoModule","LIB_MODULES","VkPaymentsModule"],"mappings":"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AAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,WAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG,EAAIH,UAAU,EAAG,IACO,aAAxBG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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { CardPayment } from '../models/mercadopago.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MercadopagoApiService {\r\n private authHeaders: HttpHeaders;\r\n\r\n constructor(private httpClient: HttpClient) { }\r\n\r\n makePayment(cardPayment: CardPayment, access_token: string, url: string): Observable<any> {\r\n this._setAuthHeaders(access_token);\r\n return this.httpClient.post(this.normalizeUrl(url) + '/Payment', cardPayment, { headers: this.authHeaders });\r\n }\r\n\r\n getMercadoPagoPromotions(url: string): Observable<any> {\r\n return this.httpClient.get(url);\r\n }\r\n\r\n normalizeUrl(url: string): string {\r\n if (url.length > 0 && url.charAt(url.length - 1) == '/') {\r\n url = url.substr(0, url.length - 1);\r\n }\r\n return url;\r\n }\r\n\r\n private _setAuthHeaders(access_token: string) {\r\n const userToken = 'Bearer ' + access_token;\r\n this.authHeaders = new HttpHeaders({ 'Content-Type': 'application/json', 'Authorization': userToken });\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { Router } from '@angular/router';\n\nimport { CardPayment, CreateTokenResponse, PaymentResult, ResponseInstallment } from '../models/mercadopago.model';\nimport { MercadopagoApiService } from '../services/mercadopago.api.service';\nimport sha256 from 'sha256';\n\n\ndeclare var Mercadopago: any;\n\n@Component({\n selector: 'mp-form-pay',\n templateUrl: './mercadopago.component.html',\n styleUrls: ['./mercadopago.component.scss']\n})\nexport class MercadoPagoComponent implements OnInit, OnChanges {\n\n totalAmount: number;\n totalFinancedAmount: number;\n currentBin: string;\n recommendedLabel: string;\n currentTEA: string;\n currentCFT: string;\n ticket: string;\n defaultName: string;\n defaultDocType: string;\n issuerId: string;\n currentPaymentMethod: any;\n currentIssuers: any[];\n currentInstallments: any[];\n cardPayment: CardPayment;\n\n // input bind\n yearText: string;\n monthText: string;\n dniText: string;\n cvcText: string;\n cardText: string;\n errorMessage: string;\n\n paymentState = 'unsubmitted';\n tokenId = '';\n disabled = false;\n addScript = false;\n requiredIssuer = false;\n submitted = false;\n\n paymentResult: PaymentResult = { success: false, paymentId: '', integrator: 'MP' };\n\n @Input() paymentAmount: number;\n @Input() payerName: string;\n @Input() payerEmail: string;\n @Input() accessToken: string;\n @Input() vkUrlApi: string;\n @Input() description: string;\n @Input() publishableKey: string;\n @Input() successUrl: string;\n @Input() failureUrl: string;\n @Input() imgCreditCards: string;\n @Input() imgMercadoPago: string;\n @Input() iconExpandMore: string;\n @Input() debugLog: boolean;\n @Input() storeId: string;\n @Input() idVen: number;\n @Input() data: string;\n @Output() statusPay = new EventEmitter<PaymentResult>();\n\n @ViewChild('f', { static: false }) checkOutForm: NgForm;\n\n constructor(private router: Router, private mercadopagoApiService: MercadopagoApiService) { }\n\n ngOnInit() {\n this.initMercadoPago();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!changes.paymentAmount.isFirstChange()) {\n this.disabled = false;\n this.checkOutForm.reset();\n }\n }\n\n private initMercadoPago() {\n this.addMercadopagoScript()\n .then(() => {\n Mercadopago.setPublishableKey(this.publishableKey);\n Mercadopago.getIdentificationTypes();\n\n this.totalAmount = this.paymentAmount;\n this.defaultName = this.payerName;\n this.defaultDocType = 'DNI';\n });\n }\n\n private addMercadopagoScript() {\n this.addScript = true;\n return new Promise((resolve, reject) => {\n const scripttagElement = document.createElement('script');\n scripttagElement.src = 'https://secure.mlstatic.com/sdk/javascript/v1/mercadopago.js?2345';\n scripttagElement.onload = resolve;\n document.body.appendChild(scripttagElement);\n });\n }\n\n private createToken(sendForm: any) {\n this.paymentState = 'processing';\n Mercadopago.createToken(sendForm, (status, response: any) => {\n \n if (status !== 200 && status !== 201) {\n this.paymentState = 'error';\n this.statusPay.emit(this.paymentResult);\n this.errorMessage = 'Revisa los datos del formulario.';\n // const causes: Cause[] = (response as ErrorTokenResponse).cause;\n // if (causes !== null && causes.length > 0) {\n // causes.forEach((item) => {\n // this.errorMessage += this.getErrorMessage(item.code) + '\\n';\n // });\n // }\n } else {\n this.tokenId = (response as CreateTokenResponse).id;\n this.makePayment();\n }\n });\n }\n\n private makePayment() {\n const hashedCard = this.hashText(this.cardText,100000);\n this.cardPayment = {\n tokenId: this.tokenId,\n transactionAmount: this.totalAmount,\n description: this.description,\n installments: Number(this.checkOutForm.value.installments),\n issuerId: this.checkOutForm.value.issuer,\n paymentMethodId: this.currentPaymentMethod[0].id,\n codCP: this.idVen,\n docNumber: this.checkOutForm.value.docNumber,\n additionalData: this.data,\n storeId: this.storeId,\n hash: hashedCard\n };\n this.mercadoPagoPayment();\n }\n\n private hashText(text: string, iterations:number): string{\n let hashedtext = text;\n for (let i = 0; i < iterations; i++) {\n hashedtext = sha256(hashedtext);\n }\n return hashedtext\n }\n\n private paymentResponseHandler(response: any) {\n if (response.success) {\n this.paymentState = response.data.statusDetails;\n this.ticket = response.data.transactionId;\n this.paymentResult = { success: true, paymentId: this.ticket, integrator: 'MP' };\n this.statusPay.emit(this.paymentResult);\n this.disabled = true;\n\n this.logger('paymentResponseHandler:', response);\n if (this.successUrl && this.successUrl.length > 0) {\n this.router.navigate([`${this.successUrl}`]);\n }\n } else {\n this.paymentState = 'apiError';\n this.statusPay.emit(this.paymentResult);\n if (this.successUrl && this.failureUrl.length > 0) {\n this.router.navigate([`${this.failureUrl}`]).then();\n }\n }\n }\n\n checkPaymentMethod() {\n if (this.checkOutForm.value.cardNumber != null) {\n this.currentInstallments = null;\n this.currentIssuers = null;\n if (this.checkOutForm.value.cardNumber.toString().length >= 6) {\n this.currentBin = this.checkOutForm.value.cardNumber.toString().substring(0, 6);\n const self = this;\n Mercadopago.getPaymentMethod(\n {\n 'bin': this.checkOutForm.value.cardNumber.toString()\n }, function (respCode, respBody) {\n if (respCode === 200) {\n self.setCurrentMethod(respBody);\n }\n });\n }\n if (this.checkOutForm.value.cardNumber.toString().length < 6) {\n this.requiredIssuer = false;\n }\n }\n }\n\n setCurrentMethod(res: any) {\n if (res) {\n this.logger('setCurrentMethod:', res);\n\n const additionalInfo: String[] = res[0].additional_info_needed;\n const issuerIdKey = 'issuer_id';\n\n if (additionalInfo.find(x => x == issuerIdKey) == undefined) {\n this.requiredIssuer = false;\n }\n else {\n this.requiredIssuer = true;\n }\n \n this.logger('requiredIssuer:', this.requiredIssuer);\n\n this.currentPaymentMethod = res;\n const self = this;\n Mercadopago.getIssuers(res[0].id, function (respCode, respBody) {\n if (respCode === 200) {\n self.setIssuers(respBody);\n }\n });\n\n self.checkInstallments(this.requiredIssuer);\n }\n }\n\n checkInstallments(requiredIssuer: boolean) {\n if (this.currentBin == undefined || this.currentBin.length < 6) {\n return;\n }\n const self = this;\n self.currentInstallments = null;\n\n let requestObject:any\n \n if (requiredIssuer) {\n requestObject = {\n 'bin': this.currentBin,\n 'amount': this.totalAmount,\n 'issuer_id': this.issuerId\n } \n }\n else {\n requestObject = {\n 'bin': this.currentBin,\n 'amount': this.totalAmount\n } \n }\n\n Mercadopago.getInstallments(requestObject, function (respCode, respBody) {\n if (respCode === 200) {\n self.setInstallments(respBody);\n } else {\n self.currentInstallments = null;\n }\n });\n }\n\n setInstallments(res: ResponseInstallment[]) {\n //this.logger('setInstallments:', res);\n\n if (res.length > 0) {\n if (this.issuerId != undefined && res.length > 1 && this.currentPaymentMethod.length > 0) {\n const result = res.filter(card => card.issuer.id === this.issuerId && card.payment_method_id === this.currentPaymentMethod[0].id);\n this.currentInstallments = result[0].payer_costs;\n this.issuerId = result[0].issuer.id;\n }\n else {\n this.currentInstallments = res[0].payer_costs;\n this.issuerId = res[0].issuer.id;\n }\n }\n }\n\n setIssuers(res: any) {\n //this.logger('setIssuers res', res);\n this.currentIssuers = res;\n }\n\n onDuesSelection(res: any) {\n for (const ins of this.currentInstallments) {\n if (ins.installments === Number(res.value.installments)) {\n this.totalFinancedAmount = ins.total_amount;\n for (const label of ins.labels) {\n if (label.includes('CFT')) {\n this.recommendedLabel = label.replace(/_/g, ': ').split('|', 2);\n this.currentTEA = this.recommendedLabel[1];\n this.currentCFT = this.recommendedLabel[0];\n }\n }\n }\n }\n }\n\n onSubmit(form: NgForm) {\n this.submitted = true;\n this.paymentResult = { success: false, paymentId: '', integrator: 'MP' };\n if (this.checkOutForm.valid) {\n const sendForm = {\n cardNumber: this.cardText,\n securityCode: this.cvcText,\n cardExpirationMonth: this.monthText,\n cardExpirationYear: this.yearText,\n cardholderName: this.defaultName,\n docType: this.defaultDocType,\n docNumber: this.dniText\n };\n\n if (this.debugLog) {\n console.log('sendForm', sendForm);\n }\n\n if (this.tokenId !== '') {\n Mercadopago.clearSession();\n }\n\n this.createToken(sendForm);\n }\n }\n\n // Input controls\n onYearChange() {\n if (isNaN(+this.yearText)) {\n setTimeout(() => {\n this.yearText = '';\n });\n }\n }\n\n onMonthLostFocus() {\n if (+this.monthText > 0 && !isNaN(+this.monthText)) {\n if (this.monthText == '1') {\n this.monthText = '01';\n }\n }\n }\n\n onMonthChange() {\n if (+this.monthText >= 0 && +this.monthText < 13 && !isNaN(+this.monthText)) {\n switch (this.monthText) {\n case '2': {\n this.monthText = '02';\n break;\n }\n case '3': {\n this.monthText = '03';\n break;\n }\n case '4': {\n this.monthText = '04';\n break;\n }\n case '5': {\n this.monthText = '05';\n break;\n }\n case '6': {\n this.monthText = '06';\n break;\n }\n case '7': {\n this.monthText = '07';\n break;\n }\n case '8': {\n this.monthText = '08';\n break;\n }\n case '9': {\n this.monthText = '09';\n break;\n }\n }\n } else {\n setTimeout(() => {\n this.monthText = '';\n });\n }\n }\n\n onCodeChange() {\n if (isNaN(+this.cvcText)) {\n setTimeout(() => {\n this.cvcText = '';\n });\n }\n }\n onDniChange() {\n if (isNaN(+this.dniText)) {\n setTimeout(() => {\n this.dniText = '';\n });\n }\n }\n\n onPayerNameChange() {\n if (!isNaN(+this.defaultName)) {\n setTimeout(() => {\n this.defaultName = '';\n });\n }\n }\n\n onCardChange() {\n if (isNaN(+this.cardText)) {\n setTimeout(() => {\n this.cardText = '';\n });\n }\n }\n\n onPaste(): boolean {\n return false;\n }\n\n logger(message: string, data: any): void {\n if (this.debugLog) {\n console.log(message, JSON.stringify(data));\n }\n }\n\n mercadoPagoPayment(){\n this.mercadopagoApiService.makePayment(this.cardPayment, this.accessToken, this.vkUrlApi)\n .subscribe(res => {\n this.paymentResponseHandler(res);\n }, error => {\n this.statusPay.emit(this.paymentResult);\n this.paymentState = 'apiError';\n console.log(error);\n });\n }\n\n resetForm() {\n this.disabled = false;\n this.totalAmount\n this.totalFinancedAmount = undefined;\n this.currentBin = undefined;\n this.recommendedLabel = undefined;\n this.currentTEA = undefined;\n this.currentCFT = undefined;\n this.ticket = undefined;\n this.defaultName = undefined;\n this.defaultDocType = undefined;\n this.issuerId = undefined;\n this.currentPaymentMethod = undefined;\n this.currentIssuers = null;\n this.currentInstallments = null;\n this.cardPayment = undefined;\n\n this.paymentResult = { success: false, paymentId: '', integrator: 'MP' };\n \n // Form bind\n this.monthText = undefined;\n this.yearText = undefined;\n this.cvcText = undefined;\n this.dniText = undefined;\n this.cardText = undefined;\n this.requiredIssuer = false;\n this.submitted = false;\n this.addScript = false;\n this.paymentState = 'unsubmitted';\n this.payerName = undefined;\n this.tokenId = '';\n this.errorMessage = undefined;\n\n this.checkOutForm.reset()\n\n this.initMercadoPago();\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { MercadopagoApiService } from '../services/mercadopago.api.service';\r\n\r\n\r\n@Component({\r\n selector: 'mp-promotion',\r\n templateUrl: './promotion-bank.component.html',\r\n styleUrls: ['./promotion-bank.component.scss']\r\n})\r\nexport class PromotionBankComponent implements OnInit {\r\n @Input() url: string;\r\n @Input() contentSource: string;\r\n\r\n cardPromotions: any;\r\n\r\n constructor(private mercadoPagoService: MercadopagoApiService) { }\r\n\r\n ngOnInit() {\r\n this.mercadoPagoService\r\n .getMercadoPagoPromotions(this.url)\r\n .subscribe(res => this.cardPromotions = res);\r\n }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { MercadoPagoComponent } from './components/mercadopago.component';\nimport { PromotionBankComponent } from './components/promotion-bank.component';\n\nconst COMPONENTS = [\n MercadoPagoComponent,\n PromotionBankComponent\n];\n\n@NgModule({\n declarations: COMPONENTS,\n exports: COMPONENTS,\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule\n ]\n})\nexport class MercadopagoModule { }\n","import { AfterViewChecked, Component, Input, OnInit } from '@angular/core';\n\nimport { PaypalResponse } from '../models/response-paypal.model';\n\ndeclare let paypal: any;\n\n@Component({\n selector: 'paypal-new-form-pay',\n templateUrl: './paypal-new.component.html',\n styleUrls: ['./paypal-new.component.scss']\n})\nexport class PayPalNewComponent implements OnInit, AfterViewChecked {\n @Input() accessToken: string;\n @Input() clientId: string;\n @Input() vkUrlApi: string;\n @Input() storeId: string;\n @Input() userId: string;\n @Input() transactionId: string;\n @Input() amount: string;\n @Input() currency: string;\n @Input() cancelUrl: string;\n @Input() successUrl: string;\n @Input() data: string;\n @Input() urlSignout: string;\n\n private addScript = false;\n\n errorsMessage: any;\n\n showError = false;\n loading = true;\n status = '';\n linkToPay = '';\n linkExecutePay = '';\n\n constructor() {\n // if (this.urlSignout === '') {\n // const wnd = window.open(this.urlSignout, 'myWindow', 'width=100,height=100');\n // setTimeout(function () { wnd.close(); }, 1000);\n // }\n }\n\n ngOnInit(): void {\n\n }\n\n ngAfterViewChecked(): void {\n if (!this.addScript) {\n this.addPaypalScript().then(() => {\n\n const paypalConfig = {\n style: {\n color: 'blue',\n shape: 'pill',\n label: 'pay',\n height: 40\n },\n commit: true,\n createOrder: function (data, actions) {\n return actions.order.create({\n purchase_units: [{\n amount: { value: (<HTMLInputElement>document.getElementById('amount')).value },\n reference_id: '\\'' + (<HTMLInputElement>document.getElementById('transactionId')).value + '\\'',\n custom_id: '\\'' + (<HTMLInputElement>document.getElementById('storeId')).value + '\\''\n }],\n application_context: {\n shipping_preference: 'NO_SHIPPING'\n }\n });\n },\n\n // Finalize the transaction\n onApprove: function (data, actions) {\n return actions.order.capture().then(function (details: PaypalResponse) {\n details.data = (<HTMLInputElement>document.getElementById('data')).value;\n details.userid = (<HTMLInputElement>document.getElementById('userId')).value;\n\n fetch((<HTMLInputElement>document.getElementById('vkUrlApi')).value, {\n method: 'post',\n headers: {\n 'content-type': 'application/json',\n 'Authorization': 'Bearer ' + (<HTMLInputElement>document.getElementById('accessToken')).value\n },\n body: JSON.stringify({ details })\n }).then((response) => {\n console.log('response-> api', response);\n }).then(() => {\n window.location.href = (<HTMLInputElement>document.getElementById('successUrl')).value;\n });\n });\n },\n onError: function (error) {\n window.location.reload();\n },\n onCancel: (data, actions) => {\n window.location.href = (<HTMLInputElement>document.getElementById('cancelUrl')).value;\n }\n };\n\n paypal.Buttons(paypalConfig).render('#paypal-button-container');\n this.loading = false;\n });\n }\n }\n\n private addPaypalScript() {\n this.addScript = true;\n return new Promise((resolve, reject) => {\n const scripttagElement = document.createElement('script');\n scripttagElement.src = `https://www.paypal.com/sdk/js?client-id=${this.clientId}&currency=${this.currency}`;\n scripttagElement.onload = resolve;\n document.body.appendChild(scripttagElement);\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { PayPalNewComponent } from './components/paypal-new.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n HttpClientModule,\n RouterModule\n ],\n declarations: [\n PayPalNewComponent\n ],\n exports: [\n PayPalNewComponent\n ]\n})\nexport class PaypalModule { }\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { CreditCard, CreditCardPlans, Payment, ResponseApi } from '../models/payment.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SpsDecidirApiService {\r\n private authHeaders: HttpHeaders;\r\n\r\n constructor(private httpClient: HttpClient) { }\r\n\r\n public makePayment(payment: Payment, access_token: string, url: string): Observable<any> {\r\n this._setAuthHeaders(access_token);\r\n return this.httpClient.post(this.normalizeUrl(url) + '/Payment', payment, { headers: this.authHeaders });\r\n }\r\n\r\n public getDecidirConfigByBin(bin: string, url: string,): Observable<any> {\r\n return this.httpClient.get<ResponseApi>(this.normalizeUrl(url) +`/GetDecidirConfigByBin?bin=${bin}`);\r\n }\r\n\r\n\r\n public normalizeUrl(url: string): string {\r\n if (url.length > 0 && url.charAt(url.length - 1) == '/') {\r\n url = url.substr(0, url.length - 1);\r\n }\r\n return url;\r\n }\r\n\r\n public getCreditCards(access_token: string, url: string, domainId: number): Observable<ResponseApi> {\r\n this._setAuthHeaders(access_token);\r\n return this.httpClient.get<ResponseApi>(this.normalizeUrl(url) + '/GetCreditCardsEnable?domainId='+ domainId, { headers: this.authHeaders });\r\n }\r\n\r\n public getPlansByCreditCardId(access_token: string, url: string, amount: string, creditCardId: number, domainId: number, bin: string): Observable<ResponseApi> {\r\n this._setAuthHeaders(access_token);\r\n const body = { amount: amount, creditCardId: creditCardId, domainId: domainId, bin: bin};\r\n return this.httpClient.post<ResponseApi>(this.normalizeUrl(url) + '/CalculateAmountInInstallments', body, { headers: this.authHeaders });\r\n }\r\n\r\n private _setAuthHeaders(access_token: string) {\r\n const userToken = 'Bearer ' + access_token;\r\n this.authHeaders = new HttpHeaders({ 'Content-Type': 'application/json', 'Authorization': userToken });\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport sha256 from 'sha256';\n\nimport {\n CreditCard,\n CreditCardPlans,\n ErrorToken,\n Payment,\n PaymentResponseInfo,\n PaymentResult,\n ResponseApi,\n SpsResponsePayment,\n} from '../models/payment.model';\nimport { SpsDecidirApiService } from '../services/sps-decidir.api.service';\n\ndeclare var Decidir: any;\n\n@Component({\n selector: 'sps-form-pay',\n templateUrl: './sps-decidir.component.html',\n styleUrls: ['./sps-decidir.component.scss']\n})\nexport class SpsDecidirComponent implements OnInit, OnChanges {\n\n @ViewChild('f', { static: false }) checkOutForm: NgForm;\n @Input() accessToken: string;\n @Input() spsUrlApi: string;\n @Input() vkUrlApi: string;\n @Input() paymentAmount: string;\n @Input() logoSps: string;\n @Input() currency: string;\n @Input() defaultPublishableKey: string;\n @Input() superviellePublishableKey: string;\n @Input() successUrl: string;\n @Input() failureUrl: string;\n @Input() useCybersource: boolean;\n @Input() debugLog: boolean;\n @Input() storeId: string;\n @Input() domainId: number;\n @Input() idVen: number;\n @Input() data: string;\n @Input() labelButton: string;\n @Input() language = 'es';\n @Output() statusPay = new EventEmitter<PaymentResult>();\n\n disabled = false;\n disableSelect = false;\n totalAmount: string;\n totalFinancedAmount: string;\n currentTEA: string;\n currentCFT: string;\n\n creditCards: CreditCard[];\n selectCreditCardPlan: CreditCardPlans = null;\n creditCardPlans: CreditCardPlans[];\n paymentResult: PaymentResult = { success: false, paymentId: '', integrator: 'DECIDIR' };\n\n // Form bind\n monthText: string;\n yearText: string;\n cvcText: string;\n dniText: string;\n payerNameText: string;\n cardText: string;\n submitPressed = false;\n invalidDate = false;\n\n private decidir: any;\n addScript = true;\n\n paymentState = 'unsubmitted';\n payerName: string;\n issuer?: number = null;\n payment: Payment;\n paymentSuccessInfo: PaymentResponseInfo;\n errorMessage: string;\n\n constructor(private router: Router, public spsDecidirApiService: SpsDecidirApiService) { }\n\n ngOnInit() {\n this.initDecidir();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!changes.paymentAmount.isFirstChange()) {\n this.checkOutForm.reset();\n this.disabled = false;\n this.disableSelect = false;\n }\n }\n\n private initDecidir() {\n this.addDecidirScript()\n .then(() => {\n this.getCreditCards();\n this.initializeSpsDecidir();\n });\n }\n\n addDecidirScript() {\n this.addScript = true;\n return new Promise((resolve) => {\n const scripttagElement = document.createElement('script');\n scripttagElement.src = 'https://live.decidir.com/static/v2.4/decidir.js';\n scripttagElement.onload = resolve;\n document.body.appendChild(scripttagElement);\n });\n }\n\n private getCreditCards() {\n this.spsDecidirApiService.getCreditCards(this.accessToken, this.vkUrlApi, this.domainId)\n .subscribe((res: ResponseApi) => {\n this.creditCards = res.data as CreditCard[];\n this.logger('getCreditCards', this.creditCards);\n }, _ => this.paymentState = 'apiError');\n }\n\n private getPlansByCreditCardId(amount: string, creditCardId: number, domainId: number, bin: string) {\n this.spsDecidirApiService.getPlansByCreditCardId(this.accessToken, this.vkUrlApi, amount, creditCardId, domainId, bin)\n .subscribe((res: ResponseApi) => {\n this.creditCardPlans = res.data as CreditCardPlans[];\n this.logger('getPlansByCreditCardId', this.creditCardPlans);\n }, _ => this.paymentState = 'apiError');\n }\n\n private initializeSpsDecidir() {\n this.decidir = new Decidir(this.spsDecidirApiService.normalizeUrl(this.spsUrlApi), !this.useCybersource);\n this.decidir.setTimeout(15000);\n this.decidir.setPublishableKey(this.defaultPublishableKey);\n }\n\n private logger(message: string, data: any): void {\n if (!this.debugLog) { return; }\n console.log(message, data);\n }\n\n public selectedCreditCard() {\n if (!this.issuer) { return; }\n\n this.selectCreditCardPlan = null;\n if (this.currency === 'ARS' && this.cardText.substring(0,8) !== '00000000') {\n this.getPlansByCreditCardId(this.paymentAmount, this.issuer, this.domainId, this.cardText.substring(0,8));\n return;\n } else {\n this.cardText ='';\n }\n\n if (this.currency === 'USD') {\n this.totalAmount = this.totalFinancedAmount = this.paymentAmount;\n }\n }\n\n selectedCreditCardPlan() {\n if (this.selectCreditCardPlan === null) { return; }\n\n this.totalFinancedAmount = this.selectCreditCardPlan.totalAmount;\n this.totalAmount = this.paymentAmount;\n this.currentTEA = this.selectCreditCardPlan.tna;\n this.currentCFT = this.selectCreditCardPlan.cft;\n }\n\n onSubmit(event) {\n event.preventDefault();\n this.submitPressed = true;\n this.paymentResult = { success: false, paymentId: '', integrator: 'DECIDIR' };\n\n if (!this.checkOutForm.valid) { return; }\n\n this.paymentState = 'processing';\n\n this.spsDecidirApiService.getDecidirConfigByBin(this.cardText.substring(0, 8), this.vkUrlApi)\n .subscribe(config => {\n if(config =='SPS-Decidir-Supervielle'){\n this.decidir.setPublishableKey(this.superviellePublishableKey);\n } else {\n this.decidir.setPublishableKey(this.defaultPublishableKey);\n }\n\n const form = document.querySelector('#formulario');\n this.decidir.createToken(form, (status: number, response: SpsResponsePayment) => {\n if (status !== 200 && status !== 201) {\n this.paymentState = 'error';\n this.statusPay.emit(this.paymentResult);\n this.processErrorToken(response);\n } else {\n this.makePayment(form, response);\n }\n });\n\n });\n }\n\n makePayment(form: any, paymentResponse: SpsResponsePayment): void {\n this.logger('makePayment:', JSON.stringify(paymentResponse));\n const hashedCard = this.hashText(this.cardText,100000);\n this.payment = {\n token: paymentResponse.id,\n amount: this.totalAmount,\n totalFinancedAmount: this.totalFinancedAmount,\n bin: paymentResponse.bin,\n currency: 'ARS',\n documentNumber: this.currency === 'USD' ? '0' : paymentResponse.cardholder.identification.number,\n idVen: this.idVen,\n paymentType: 'single',\n installments: this.currency === 'USD' ? 1 : this.selectCreditCardPlan.installments,\n creditCardPlanId: this.currency === 'USD' ? 0 : this.selectCreditCardPlan.id,\n paymentMethodId: this.issuer,\n cardholder: this.payerNameText,\n storeId: this.storeId,\n data: this.data,\n subPayments: [],\n creditCardHash: hashedCard,\n lastFourDigits: this.cardText.slice(-4)\n };\n \n\n this.logger('payment:', JSON.stringify(this.payment));\n this.spsDecidirApiService.makePayment(this.payment, this.accessToken, this.vkUrlApi)\n .subscribe((res: ResponseApi) => {\n this.paymentResponseHandler(res);\n }, error => {\n this.statusPay.emit(this.paymentResult);\n this.paymentState = 'apiError';\n console.error(error);\n });\n }\n\n private hashText(text: string, iterations:number): string{\n let hashedtext = text;\n for (let i = 0; i < iterations; i++) {\n hashedtext = sha256(hashedtext);\n }\n return hashedtext\n }\n\n paymentResponseHandler(response: ResponseApi) {\n this.logger('paymentResponseHandler:', JSON.stringify(response));\n\n if (response.success) {\n this.paymentState = 'success';\n this.paymentSuccessInfo = response.data as PaymentResponseInfo;\n this.paymentResult = { success: true, paymentId: this.paymentSuccessInfo.payment_id, integrator: 'DECIDIR' };\n this.statusPay.emit(this.paymentResult);\n this.disabled = true;\n this.disableSelect = true;\n\n if (this.successUrl && this.successUrl.length > 0) {\n this.router.navigate([`${this.successUrl}`]).then();\n return;\n }\n } else {\n this.paymentState = 'error';\n this.statusPay.emit(this.paymentResult);\n this.processErrorMessage(response.data);\n\n if (this.failureUrl && this.failureUrl.length > 0) {\n this.router.navigate([`${this.failureUrl}`]).then()\n return;\n }\n }\n }\n\n processErrorToken(response: any): void {\n this.disabled = true;\n this.disableSelect = true;\n\n const error: ErrorToken = response as ErrorToken;\n\n // obtenemos mensajes de error\n error.error.forEach((x) => {\n if (x.error.type === 'invalid_expiry_date') {\n this.errorMessage = 'Revisá la fecha de vencimiento.';\n } else {\n this.errorMessage = JSON.stringify(error);\n }\n });\n }\n\n // diferentes tipos de error nos devuelve decidir\n processErrorMessage(responseError: PaymentResponseInfo): void {\n this.disabled = true;\n this.disableSelect = true;\n\n if (responseError.error) {\n this.errorMessage = responseError.error.reason.description;\n\n if (responseError.error.reason.additional_description) {\n this.errorMessage = this.errorMessage + ' - ' + responseError.error.reason.additional_description;\n }\n\n if (this.errorMessage == '' || this.errorMessage == undefined) {\n this.errorMessage = JSON.stringify(responseError);\n }\n }\n else if (responseError.error_type) {\n switch (responseError.error_type) {\n case 'invalid_request_error':\n if (responseError.validation_errors.length > 0) {\n if (responseError.validation_errors[0].code === 'invalid_param') {\n switch (responseError.validation_errors[0].param) {\n case 'card_number':\n this.errorMessage = 'Tarjeta inválida';\n break;\n case 'bin':\n this.errorMessage = 'Tarjeta inválida';\n break;\n default:\n this.errorMessage = responseError.error.reason.description;\n if (this.errorMessage == '' || this.errorMessage == undefined) {\n this.errorMessage = JSON.stringify(responseError);\n }\n break;\n }\n }\n }\n break;\n case 'not_found_error':\n this.errorMessage = 'Datos no encontrados (404).';\n break;\n case 'authentication_error':\n this.errorMessage = 'Error (401).';\n break;\n case 'malformed_request_error':\n this.errorMessage = 'Error al enviar los datos (400).';\n break;\n case 'api_error':\n this.errorMessage = 'Error interno (409).';\n break;\n default:\n this.errorMessage = JSON.stringify(responseError);\n break;\n }\n }\n }\n\n compareDate(year: number, month: number, day: number): number {\n const d1: Date = new Date(year, month, day);\n const d2: Date = new Date();\n\n const same = d1.getTime() === d2.getTime();\n if (same) { return 0; }\n if (d1 > d2) { return 1; }\n if (d1 < d2) { return -1; }\n }\n\n // Input controls\n onYearChange() {\n if (Number.isNaN(+this.yearText)) {\n setTimeout(() => {\n this.yearText = '';\n });\n }\n }\n\n onYearBlur(element: any) {\n if (this.compareDate(\n Number(`20${this.yearText}`),\n Number(this.monthText),\n new Date().getDate()) < 0) {\n setTimeout(() => {\n this.yearText = '';\n this.invalidDate = true;\n element.target.focus();\n });\n } else {\n this.invalidDate = false;\n }\n\n }\n\n onMonthLostFocus() {\n if (+this.monthText > 0 && !isNaN(+this.monthText)) {\n if (this.monthText === '1') {\n this.monthText = '01';\n }\n }\n }\n\n onMonthChange() {\n if (+this.monthText >= 0 && +this.monthText < 13 && !isNaN(+this.monthText)) {\n switch (this.monthText) {\n case '2': {\n this.monthText = '02';\n break;\n }\n case '3': {\n this.monthText = '03';\n break;\n }\n case '4': {\n this.monthText = '04';\n break;\n }\n case '5': {\n this.monthText = '05';\n break;\n }\n case '6': {\n this.monthText = '06';\n break;\n }\n case '7': {\n this.monthText = '07';\n break;\n }\n case '8': {\n this.monthText = '08';\n break;\n }\n case '9': {\n this.monthText = '09';\n break;\n }\n }\n } else {\n setTimeout(() => {\n this.monthText = '';\n });\n }\n }\n\n onCodeChange() {\n if (Number.isNaN(+this.cvcText)) {\n setTimeout(() => {\n this.cvcText = '';\n });\n }\n\n if (this.cvcText.search(' ') > -1) {\n setTimeout(() => {\n this.cvcText = '';\n });\n }\n }\n\n onDniChange() {\n if (Number.isNaN(+this.dniText)) {\n setTimeout(() => {\n this.dniText = '';\n });\n }\n\n if (this.dniText.search(' ') > -1) {\n setTimeout(() => {\n this.dniText = '';\n });\n }\n }\n\n onPayerNameChange() {\n if (!isNaN(+this.payerNameText)) {\n setTimeout(() => {\n this.payerNameText = '';\n });\n }\n }\n\n onCardChange() {\n if (Number.isNaN(+this.cardText)) {\n setTimeout(() => {\n this.cardText = '';\n });\n }\n\n if (this.cardText.search(' ') > -1) {\n setTimeout(() => {\n this.cardText = '';\n });\n }\n\n if(this.cardText.length <8) {\n this.disableSelect = true;\n this.issuer = null;\n } else {\n this.disableSelect = false;\n }\n\n // setea tarjeta\n if (this.cardText.length === 8 && this.cardText !== '00000000'){\n this.setCreditType(this.cardText);\n }\n \n }\n\n setCreditType(bin: string): void {\n if (bin.length < 8) {\n this.issuer = null;\n return;\n }\n\n if (bin.length === 8) {\n this.issuer = null;\n\n // visa debito\n if (bin.substring(0, 4) === '4770' ||\n bin.substring(0, 6) === '442548' ||\n bin.substring(0, 6) === '406809' ||\n bin.substring(0, 6) === '408738' ||\n bin.substring(0, 6) === '411521' ||\n bin.substring(0, 6) === '411663' ||\n bin.substring(0, 6) === '426359' ||\n bin.substring(0, 6) === '429780' ||\n bin.substring(0, 6) === '438267' ||\n bin.substring(0, 6) === '461187' ||\n bin.substring(0, 6) === '500334' ||\n bin.substring(0, 6) === '509413' ||\n bin.substring(0, 6) === '512285' ||\n bin.substring(0, 6) === '512881' ||\n bin.substring(0, 6) === '518635' ||\n bin.substring(0, 6) === '538449' ||\n bin.substring(0, 6) === '550553' ||\n bin.substring(0, 6) === '566057' ||\n bin.substring(0, 6) === '567933' ||\n bin.substring(0, 6) === '572140' ||\n bin.substring(0, 6) === '584257' ||\n bin.substring(0, 6) === '598718' ||\n bin.substring(0, 6) === '605801' ||\n bin.substring(0, 6) === '606120' ||\n bin.substring(0, 6) === '631057' ||\n bin.substring(0, 6) === '676215' ||\n bin.substring(0, 6) === '713274' ||\n bin.substring(0, 6) === '713284' ||\n bin.substring(0, 6) === '717515' ||\n bin.substring(0, 6) === '748761' ||\n bin.substring(0, 6) === '753371' ||\n bin.substring(0, 6) === '753600' ||\n bin.substring(0, 6) === '912394' ||\n bin.substring(0, 6) === '916148' ||\n bin.substring(0, 6) === '916773' ||\n bin.substring(0, 6) === '923405' ||\n bin.substring(0, 6) === '930965' ||\n bin.substring(0, 6) === '934091' ||\n bin.substring(0, 6) === '935761' ||\n bin.substring(0, 6) === '943313' ||\n bin.substring(0, 6) === '945721' ||\n bin.substring(0, 6) === '948809' ||\n bin.substring(0, 6) === '960644' ||\n bin.substring(0, 6) === '969085' ||\n bin.substring(0, 6) === '970167' ||\n bin.substring(0, 6) === '978061' ||\n bin.substring(0, 8) === '40267919' ||\n bin.substring(0, 8) === '40327176' ||\n bin.substring(0, 8) === '40416004' ||\n bin.substring(0, 8) === '40421933' ||\n bin.substring(0, 8) === '40451556' ||\n bin.substring(0, 8) === '40541010' ||\n bin.substring(0, 8) === '40623835' ||\n bin.substring(0, 8) === '40733469' ||\n bin.substring(0, 8) === '40733586' ||\n bin.substring(0, 8) === '40872498' ||\n bin.substring(0, 8) === '45007789' ||\n bin.substring(0, 8) === '45024822' ||\n bin.substring(0, 8) === '45034751' ||\n bin.substring(0, 8) === '45046987' ||\n bin.substring(0, 8) === '45060549' ||\n bin.substring(0, 8) === '45062482' ||\n bin.substring(0, 8) === '45070071' ||\n bin.substring(0, 8) === '45084708' ||\n bin.substring(0, 8) === '45091433' ||\n bin.substring(0, 8) === '45100902' ||\n bin.substring(0, 8) === '45103869' ||\n bin.substring(0, 8) === '45131047' ||\n bin.substring(0, 8) === '45168884' ||\n bin.substring(0, 8) === '45174306' ||\n bin.substring(0, 8) === '45184611' ||\n bin.substring(0, 8) === '45191921' ||\n bin.substring(0, 8) === '45201881' ||\n bin.substring(0, 8) === '45206401' ||\n bin.substring(0, 8) === '45245294' ||\n bin.substring(0, 8) === '45314944' ||\n bin.substring(0, 8) === '45317847' ||\n bin.substring(0, 8) === '45357409' ||\n bin.substring(0, 8) === '45374587' ||\n bin.substring(0, 8) === '45394705' ||\n bin.substring(0, 8) === '45456584' ||\n bin.substring(0, 8) === '45541924' ||\n bin.substring(0, 8) === '45545795' ||\n bin.substring(0, 8) === '45567746' ||\n bin.substring(0, 8) === '45583759' ||\n bin.substring(0, 8) === '45648838' ||\n bin.substring(0, 8) === '45672506' ||\n bin.substring(0, 8) === '45678421' ||\n bin.substring(0, 8) === '45710756' ||\n bin.substring(0, 8) === '45716006' ||\n bin.substring(0, 8) === '45725029' ||\n bin.substring(0, 8) === '45732113' ||\n bin.substring(0, 8) === '45732698' ||\n bin.substring(0, 8) === '45793917' ||\n bin.substring(0, 8) === '45841185' ||\n bin.substring(0, 8) === '45862021' ||\n bin.substring(0, 8) === '45915336' ||\n bin.substring(0, 8) === '45971496') {\n this.issuer = 31;\n }\n // mastercard\n else if (bin.substring(0, 2) === '51' ||\n bin.substring(0, 2) === '52' ||\n bin.substring(0, 2) === '53' ||\n bin.substring(0, 2) === '54' ||\n bin.substring(0, 2) === '55') {\n this.issuer = 104;\n }\n // tarjeta naranja\n else if (bin.substring(0, 6) === '589562') {\n this.issuer = 24;\n }\n // visa credito\n else if (bin.substring(0, 1) === '4') {\n this.issuer = 1;\n }\n\n this.selectedCreditCard();\n }\n }\n\n onPaste(): boolean {\n return false;\n }\n\n resetForm() {\n this.disabled = false;\n this.disableSelect = false;\n this.totalAmount\n this.totalFinancedAmount = undefined;\n this.currentTEA = undefined;\n this.currentCFT = undefined;\n // creditCards: CreditCard[];\n this.creditCards = undefined;\n this.selectCreditCardPlan = null;\n // creditCardPlans: CreditCardPlans[];\n this.creditCardPlans = undefined;\n this.paymentResult = { success: false, paymentId: '', integrator: 'DECIDIR' };\n \n // Form bind\n this.monthText = undefined;\n this.yearText = undefined;\n this.cvcText = undefined;\n this.dniText = undefined;\n this.payerNameText = undefined;\n this.cardText = undefined;\n this.submitPressed = false;\n this.invalidDate = false;\n \n this.decidir = undefined;\n this.addScript = true;\n \n this.paymentState = 'unsubmitted';\n this.payerName = undefined;\n this.issuer = null;\n this.payment = undefined;\n this.paymentSuccessInfo = undefined;\n this.errorMessage = undefined;\n\n this.initDecidir();\n }\n\n}\n","import { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { SpsDecidirComponent } from './components/sps-decidir.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n HttpClientModule,\n RouterModule\n ],\n declarations: [\n SpsDecidirComponent\n ],\n exports: [\n SpsDecidirComponent\n ]\n})\nexport class SpsDecidirModule { }\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { InitPayment, ResponseApi, Payment } from '../models/go-cuotas.models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class GoCuotasApiService {\r\n private authHeaders: HttpHeaders | undefined;\r\n\r\n constructor(\r\n private httpClient: HttpClient\r\n ) { }\r\n \r\n public normalizeUrl(url: string): string {\r\n if (url.length > 0 && url.charAt(url.length - 1) == '/') {\r\n url = url.substr(0, url.length - 1);\r\n }\r\n\r\n return url;\r\n }\r\n\r\n public initPayment(access_token: string, url: string, initPayment: InitPayment): Observable<ResponseApi> {\r\n this._setAuthHeaders(access_token); \r\n\r\n const body = {\r\n cardholder: initPayment.cardholder,\r\n creditCardHash: initPayment.creditCardHash,\r\n amount: initPayment.amount,\r\n installments: initPayment.installments,\r\n documentNumber: initPayment.documentNumber,\r\n areaCode: initPayment.areaCode,\r\n phoneNumber: initPayment.phoneNumber,\r\n email: initPayment.email,\r\n idVen: initPayment.idVen,\r\n storeId: initPayment.storeId,\r\n data: initPayment.data\r\n };\r\n\r\n return this.httpClient.post<ResponseApi>(this.normalizeUrl(url) + '/init-payment', body, { headers: this.authHeaders });\r\n }\r\n\r\n public getOrders(access_token: string, url: string): Observable<ResponseApi> {\r\n this._setAuthHeaders(access_token);\r\n return this.httpClient.get<ResponseApi>(this.normalizeUrl(url) + '/orders', { headers: this.authHeaders });\r\n }\r\n\r\n public payment(access_token: string, url: string, payment: Payment): Observable<ResponseApi> {\r\n this._setAuthHeaders(access_token);\r\n const body = {\r\n id: payment.id,\r\n cardholder: payment.cardholder,\r\n sale_token: payment.sale_token,\r\n code: payment.code,\r\n creditCardHash: payment.creditCardHash,\r\n cardMonthExpiration: payment.cardMonthExpiration,\r\n cardYearExpiration: payment.cardYearExpiration,\r\n cardSecurityCode: payment.cardSecurityCode,\r\n idVen: payment.idVen,\r\n storeId: payment.storeId,\r\n data: payment.data\r\n }\r\n\r\n return this.httpClient.post<ResponseApi>(this.normalizeUrl(url) + '/payment', body, { headers: this.authHeaders });\r\n }\r\n\r\n private _setAuthHeaders(access_token: string) {\r\n const userToken = 'Bearer ' + access_token;\r\n this.authHeaders = new HttpHeaders({ 'Content-Type': 'application/json', 'Authorization': userToken });\r\n }\r\n}","import { Component, OnInit, EventEmitter, Output } from '@angular/core';\n\n@Component({\n selector: 'lib-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss']\n})\nexport class ModalComponent implements OnInit {\n\n modalVisible: boolean = false;\n verificationCode: string = '';\n\n @Output() codeVerified = new EventEmitter<string>();\n\n constructor() { }\n\n ngOnInit() {\n this.verificationCode = ''; \n }\n\n openModal() {\n this.verificationCode = '';\n this.modalVisible = true;\n document.body.style.overflow = '';\n }\n\n closeModal() {\n this.modalVisible = false;\n document.body.style.overflow = 'hidden';\n }\n\n onSubmitCode() {\n if (this.verificationCode) {\n this.codeVerified.emit(this.verificationCode); // Emitir el código ingresado\n this.modalVisible = false; \n } else {\n alert('Por favor ingrese el código.');\n }\n }\n\n onVerificationCodeChange() {\n if (isNaN(+this.verificationCode)) {\n setTimeout(() => {\n this.verificationCode = '';\n });\n }\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { PaymentResult, ResponseApi, InitPayment, Payment } from '../models/go-cuotas.models';\nimport { GoCuotasApiService } from '../services/go-cuotas.api.service';\nimport { ModalComponent } from './modal/modal.component';\n\n@Component({\n selector: 'lib-go-cuotas',\n templateUrl: './go-cuotas.component.html',\n styleUrls: ['./go-cuotas.component.scss']\n})\nexport class GoCuotasComponent implements OnInit {\n\n @Input() accessToken!: string;\n @Input() gcUrlApi!: string;\n @Input() vkUrlApi!: string;\n @Input() paymentAmount!: string;\n @Input() logoGC!: string;\n @Input() idVen!: number;\n @Input() storeId!: string;\n @Input() data!: string;\n @Output() statusPay = new EventEmitter<PaymentResult>();\n\n defaultName!: string;\n mailText!: string;\n codAreaText!: string;\n telText!: string;\n cardText!: string;\n yearText!: string;\n monthText!: string;\n dniText!: string;\n cvcText!: string;\n installments!: number;\n defaultDocType!: string;\n currentInstallments!: any[];\n totalAmount!: number;\n OinitPayment!: InitPayment;\n Opayment!: Payment;\n sale_token: string = '';\n error_message: string = '';\n paymentCompleted: boolean = false; \n loadingMessage: string = 'Iniciando el pago...';\n paymentStatus = 'unsubmitted';\n\n disabled = false;\n disabledSelect = false;\n submitted = false;\n isLoading: boolean = false;\n hasError: boolean = false;\n\n // accessToken: string = '2569793-51e1725c-9334-4ea2-ada0-b0c87187443c';\n // url: string = 'https://sandbox.gocuotas.com/api/full_sale/v1/';\n\n paymentResult: PaymentResult = { success: false, paymentId: '', integrator: 'GOCUOTAS' };\n\n @ViewChild('f', { static: false }) checkOutForm!: NgForm;\n @ViewChild(ModalComponent, {static: false}) modal!: ModalComponent;\n\n constructor(\n private goCuotasApiService: GoCuotasApiService\n ) { }\n\n ngOnInit() {\n this.defaultDocType = '';\n this.installments = 0;\n this.currentInstallments = [\n { value: 2, label: '2 Cuotas' },\n { value: 3, label: '3 Cuotas' },\n { value: 4, label: '4 Cuotas' }\n ]; // Opciones para \"Cantidad de cuotas\"\n\n this.totalAmount = Number(this.paymentAmount);\n }\n\n onSubmit(event: Event) {\n event.preventDefault();\n this.submitted = true;\n \n if (!this.checkOutForm.valid) { return; }\n\n this.isLoading = true;\n this.paymentCompleted = false;\n this.loadingMessage = 'Iniciando el pago...';\n this.paymentResult = { success: false, paymentId: '', integrator: 'GOCUOTAS' };\n\n \n this.OinitPayment = {\n amount: Number(this.paymentAmount) * 100,\n areaCode: this.codAreaText,\n installments: this.installments, \n documentNumber: this.dniText,\n phoneNumber: this.telText,\n email: this.mailText.toLowerCase(),\n cardholder: this.defaultName,\n creditCardHash: this.cardText,\n idVen: this.idVen,\n storeId: this.storeId,\n data: this.data\n }; \n\n this.initPayment();\n }\n\n initPayment() {\n this.isLoading = true;\n this.loadingMessage = 'Enviando código...';\n\n this.goCuotasApiService.initPayment(this.accessToken, this.vkUrlApi, this.OinitPayment)\n .subscribe({\n next: (v) => this.initPaymentResponseHandler(v),\n error: (v) => this.ResponseHandlerError(v)\n })\n }\n\n private initPaymentResponseHandler(response: ResponseApi) {\n if(!response.success) {\n this.error_message = response.errorsMessages[0];\n this.statusPay.emit(this.paymentResult);\n this.disabled = true;\n this.disabledSelect = true;\n\n return;\n }\n\n this.Opayment = {\n id: response.data.id,\n cardholder: this.defaultName,\n sale_token: response.data.response.sale_token,\n creditCardHash: this.cardText,\n cardMonthExpiration: Number(this.monthText),\n cardYearExpiration: Number(this.yearText),\n cardSecurityCode: Number(this.cvcText),\n idVen: this.idVen,\n storeId: this.storeId,\n data: this.data\n };\n\n this.isLoading = false;\n this.disabled = true;\n this.disabledSelect = true;\n this.modal.openModal();\n this.paymentStatus = 'sentCode';\n }\n\n onCodeSent(code: string) {\n this.isLoading = true;\n this.loadingMessage = 'Procesando pago...';\n \n this.Opayment.code = Number(code);\n \n if(code !== null){\n this.finishPayment();\n }\n }\n\n public finishPayment() {\n this.paymentStatus = 'processing';\n\n this.goCuotasApiService.payment(this.accessToken, this.vkUrlApi, this.Opayment)\n .subscribe({\n next: (v) => this.FinishPaymentResponseHandler(v), \n error: (v) => this.ResponseHandlerError(v)\n });\n }\n\n private ResponseHandlerError(response: any) {\n this.paymentStatus = 'error';\n this.disabled = true;\n this.disabledSelect = true;\n this.statusPay.emit(this.paymentResult);\n\n if(!response.ok && response.error === null && response.status === 500){\n this.error_message = \"Error en el servidor. Vuelva a intentar más tarde.\";\n this.isLoading = false;\n this.hasError = true; \n\n return;\n }\n\n this.error_message = response.error.errorsMessages[0];\n this.isLoading = false;\n this.hasError = true; \n }\n\n private FinishPaymentResponseHandler(response: ResponseApi){\n this.paymentStatus = 'success';\n\n if(!response.success) {\n this.error_message = response.errorsMessages[0];\n this.statusPay.emit(this.paymentResult);\n\n return;\n } \n\n this.Opayment.paymentId = response.data.paymentId\n this.paymentResult = { success: true, paymentId: String(this.Opayment.paymentId) , integrator: 'GOGUOTAS' };\n this.statusPay.emit(this.paymentResult);\n this.loadingMessage = '¡Pago procesado correctamente!';\n this.paymentCompleted = true; \n }\n\n restartForm() {\n this.hasError = false;\n this.submitted = false;\n this.disabled = false;\n this.disabledSelect = false;\n this.paymentStatus = 'unsubmitted';\n this.checkOutForm.reset(); \n this.installments = 0;\n this.defaultDocType = '';\n }\n\n // Input controls\n onYearChange() {\n if (isNaN(+this.yearText)) { \n setTimeout(() => {\n this.yearText = '';\n });\n }\n }\n\n onMonthLostFocus() {\n if (+this.monthText > 0 && !isNaN(+this.monthText)) {\n if (this.monthText == '1') {\n this.monthText = '01';\n }\n }\n }\n\n onMonthChange() {\n if (+this.monthText >= 0 && +this.monthText < 13 && !isNaN(+this.monthText)) {\n switch (this.monthText) {\n case '2': {\n this.monthText = '02';\n break;\n }\n case '3': {\n this.monthText = '03';\n break;\n }\n case '4': {\n this.monthText = '04';\n break;\n }\n case '5': {\n this.monthText = '05';\n break;\n }\n case '6': {\n this.monthText = '06';\n break;\n }\n case '7': {\n this.monthText = '07';\n break;\n }\n case '8': {\n this.monthText = '08';\n break;\n }\n case '9': {\n this.monthText = '09';\n break;\n }\n }\n } else {\n setTimeout(() => {\n this.monthText = '';\n });\n }\n }\n\n onCodeChange() {\n if (isNaN(+this.cvcText)) {\n setTimeout(() => {\n this.cvcText = '';\n });\n }\n }\n\n onDniChange() {\n if (isNaN(+this.dniText)) {\n setTimeout(() => {\n this.dniText = '';\n });\n }\n }\n\n onMailChange() {\n if (!isNaN(+this.mailText)) {\n setTimeout(() => {\n this.mailText = '';\n });\n }\n }\n\n onCodAreaChange() {\n if (isNaN(+this.codAreaText)) {\n setTimeout(() => {\n this.codAreaText = '';\n });\n }\n }\n\n onTelChange() {\n if (isNaN(+this.telText)) {\n setTimeout(() => {\n this.telText = '';\n });\n }\n }\n\n onPayerNameChange() {\n if (!isNaN(+this.defaultName)) {\n setTimeout(() => {\n this.defaultName = '';\n });\n }\n }\n\n onCardChange() {\n if (isNaN(+this.cardText)) {\n setTimeout(() => {\n this.cardText = '';\n });\n }\n }\n\n onInstallmentsChange() {\n //console.log('cuotas seleccionadas' ,this.installments)\n }\n\n onPaste(): boolean {\n return false;\n }\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GoCuotasComponent } from './components/go-cuotas.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { GoCuotasApiService } from './services/go-cuotas.api.service';\nimport { ModalComponent } from './components/modal/modal.component';\n\nconst COMPONENTS = [\n GoCuotasComponent,\n ModalComponent\n]\n\n@NgModule({\n declarations: [\n COMPONENTS \n ],\n exports: [\n COMPONENTS\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule\n ],\n providers: [\n GoCuotasApiService\n ]\n})\nexport class GoCuotasModule { }\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { CreatePaymentRequest, PaymentResponse } from '../models/modo.models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ModoApiService {\n private authHeaders: HttpHeaders | undefined;\n\n constructor(private http: HttpClient) { }\n\n createPayment(accessToken: string, paymentRequest: CreatePaymentRequest,apiUrl: string): Observable<PaymentResponse> {\n this._setAuthHeaders(accessToken); \n return this.http.post<PaymentResponse>(`${apiUrl}create-payment`, paymentRequest, { headers: this.authHeaders });\n }\n\n private _setAuthHeaders(accessToken: string) {\n const userToken = 'Bearer ' + accessToken;\n this.authHeaders = new HttpHeaders({ 'Content-Type': 'application/json', 'Authorization': userToken });\n }\n}","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ModoApiService } from '../../services/modo-api.service';\nimport { CreatePaymentRequest } from '../../models/modo.models';\n\n// Declara la variable global del SDK\ndeclare var ModoSDK: any;\n\ntype ExecutionEnvironment = 'desktop' | 'mobile-browser' | 'native-app';\n\n@Component({\n selector: 'vk-modo-payment',\n templateUrl: './modo.component.html',\n styleUrls: ['./modo.component.scss']\n})\nexport class ModoComponent implements OnInit {\n\n @Input() accessToken!: string;\n @Input() storeId: string;\n @Input() idVen: number;\n @Input() data: string;\n @Input() amount: number;\n @Input() orderId: string;\n @Input() vkUrlApi: string;\n @Input() callbackUrl: string;\n @Input() callbackUrlSuccess: string;\n @Output() statusPay = new EventEmitter<{ success: boolean; paymentId: string }>();\n\n isLoading = false;\n private executionEnv: ExecutionEnvironment = 'desktop';\n private devicePlatform: 'iOS' | 'Android' | undefined;\n\n constructor(\n private modoApi: ModoApiService,\n private route: ActivatedRoute\n ) { }\n\n ngOnInit(): void {\n this.detectEnvironment();\n if (this.executionEnv === 'desktop') {\n this.loadModoScript();\n }\n }\n\n private detectEnvironment(): void {\n try {\n const params = this.route.snapshot.params;\n const guid = params['guid'];\n const platform = params['platform'] as 'iOS' | 'Android';\n\n if (platform === 'iOS' || platform === 'Android' || guid === 'app') {\n this.executionEnv = 'native-app';\n this.devicePlatform = platform;\n console.log(`MODO Payment: Entorno detectado -> Nativo (${this.devicePlatform || 'app'})`);\n return;\n }\n } catch (error) {\n console.warn('MODO Payment: No se pudo leer los parámetros de la ruta. Se continuará con la detección por User Agent.');\n }\n\n const userAgent = navigator.userAgent || navigator.vendor || (window as any).opera;\n if (/android/i.test(userAgent) || /iPad|iPhone|iPod/.test(userAgent)) {\n this.executionEnv = 'mobile-browser';\n console.log('MODO Payment: Entorno detectado -> Navegador Móvil');\n } else {\n this.executionEnv = 'desktop';\n console.log('MODO Payment: Entorno detectado -> Desktop');\n }\n }\n\n async startModoPayment(): Promise<void> {\n this.isLoading = true;\n\n try {\n const initialData = await this.createModoPayment();\n this.isLoading = false;\n\n switch (this.executionEnv) {\n case 'native-app':\n // Llama a la función nativa para abrir en un navegador externo\n this.openOnNativeNavigator(initialData.deeplink);\n break;\n case 'mobile-browser':\n // Abre el deeplink en una nueva pestaña\n window.open(initialData.deeplink, '_blank');\n break;\n case 'desktop':\n default:\n // Abrir el modal del SDK\n this.initModoSdkModal(initialData);\n break;\n }\n\n \n } catch (error) {\n this.isLoading = false;\n this.statusPay.emit({ success: false, paymentId: '' });\n console.error(\"Error al iniciar el pago con MODO\", error);\n }\n }\n\n private openOnNativeNavigator(url: string): void {\n try {\n if (this.devicePlatform === 'iOS') {\n (window as any).webkit.messageHandlers.externalURL.postMessage(url);\n } else if (this.devicePlatform === 'Android') {\n (window as any).externalURL.postMessage(url);\n } else {\n // Fallback si por alguna razón no se detectó la plataforma pero sí el entorno nativo\n window.open(url, '_blank');\n }\n } catch (e) {\n console.error('Error al intentar invocar el message handler nativo:', e);\n }\n }\n\n private initModoSdkModal(initialData: { qrString: string; checkoutId: string; deeplink: string }): void {\n\n const modalObject = {\n version: '2',\n qrString: initialData.qrString,\n checkoutId: initialData.checkoutId,\n deeplink: {\n url: initialData.deeplink,\n callbackURL: this.callbackUrl,\n callbackURLSuccess: this.callbackUrlSuccess\n },\n\n callbackURL: this.callbackUrl,\n\n refreshData: () => this.createModoPayment(),\n\n onSuccess: () => {\n this.statusPay.emit({ success: true, paymentId: initialData.checkoutId });\n },\n onFailure: () => {\n this.statusPay.emit({ success: false, paymentId: initialData.checkoutId });\n },\n onCancel: () => {\n console.log('Pago cancelado por el usuario en el celular.');\n },\n onClose: () => {\n console.log('Modal de MODO cerrado.');\n },\n };\n\n // 3. Inicia el SDK de MODO\n ModoSDK.modoInitPayment(modalObject);\n\n }\n\n\n private async createModoPayment(): Promise<{ qrString: string; checkoutId: string; deeplink: string }> {\n const paymentRequest: CreatePaymentRequest = {\n amount: this.amount,\n orderId: this.orderId,\n storeId: this.storeId,\n idVen: this.idVen,\n data: this.data\n };\n\n const response = await this.modoApi.createPayment(this.accessToken, paymentRequest, this.vkUrlApi).toPromise();\n\n if (response.success && response.data) {\n return {\n qrString: response.data.qrString,\n checkoutId: response.data.internalPaymentId,\n deeplink: response.data.deeplink\n };\n } else {\n throw new Error('La respuesta de la API no fue exitosa.');\n }\n }\n\n private loadModoScript(): void {\n const scriptUrl = 'https://ecommerce-modal.modo.com.ar/bundle.js';\n if (!document.querySelector(`script[src=\"${scriptUrl}\"]`)) {\n const script = document.createElement('script');\n script.src = scriptUrl;\n document.body.appendChild(script);\n }\n }\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { ModoComponent } from './components/modo/modo.component';\n\n@NgModule({\n declarations: [\n ModoComponent\n ],\n imports: [\n CommonModule,\n HttpClientModule\n ],\n exports: [\n ModoComponent\n ]\n})\nexport class ModoModule { }","import { NgModule } from '@angular/core';\n\nimport { MercadopagoModule } from './mercadopago/mercadopago.module';\nimport { PaypalModule } from './paypal/paypal.module';\nimport { SpsDecidirModule } from './sps-decidir/sps-decidir.module';\nimport { GoCuotasModule } from './go-cuotas/go-cuotas.module';\nimport { ModoModule } from './modo/modo.module';\n\nconst LIB_MODULES = [\n MercadopagoModule,\n SpsDecidirModule,\n PaypalModule,\n GoCuotasModule,\n ModoModule\n];\n\n@NgModule({\n imports: LIB_MODULES,\n exports: LIB_MODULES\n})\nexport class VkPaymentsModule { }\n"]}