{"version":3,"file":"main.028aa20a04ab30d5.js","mappings":"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","sources":["./projects/p2p-plugin/src/app/_models/common.model.ts","./projects/p2p-plugin/src/app/_models/p2p.service.model.ts","./projects/p2p-plugin/src/environments/environment.prod.ts","./projects/p2p-plugin/src/app/_models/request-form.model.ts","./projects/p2p-plugin/src/app/_helpers/HttpUtils.ts","./projects/p2p-plugin/src/app/_helpers/BlobUtils.ts","./projects/p2p-plugin/src/app/_services/p2p.service.ts","./projects/psp-plugin/src/environments/environment.ts","./projects/psp-plugin/src/app/_models/common.model.ts","./projects/p2p-plugin/src/app/_services/culture.shared.service.ts","./projects/p2p-plugin/src/app/components/request-form/request-form.component.ts","./projects/p2p-plugin/src/app/components/callback-page-from/callback-page-from.component.ts","./projects/p2p-plugin/src/app/components/result-page/result-page.component.ts","./projects/p2p-plugin/src/app/components/exception-page/exception-page.component.ts","./projects/p2p-plugin/src/app/app-routing.module.ts","./projects/p2p-plugin/src/app/app.component.ts","./projects/p2p-plugin/src/app/_helpers/jwt.interceptor.ts","./projects/p2p-plugin/src/app/_pipes/imgapi.pipe.ts","./projects/p2p-plugin/src/app/_pipes/imgsrc.pipe.ts","./projects/p2p-plugin/src/app/_pipes/pipes.module.ts","./projects/p2p-plugin/src/app/app.module.ts","./projects/p2p-plugin/src/main.ts","./projects/p2p-plugin/src/app/app.component.scss","webpack:///./projects/p2p-plugin/src/app/components/exception-page/exception-page.component.scss?6720"],"sourcesContent":["export enum PM_ACTIONS {\r\n //P2P\r\n P2P_START_IN = 'P2P-START-IN',\r\n P2P_INPROGRESS = 'P2P-INPROGRESS',\r\n P2P_NEW = 'P2P-NEW',\r\n P2P_PRINT = 'P2P-PRINT',\r\n P2P_EXCEPTION = 'P2P-EXCEPTION',\r\n P2P_EXCEPTION_RESPONSE = 'P2P-EXCEPTION-RESPONSE',\r\n P2P_WAITING_3DS = 'P2P-WAITING-3DS',\r\n //PSP\r\n PSP_VGS_LOADED = 'PSP-VGS-LOADED',\r\n PSP_READY = 'PSP-READY',\r\n PSP_VALIDATE_IN = 'PSP-VALIDATE-IN',\r\n PSP_VALIDATE_OUT = 'PSP-VALIDATE-OUT',\r\n //PSP_PREPARE_CHECKOUT = 'PSP-PREPARE-CHECKOUT',\r\n PSP_INIT_FIELDS = 'PSP-INIT-FIELDS',\r\n PSP_SUBMIT = 'PSP-SUBMIT',\r\n PSP_TOKENIZED = 'PSP-TOKENIZED',\r\n PSP_CONFIRM = 'PSP-CONFIRM',\r\n PSP_PREPARE_3DS = 'PSP-PREPARE-3DS',\r\n PSP_EXCEPTION = 'PSP-EXCEPTION',\r\n //reCAPTCHA v3\r\n P2P_RECAPTCHA_VERIFY = 'P2P-RECAPTCHA-VERIFY',\r\n P2P_RECAPTCHA_RESPONSE = 'P2P-RECAPTCHA-RESPONSE',\r\n}\r\n\r\nexport enum ERR_SERVER {\r\n FEE_EXCEPTION = 'REQFORM.ERR.SERVER.FEE_EXCEPTION',\r\n RECAPTCHA_EXCEPTION = 'REQFORM.ERR.SERVER.RECAPTCHA_EXCEPTION',\r\n}\r\n\r\nexport interface IServerError {\r\n field: string;\r\n error: ERR_SERVER;\r\n}\r\n\r\nexport const Langs: string[] = ['ro', 'ru'];\r\n\r\nexport function inIframe() {\r\n try {\r\n return window.self !== window.top;\r\n } catch (e) {\r\n return true;\r\n }\r\n}\r\n\r\nexport const FormControlKeyPress = (event, pattern): boolean => {\r\n const el = event.target;\r\n const val = event.target.value;\r\n const inp = String.fromCharCode(event.keyCode);\r\n if (val.length < el.maxLength && pattern.test(inp)) {\r\n return true;\r\n } else {\r\n event.preventDefault();\r\n return false;\r\n }\r\n};\r\n\r\nexport const FormControlPaste = (event: ClipboardEvent, pattern): boolean => {\r\n const val = event.clipboardData?.getData('text');\r\n if (pattern.test(val)) {\r\n return true;\r\n } else {\r\n event.preventDefault();\r\n return false;\r\n }\r\n};\r\n\r\nexport const AmountKeyPress = (event): boolean => {\r\n //console.log(event);\r\n //const el = event.target;\r\n const val = event.target.value;\r\n const inp = String.fromCharCode(event.keyCode);\r\n if (/^\\d*(?:[\\.\\,]\\d{2})?$/.test(val + inp)) {\r\n return true;\r\n } else {\r\n if (/^\\d*(?:[\\.\\,]\\d{0,2})?$/.test(val + inp)) {\r\n return true;\r\n } else {\r\n if (/^\\d*(?:[\\.\\,]\\d{1,2})?$/.test(val + inp)) {\r\n return true;\r\n } else if (/^(?:[\\.\\,]\\d{0,2})?$/.test(val + inp)) {\r\n return true;\r\n } else if (/^\\d*(?:[\\.\\,]\\d{2})?$/.test(val) && /^\\d$/.test(inp)) {\r\n return true;\r\n }\r\n }\r\n event.preventDefault();\r\n return false;\r\n }\r\n};\r\n\r\n// export const AmountOnInput = (event) => {\r\n// console.log(event);\r\n// const el = event.target;\r\n// let val = event.target.value;\r\n// // const inp = String.fromCharCode(event.keyCode);\r\n// if (\r\n// !/^\\d*(?:[\\.\\,]\\d{2})?$/.test(val) &&\r\n// nondigit_position(val) !== undefined\r\n// ) {\r\n// val = remove_character(val, nondigit_position(val));\r\n// }\r\n// el.value = val;\r\n// };\r\n\r\n// function nondigit_position(str) {\r\n// let pos;\r\n// for (let position = 0; position < str.length; position++) {\r\n// if (\r\n// str.charAt(position) !== '0' &&\r\n// str.charAt(position) !== '1' &&\r\n// str.charAt(position) !== '2' &&\r\n// str.charAt(position) !== '3' &&\r\n// str.charAt(position) !== '4' &&\r\n// str.charAt(position) !== '5' &&\r\n// str.charAt(position) !== '6' &&\r\n// str.charAt(position) !== '7' &&\r\n// str.charAt(position) !== '8' &&\r\n// str.charAt(position) !== '9' &&\r\n// str.charAt(position) !== ',' &&\r\n// str.charAt(position) !== '.'\r\n// ) {\r\n// pos = position;\r\n// }\r\n// }\r\n// return pos;\r\n// }\r\n\r\n// function remove_character(str, char_pos) {\r\n// const part1 = str.substring(0, char_pos);\r\n// const part2 = str.substring(char_pos + 1, str.length);\r\n// return part1 + part2;\r\n// }\r\n\r\nexport function AmountGetString(pAmount): string {\r\n return evenRound(parseFloat((pAmount / 100).toString())).toFixed(2);\r\n}\r\nexport function AmountGetAsLong(amountStr) {\r\n amountStr = ['', ',', '.'].includes(amountStr) ? '0.00' : amountStr;\r\n amountStr = amountStr.replace(',', '.');\r\n var amountRaw = parseFloat(amountStr).toFixed(2);\r\n return parseInt(evenRound(Number(amountRaw) * 100).toString());\r\n}\r\nexport function FormatAmountString(pAmount): string {\r\n const intl = Intl.NumberFormat('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n });\r\n\r\n return intl.format(pAmount);\r\n}\r\nfunction evenRound(num, decimalPlaces = 2) {\r\n var d = decimalPlaces || 0;\r\n var m = Math.pow(10, d);\r\n var n = +(d ? num * m : num).toFixed(8); // Avoid rounding errors\r\n var i = Math.floor(n),\r\n f = n - i;\r\n var e = 1e-8; // Allow for rounding errors in f\r\n var r = f > 0.5 - e && f < 0.5 + e ? (i % 2 == 0 ? i : i + 1) : Math.round(n);\r\n return d ? r / m : r;\r\n}\r\n\r\nexport const FormatDateTime = (culture: string, date: Date): string => {\r\n return `${date\r\n .toLocaleString(culture, {\r\n month: 'short',\r\n })\r\n .slice(0, 3)} ${date.toLocaleString(culture, {\r\n day: '2-digit',\r\n })} ${date.toLocaleString(culture, {\r\n year: 'numeric',\r\n })} ${date.toLocaleString(culture, {\r\n hour12: false,\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n })}`;\r\n};\r\n","import { CultureSharedService } from './../_services/culture.shared.service';\r\nimport {\r\n AmountGetAsLong,\r\n AmountGetString,\r\n FormatAmountString,\r\n FormatDateTime,\r\n} from './common.model';\r\n\r\nexport interface ISaveRequestIN {\r\n SenderCardType: string;\r\n SenderCardBin: string;\r\n SenderCardLast4: string;\r\n SenderCardHolderName: string;\r\n SenderAddress: string;\r\n SenderLocation: string;\r\n ReceiverCardType: string;\r\n ReceiverCardBin: string;\r\n ReceiverCardLast4: string;\r\n ReceiverCardHolderName: string;\r\n CurrencyID: number;\r\n Amount: number;\r\n AmountTotal?: number;\r\n Totals?: number;\r\n}\r\n\r\nexport class SaveRequest implements ISaveRequestIN {\r\n SenderCardType: string;\r\n SenderCardBin: string;\r\n SenderCardLast4: string;\r\n SenderCardHolderName: string;\r\n SenderAddress: string;\r\n SenderLocation: string;\r\n ReceiverCardType: string;\r\n ReceiverCardBin: string;\r\n ReceiverCardLast4: string;\r\n ReceiverCardHolderName: string;\r\n CurrencyID: number;\r\n Amount: number;\r\n AmountTotal: number;\r\n\r\n constructor(formData: ISaveRequestIN) {\r\n this.SenderCardType = formData.SenderCardType;\r\n this.SenderCardBin = formData.SenderCardBin;\r\n this.SenderCardLast4 = formData.SenderCardLast4;\r\n this.SenderCardHolderName = formData.SenderCardHolderName;\r\n this.SenderAddress = formData.SenderAddress;\r\n this.SenderLocation = formData.SenderLocation;\r\n this.ReceiverCardType = formData.ReceiverCardType;\r\n this.ReceiverCardBin = formData.ReceiverCardBin;\r\n this.ReceiverCardLast4 = formData.ReceiverCardLast4;\r\n this.ReceiverCardHolderName = formData.ReceiverCardHolderName;\r\n this.CurrencyID = formData.CurrencyID;\r\n this.Amount = AmountGetAsLong(formData.Amount);\r\n this.AmountTotal = AmountGetAsLong(formData.Totals);\r\n }\r\n}\r\n\r\ninterface ISaveRequestTokenBox {\r\n formFieldCode: string;\r\n tokenBoxKey: string;\r\n}\r\n\r\nexport interface ISaveRequestOUT {\r\n transferOrderKey: string;\r\n associatedTokenBoxKeys: ISaveRequestTokenBox[];\r\n}\r\n\r\nexport interface IRecalculateAmountIN {\r\n amount: number;\r\n senderCardBin: string;\r\n receiverCardBin: string;\r\n currencyId: number;\r\n}\r\n\r\nexport interface IRecalculateAmountOUT {\r\n comission: number;\r\n amountTotal: number;\r\n}\r\n\r\nexport interface IPSPSubmitOUT {\r\n SenderCardExpiryDate: string;\r\n}\r\n\r\nexport interface IInitPaymentIN {\r\n transferOrderKey: string;\r\n}\r\n\r\nexport class InitPaymentIN implements IInitPaymentIN {\r\n transferOrderKey: string;\r\n backUrlTemplate: string;\r\n browserJson: string;\r\n\r\n constructor(IN: IInitPaymentIN) {\r\n this.transferOrderKey = IN.transferOrderKey;\r\n this.backUrlTemplate = `https://${window.location.host}/callback-page-from/{transferPayment.Key}/{checkout.Key}/{authToken}`;\r\n this.browserJson = JSON.stringify({\r\n userAgent: navigator.userAgent,\r\n colorDepth: screen.colorDepth,\r\n screenHeight: screen.height,\r\n screenWidth: screen.width,\r\n javaEnabled: !!navigator?.javaEnabled(),\r\n browserLanguage: navigator.language,\r\n browserTimeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,\r\n browserTimeZoneOffset: new Date().getTimezoneOffset(),\r\n browserAcceptHeader: '',\r\n browserIpAddress: '',\r\n javascriptEnabled: true,\r\n });\r\n }\r\n}\r\n\r\nexport interface IInitPaymentOUT {\r\n transferPaymentKey: string;\r\n checkoutKey: string;\r\n p2psessionKey: string;\r\n}\r\n\r\nexport interface IGetDetailsIN {\r\n paymentKey: string;\r\n checkoutKey: string;\r\n p2psessionKey: string;\r\n currentLang?: string;\r\n}\r\n\r\ninterface IFile {\r\n fileContents: string;\r\n blob: Blob;\r\n}\r\nexport interface IGetDetailsPdfOUT {\r\n file: IFile;\r\n}\r\n\r\nexport interface IGetDetailsOUT {\r\n requestId: string;\r\n paymentId: string;\r\n operationType: string;\r\n serviceProvider: string;\r\n senderCardholderName: string;\r\n senderCard: string;\r\n receiverCardholderName: string;\r\n receiverCard: string;\r\n accountingOperationId: string;\r\n rrn: string;\r\n approvalCode: string;\r\n paidDate: string;\r\n amountTransfer: number;\r\n commission: number;\r\n amountTotal: number;\r\n currency: string;\r\n status: number;\r\n statusDesc: string;\r\n error: string;\r\n}\r\n\r\nexport enum Status {\r\n SUCCESS = 'SUCCESS',\r\n FAILED = 'FAILED',\r\n INPROGRESS = 'INPROGRESS',\r\n UNKNOWN = 'UNKNOWN',\r\n}\r\n\r\nconst CSS_Status_MAP = [\r\n {\r\n status: Status.SUCCESS,\r\n color: 'green',\r\n },\r\n {\r\n status: Status.FAILED,\r\n color: 'red',\r\n },\r\n {\r\n status: Status.INPROGRESS,\r\n color: 'gold',\r\n },\r\n {\r\n status: Status.UNKNOWN,\r\n color: 'red',\r\n },\r\n];\r\n\r\nconst getStatus = (val: number): Status => {\r\n val = isNaN(val) ? -1 : val;\r\n return val === 0\r\n ? Status.INPROGRESS\r\n : val === 1\r\n ? Status.SUCCESS\r\n : val === 2\r\n ? Status.FAILED\r\n : Status.UNKNOWN;\r\n};\r\n\r\nexport class GetDetailsOUT {\r\n RES_Status_TRANSLATE: string;\r\n CSS_Status_H4: string;\r\n SRC_Status_IMG: string;\r\n Status: Status;\r\n ErrorCode: string;\r\n OperationType: string;\r\n ServiceIssuer: string;\r\n SenderName: string;\r\n SenderCardNr: string;\r\n ReceiverName: string;\r\n ReceiverCardNr: string;\r\n OperationID: string;\r\n CodeAuth: string;\r\n RRN: string;\r\n TransferDate: string;\r\n TransferAmount: string;\r\n Fee: string;\r\n Total: string;\r\n\r\n constructor(core?: IGetDetailsOUT, currentLang?: string) {\r\n if (!!core) {\r\n console.log('IGetDetailsOUT: ', core);\r\n this.Status = getStatus(core.status);\r\n this.CSS_Status_H4 = `text-${CSS_Status_MAP.find((x) => x.status === this.Status).color\r\n }`;\r\n this.RES_Status_TRANSLATE = `RESULTPAGE.H4.OPERATION.${this.Status}`;\r\n this.SRC_Status_IMG = `RESULTPAGE.IMG.${this.Status}`;\r\n this.ErrorCode = core.error;\r\n this.OperationType = core.operationType;\r\n this.ServiceIssuer = core.serviceProvider;\r\n this.SenderName = core.senderCardholderName;\r\n this.SenderCardNr = core.senderCard;\r\n this.ReceiverName = core.receiverCardholderName;\r\n this.ReceiverCardNr = core.receiverCard;\r\n this.OperationID = core.paymentId;\r\n this.RRN = core.rrn;\r\n this.CodeAuth = core.approvalCode;\r\n this.TransferDate = core.paidDate\r\n ? FormatDateTime(\r\n currentLang,\r\n new Date(core.paidDate)\r\n )\r\n : '';\r\n\r\n this.TransferAmount = `${FormatAmountString(\r\n AmountGetString(core.amountTransfer)\r\n )} ${core.currency}`;\r\n this.Fee = `${FormatAmountString(AmountGetString(core.commission))} ${core.currency\r\n }`;\r\n this.Total = `${FormatAmountString(AmountGetString(core.amountTotal))} ${core.currency\r\n }`;\r\n }\r\n }\r\n}\r\n\r\nexport class OplataPrintField {\r\n Key: string;\r\n Name: string;\r\n Value: string;\r\n constructor(IN) { }\r\n}\r\n\r\nexport class GetPrintOUT {\r\n Fields: OplataPrintField[];\r\n}\r\n\r\nexport interface IGetExceptionIN {\r\n exceptionCode: string;\r\n exceptionMessage: string;\r\n}\r\n\r\nexport interface IGetExceptionOUT {\r\n exceptionCode: string;\r\n exceptionMessage: string;\r\n}\r\nexport class GetExceptionOUT {\r\n SRC_IMG: string;\r\n ErrorCode: string;\r\n ErrorMessage: string;\r\n\r\n constructor(core?: IGetExceptionOUT) {\r\n this.ErrorCode = core.exceptionCode;\r\n // this.ErrorMessage = `EXCEPTIONPAGE.H4.MESSAGE.${core.exceptionCode}`;\r\n this.ErrorMessage = core.exceptionMessage;\r\n this.SRC_IMG = `EXCEPTIONPAGE.IMG`;\r\n }\r\n}\r\n","export const environment = {\n production: true,\n apiUrl: 'https://p2p-api.paynet.md',\n oplatamdURL: 'https://oplata.md',\n pspURL: 'https://psp.paynet.md',\n RECAPTCHA_SITE_KEY: '6LeIbRUnAAAAAPtndZrRUndlAaxbNZQnj3RQRIEG',\n};\n","import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\nimport { environment } from '../../environments/environment';\r\nimport { FormControl, Validators } from '@angular/forms';\r\n\r\nexport const Currencies = [\r\n {\r\n Code: 'MDL',\r\n Num: 498,\r\n },\r\n // {\r\n // Code: 'EUR',\r\n // Num: 978,\r\n // },\r\n // {\r\n // Code: 'USD',\r\n // Num: 840,\r\n // },\r\n];\r\n\r\nexport const CurrencyLimits: ICurrencyLimit[] = [\r\n {\r\n currencyId: 498,\r\n min: 10000,\r\n max: 2000000,\r\n },\r\n {\r\n currencyId: 840,\r\n min: 2000,\r\n max: 200000,\r\n },\r\n {\r\n currencyId: 978,\r\n min: 2000,\r\n max: 200000,\r\n },\r\n];\r\n\r\nexport interface ICurrencyLimit {\r\n currencyId: number;\r\n min: number;\r\n max: number;\r\n}\r\n\r\nexport class CurrencyLimit implements ICurrencyLimit {\r\n currencyId: number;\r\n min: number;\r\n max: number;\r\n\r\n constructor(currency) {\r\n this.currencyId = currency.currencyId;\r\n this.min = currency.min;\r\n this.max = currency.max;\r\n }\r\n}\r\n\r\nexport interface ICurrency {\r\n Code: string;\r\n Num: number;\r\n}\r\n\r\nexport class Currency implements ICurrency {\r\n Code: string;\r\n Num: number;\r\n\r\n constructor(currency) {\r\n this.Code = currency.code;\r\n this.Num = currency.num;\r\n }\r\n}\r\n\r\nexport enum IValidationType {\r\n required = 'required',\r\n minlength = 'minlength',\r\n maxlength = 'maxlength',\r\n min = 'min',\r\n max = 'max',\r\n regexp = 'regexp',\r\n}\r\n\r\ninterface IValidation {\r\n Type: IValidationType;\r\n Error: string;\r\n}\r\n\r\nexport class Validation implements IValidation {\r\n Type: IValidationType;\r\n Error: string;\r\n\r\n constructor(coreModel: any) {\r\n this.Type = coreModel.type;\r\n this.Error = coreModel.error;\r\n }\r\n}\r\n\r\ninterface IFormFields {\r\n ID: string;\r\n Label: string;\r\n Name: string;\r\n Placeholder: string;\r\n Required: boolean;\r\n Type: string;\r\n Validation: IValidation[];\r\n Value: string;\r\n}\r\n\r\nexport class FormField implements IFormFields {\r\n ID: string;\r\n Label: string;\r\n Name: string;\r\n Placeholder: string;\r\n Required: boolean;\r\n Readonly?: boolean;\r\n AutoComplete?: string;\r\n Type: string;\r\n Validation: Validation[] = [];\r\n Value: string;\r\n MaxLength?: number = null;\r\n HasFormControlValidation: boolean;\r\n FormControl?: FormControl;\r\n\r\n mapError(ctrlerrors) {\r\n //console.log(ctrlerrors);\r\n const validation = this.Validation.find(\r\n (x) => !!ctrlerrors && x.Type === Object.keys(ctrlerrors)[0]\r\n );\r\n return validation?.Error ?? '';\r\n }\r\n\r\n constructor(field: any) {\r\n this.ID = field.id;\r\n this.Label = field.label;\r\n this.Name = field.name;\r\n this.Placeholder = field.placeholder;\r\n this.AutoComplete = field.autocomplete;\r\n this.Required = field.required;\r\n this.Readonly = field?.readonly;\r\n this.Type = field.type;\r\n this.Value = field.value;\r\n\r\n if (field.validation.length > 0) {\r\n field.validation.forEach((element) => {\r\n this.Validation.push(new Validation(element));\r\n });\r\n }\r\n this.Value = field.value;\r\n this.HasFormControlValidation = !!field?.validators;\r\n this.FormControl = new FormControl(this.Value);\r\n if (!!this.HasFormControlValidation) {\r\n const validators = [\r\n ...(field?.validators?.required ? [Validators.required] : []),\r\n ...(field?.validators?.min\r\n ? [Validators.min(field.validators.min)]\r\n : []),\r\n ...(field?.validators?.max\r\n ? [Validators.max(field.validators.max)]\r\n : []),\r\n ...(field?.validators?.minlength\r\n ? [Validators.minLength(field.validators.minlength)]\r\n : []),\r\n ...(field?.validators?.maxlength\r\n ? [Validators.maxLength(field.validators.maxlength)]\r\n : []),\r\n ...(field?.validators?.pattern\r\n ? [Validators.pattern(field.validators.pattern)]\r\n : []),\r\n ];\r\n this.MaxLength = field?.validators?.maxlength;\r\n //console.log('validators: ', validators);\r\n this.FormControl.setValidators(validators);\r\n }\r\n }\r\n}\r\n\r\nexport class SanitizedSRC {\r\n IFRAMESenderBlock: SafeResourceUrl;\r\n IFRAMEReceiverBlockCardNr: SafeResourceUrl;\r\n IFRAMECallBackPageTO: SafeResourceUrl;\r\n LINKOplataMdTerms: SafeResourceUrl;\r\n constructor(language: string, private sanitizer: DomSanitizer) {\r\n this.IFRAMESenderBlock = this.sanitizer.bypassSecurityTrustResourceUrl(\r\n `${\r\n environment.pspURL\r\n }/p2p/sender-block/${language}?cachebust=${Math.random().toFixed(8)}`\r\n );\r\n this.IFRAMEReceiverBlockCardNr =\r\n this.sanitizer.bypassSecurityTrustResourceUrl(\r\n `${\r\n environment.pspURL\r\n }/p2p/receiver-cardnr/${language}?cachebust=${Math.random().toFixed(8)}`\r\n );\r\n this.IFRAMECallBackPageTO = this.sanitizer.bypassSecurityTrustResourceUrl(\r\n `${environment.pspURL}/callback-page-to?cachebust=${Math.random().toFixed(\r\n 8\r\n )}`\r\n );\r\n this.LINKOplataMdTerms = this.sanitizer.bypassSecurityTrustResourceUrl(\r\n `${environment.oplatamdURL}/terms`\r\n );\r\n }\r\n}\r\n","import { HttpParams } from '@angular/common/http';\n\nexport default class HttpClientUtils {\n private static primitives: string[] = [\n 'string',\n 'number',\n 'boolean',\n 'symbol',\n 'bigint',\n ];\n\n private static isBuffer(obj: any): boolean {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj?.constructor?.isBuffer && obj.constructor.isBuffer(obj));\n }\n\n private static toKeyValuePairs(prefix: string, obj: any): any {\n if (obj === null) {\n obj = '';\n } else if (obj instanceof Date) {\n obj = obj.toISOString();\n }\n\n if (this.primitives.includes(typeof obj) || this.isBuffer(obj)) {\n return [\n {\n key: prefix,\n value: String(obj),\n },\n ];\n }\n\n // skip undefined values\n if (typeof obj === 'undefined') {\n return [];\n }\n\n const keys = Object.keys(obj);\n const pairs = keys.map((key) => {\n const keyPrefix = prefix + (Array.isArray(obj) ? `[${key}]` : `.${key}`);\n return this.toKeyValuePairs(keyPrefix, obj[key]);\n });\n\n // [[pair], [pair], [pair]] => [pair, pair, pair]\n return pairs.reduce((accumulator, value) => accumulator.concat(value), []);\n }\n\n static toHttpParams(obj: object): HttpParams {\n const keys = Object.keys(obj);\n const pairs = [];\n\n for (const key of keys) {\n const keyPairs = this.toKeyValuePairs(key, obj[key]);\n pairs.push(...keyPairs);\n }\n\n return pairs.reduce(\n (params, pair) => params.append(pair.key, pair.value),\n new HttpParams()\n );\n }\n}\n","export function blobToBase64(blob) {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onloadend = () => {\r\n const base64String = reader.result;\r\n resolve(base64String);\r\n };\r\n reader.onerror = reject;\r\n reader.readAsDataURL(blob);\r\n });\r\n}\r\n\r\nexport function DetectMimeType(base64String) {\r\n const decodedData = atob(base64String);\r\n const arrayBuffer = new ArrayBuffer(decodedData.length);\r\n const uint8Array = new Uint8Array(arrayBuffer);\r\n\r\n for (let i = 0; i < decodedData.length; i++) {\r\n uint8Array[i] = decodedData.charCodeAt(i);\r\n }\r\n\r\n const imageFormat = getImageFormat(uint8Array);\r\n console.log('imageFormat: ', imageFormat);\r\n return imageFormat;\r\n}\r\n\r\nconst ImageHeaderData = {\r\n PNG: [0x89],\r\n JPEG: [0xff],\r\n PDF: [0x25],\r\n GIF: [0x47],\r\n TIFF_01: [0x49],\r\n TIFF_02: [0x4d],\r\n};\r\n\r\nconst ImageFormat = {\r\n Unknown: 'Unknown',\r\n PNG: 'image/png',\r\n JPEG: 'image/jpeg',\r\n GIF: 'image/gif',\r\n TIFF: 'image/tiff',\r\n PDF: 'application/pdf',\r\n};\r\n\r\nfunction getImageFormat(data) {\r\n const buffer = new Uint8Array(data.slice(0, 1));\r\n\r\n if (compareBuffers(buffer, ImageHeaderData.PNG)) {\r\n return ImageFormat.PNG;\r\n } else if (compareBuffers(buffer, ImageHeaderData.JPEG)) {\r\n return ImageFormat.JPEG;\r\n } else if (compareBuffers(buffer, ImageHeaderData.GIF)) {\r\n return ImageFormat.GIF;\r\n } else if (compareBuffers(buffer, ImageHeaderData.PDF)) {\r\n return ImageFormat.PDF;\r\n } else if (\r\n compareBuffers(buffer, ImageHeaderData.TIFF_01) ||\r\n compareBuffers(buffer, ImageHeaderData.TIFF_02)\r\n ) {\r\n return ImageFormat.TIFF;\r\n } else {\r\n return ImageFormat.Unknown;\r\n }\r\n}\r\n\r\nfunction compareBuffers(buffer1, buffer2) {\r\n if (buffer1.length !== buffer2.length) {\r\n return false;\r\n }\r\n\r\n for (let i = 0; i < buffer1.length; i++) {\r\n if (buffer1[i] !== buffer2[i]) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { environment } from '../../environments/environment';\r\nimport { Observable, catchError, from, map, switchMap, throwError } from 'rxjs';\r\nimport {\r\n GetDetailsOUT,\r\n GetExceptionOUT,\r\n GetPrintOUT,\r\n IGetDetailsIN,\r\n IGetDetailsOUT,\r\n IGetDetailsPdfOUT,\r\n IGetExceptionIN,\r\n IInitPaymentIN,\r\n IInitPaymentOUT,\r\n IRecalculateAmountIN,\r\n IRecalculateAmountOUT,\r\n ISaveRequestIN,\r\n ISaveRequestOUT,\r\n InitPaymentIN,\r\n Status,\r\n} from '../_models/p2p.service.model';\r\nimport {\r\n Currencies,\r\n Currency,\r\n CurrencyLimit,\r\n CurrencyLimits,\r\n FormField,\r\n ICurrencyLimit,\r\n} from '../_models/request-form.model';\r\nimport HttpClientUtils from '../_helpers/HttpUtils';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { DetectMimeType } from '../_helpers/BlobUtils';\r\n\r\nconst mockFields = [\r\n {\r\n id: 'SenderCardHolderName',\r\n value: null,\r\n name: 'SenderCardHolderName',\r\n type: 'text',\r\n required: true,\r\n placeholder: 'REQFORM.PLH.SENDERCARDHOLDERNAME',\r\n autocomplete: 'cc-name',\r\n validation: [\r\n {\r\n type: 'required',\r\n error: 'REQFORM.ERR.REQ.SENDERCARDHOLDERNAME',\r\n },\r\n {\r\n type: 'minlength',\r\n error: 'REQFORM.ERR.REGEXP.SENDERCARDHOLDERNAME',\r\n },\r\n {\r\n type: 'maxlength',\r\n error: 'REQFORM.ERR.REGEXP.SENDERCARDHOLDERNAME',\r\n },\r\n {\r\n type: 'pattern',\r\n error: 'REQFORM.ERR.REGEXP.SENDERCARDHOLDERNAME',\r\n },\r\n ],\r\n validators: {\r\n required: true,\r\n minlength: 7,\r\n maxlength: 100,\r\n pattern: '[a-zA-Z]+(?:[-][a-zA-Z]+)* [a-zA-Z]+(?:[-][a-zA-Z]+)*$',\r\n },\r\n label: 'REQFORM.LBL.SENDERCARDHOLDERNAME',\r\n },\r\n {\r\n id: 'SenderAddress',\r\n value: null,\r\n name: 'SenderAddress',\r\n required: true,\r\n type: 'text',\r\n placeholder: 'REQFORM.PLH.SENDERADDRESS',\r\n autocomplete: 'street-address',\r\n validation: [\r\n {\r\n type: 'required',\r\n error: 'REQFORM.ERR.REQ.SENDERADDRESS',\r\n },\r\n {\r\n type: 'minlength',\r\n error: 'REQFORM.ERR.REGEXP.SENDERADDRESS',\r\n },\r\n {\r\n type: 'maxlength',\r\n error: 'REQFORM.ERR.REGEXP.SENDERADDRESS',\r\n },\r\n ],\r\n validators: {\r\n required: true,\r\n minlength: 3,\r\n maxlength: 100,\r\n },\r\n label: 'REQFORM.LBL.SENDERADDRESS',\r\n },\r\n {\r\n id: 'SenderLocation',\r\n value: null,\r\n name: 'SenderLocation',\r\n required: true,\r\n type: 'text',\r\n placeholder: 'REQFORM.PLH.SENDERLOCATION',\r\n autocomplete: 'address-level2',\r\n validation: [\r\n {\r\n type: 'required',\r\n error: 'REQFORM.ERR.REQ.SENDERLOCATION',\r\n },\r\n {\r\n type: 'minlength',\r\n error: 'REQFORM.ERR.REGEXP.SENDERLOCATION',\r\n },\r\n {\r\n type: 'maxlength',\r\n error: 'REQFORM.ERR.REGEXP.SENDERLOCATION',\r\n },\r\n ],\r\n validators: {\r\n required: true,\r\n minlength: 3,\r\n maxlength: 100,\r\n },\r\n label: 'REQFORM.LBL.SENDERLOCATION',\r\n },\r\n {\r\n id: 'ReceiverCardHolderName',\r\n value: null,\r\n name: 'ReceiverCardHolderName',\r\n required: true,\r\n type: 'text',\r\n placeholder: 'REQFORM.PLH.RECEIVERCARDHOLDERNAME',\r\n autocomplete: 'cc-name',\r\n validation: [\r\n {\r\n type: 'required',\r\n error: 'REQFORM.ERR.REQ.RECEIVERCARDHOLDERNAME',\r\n },\r\n {\r\n type: 'minlength',\r\n error: 'REQFORM.ERR.REGEXP.RECEIVERCARDHOLDERNAME',\r\n },\r\n {\r\n type: 'maxlength',\r\n error: 'REQFORM.ERR.REGEXP.RECEIVERCARDHOLDERNAME',\r\n },\r\n {\r\n type: 'pattern',\r\n error: 'REQFORM.ERR.REGEXP.RECEIVERCARDHOLDERNAME',\r\n },\r\n ],\r\n validators: {\r\n required: true,\r\n minlength: 7,\r\n maxlength: 100,\r\n pattern: '[a-zA-Z]+(?:[-][a-zA-Z]+)* [a-zA-Z]+(?:[-][a-zA-Z]+)*$',\r\n },\r\n label: 'REQFORM.LBL.RECEIVERCARDHOLDERNAME',\r\n },\r\n {\r\n id: 'SenderCardNr',\r\n name: 'SenderCardNr',\r\n type: 'card-number',\r\n placeholder: 'P2P.SENDERBLOCK.PLH.CARDNR',\r\n validations: ['required', 'validCardNumber', 'validCardNumberLuhnCheck'],\r\n autoComplete: 'cc-number',\r\n validCardBrands: [\r\n {\r\n type: 'mastercard',\r\n },\r\n ],\r\n label: 'P2P.SENDERBLOCK.LBL.CARDNR',\r\n },\r\n {\r\n id: 'SenderCardCVV',\r\n name: 'SenderCardCVV',\r\n type: 'card-security-code',\r\n placeholder: 'P2P.SENDERBLOCK.PLH.CVV',\r\n validations: ['required', 'validCardSecurityCode'],\r\n autoComplete: 'cc-csc',\r\n label: 'P2P.SENDERBLOCK.LBL.CVV',\r\n },\r\n {\r\n id: 'SenderCardExpDate',\r\n name: 'SenderCardExpDate',\r\n type: 'card-expiration-date',\r\n placeholder: 'P2P.SENDERBLOCK.PLH.CARDEXP',\r\n validations: ['required', 'validCardExpirationDate'],\r\n yearLength: 2,\r\n autoComplete: 'cc-exp',\r\n label: 'P2P.SENDERBLOCK.LBL.CARDEXP',\r\n },\r\n {\r\n id: 'ReceiverCardNr',\r\n name: 'ReceiverCardNr',\r\n type: 'card-number',\r\n placeholder: 'P2P.RECEIVERBLOCK.PLH.CARDNR',\r\n validations: ['required', 'validCardNumber', 'validCardNumberLuhnCheck'],\r\n autoComplete: 'cc-number',\r\n validCardBrands: [\r\n {\r\n type: 'mastercard',\r\n },\r\n ],\r\n label: 'P2P.RECEIVERBLOCK.LBL.CARDNR',\r\n },\r\n {\r\n id: 'Amount',\r\n value: null,\r\n name: 'Amount',\r\n type: 'text',\r\n required: true,\r\n placeholder: 'REQFORM.PLH.AMOUNT',\r\n validation: [\r\n {\r\n type: 'required',\r\n error: 'REQFORM.ERR.REQ.AMOUNT',\r\n },\r\n {\r\n type: 'min',\r\n error: 'REQFORM.ERR.MIN.AMOUNT',\r\n },\r\n {\r\n type: 'max',\r\n error: 'REQFORM.ERR.MAX.AMOUNT',\r\n },\r\n ],\r\n validators: {\r\n required: true,\r\n minlength: 5,\r\n maxlength: 8,\r\n min: 10,\r\n max: 20000,\r\n },\r\n label: 'REQFORM.LBL.AMOUNT',\r\n },\r\n {\r\n id: 'Fee',\r\n name: 'Fee',\r\n type: 'text',\r\n required: true,\r\n readonly: true,\r\n placeholder: 'REQFORM.PLH.FEE',\r\n validation: [],\r\n label: 'REQFORM.LBL.FEE',\r\n },\r\n {\r\n id: 'Totals',\r\n name: 'Totals',\r\n type: 'text',\r\n required: true,\r\n readonly: true,\r\n placeholder: 'REQFORM.PLH.TOTALS',\r\n validation: [],\r\n label: 'REQFORM.LBL.TOTALS',\r\n },\r\n];\r\n\r\nconst SenderSimpleFieldsArr = [\r\n 'SenderCardHolderName',\r\n 'SenderAddress',\r\n 'SenderLocation',\r\n];\r\nconst ReceiverSimpleFieldsArr = ['ReceiverCardHolderName'];\r\nconst AmountSimpleFieldsArr = ['Amount', 'Fee', 'Totals'];\r\nconst VGSFieldsArr = [\r\n 'SenderCardNr',\r\n 'SenderCardCVV',\r\n 'SenderCardExpDate',\r\n 'ReceiverCardNr',\r\n];\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class P2PService {\r\n private P2P_KEY_TOKEN: string;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private translateService: TranslateService\r\n ) {}\r\n\r\n getFormFields(OplatamdObject) {\r\n return this.http\r\n .post(`api/p2p/transfer/getform`, {\r\n externalDateTime: OplatamdObject.Data.RequestDate,\r\n ip: OplatamdObject.Data.IPAddress,\r\n userAgent: OplatamdObject.Data.UserAgent,\r\n externalReference: OplatamdObject.Data.ExternalId,\r\n signature: OplatamdObject.Signature,\r\n domainOrigin: OplatamdObject.Data.Origin,\r\n })\r\n .pipe(\r\n map((response) => {\r\n let fields = response.fields.map((x) => JSON.parse(x));\r\n /*MOCKK!!*/\r\n //fields = mockFields;\r\n /*MOCKK!!*/\r\n const DDCurrencies = response.currencies\r\n .map((x) => new Currency(x))\r\n .filter((x) => Currencies.map((y) => y.Code).includes(x.Code));\r\n\r\n const SenderSimpleFields = fields\r\n .filter((f) => SenderSimpleFieldsArr.includes(f.id))\r\n ?.map((x) => new FormField(x));\r\n\r\n const ReceiverSimpleFields = fields\r\n .filter((f) => ReceiverSimpleFieldsArr.includes(f.id))\r\n ?.map((x) => new FormField(x));\r\n\r\n const AmountSimpleFields = fields\r\n .filter((f) => AmountSimpleFieldsArr.includes(f.id))\r\n ?.map((x) => new FormField(x));\r\n\r\n const ArrCurrencyLimits: ICurrencyLimit[] = [];\r\n\r\n CurrencyLimits.forEach((x: ICurrencyLimit) => {\r\n const corelimit = response?.currencyLimits?.find(\r\n (y) => y.currencyId === x.currencyId\r\n );\r\n ArrCurrencyLimits.push(\r\n new CurrencyLimit(!!corelimit ? corelimit : x)\r\n );\r\n });\r\n\r\n // .filter((x) => !!x.currencyId)\r\n // .filter((x) =>\r\n // CurrencyLimits.map((y) => y.currencyId).includes(x.currencyId)\r\n // );\r\n\r\n const VGSFields = fields.filter((f) => VGSFieldsArr.includes(f.id));\r\n\r\n this.P2P_KEY_TOKEN = response.tokenKey;\r\n\r\n console.log('SenderSimpleFields: ', SenderSimpleFields);\r\n console.log('ReceiverSimpleFields: ', ReceiverSimpleFields);\r\n console.log('AmountSimpleFields: ', AmountSimpleFields);\r\n console.log('VGSFields: ', VGSFields);\r\n\r\n return {\r\n SenderSimpleFields,\r\n ReceiverSimpleFields,\r\n AmountSimpleFields,\r\n VGSFields,\r\n DDCurrencies,\r\n ArrCurrencyLimits,\r\n };\r\n })\r\n );\r\n }\r\n\r\n recalculateAmount(IN: IRecalculateAmountIN) {\r\n const params = HttpClientUtils.toHttpParams(IN);\r\n return this.http\r\n .get(`api/p2p/transfer/getcalculatedfee`, {\r\n headers: {\r\n p2p_token_key: this.P2P_KEY_TOKEN,\r\n },\r\n params,\r\n })\r\n .pipe(\r\n map((response: IRecalculateAmountOUT) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n console.log('Error (transfer/getcalculatedfee): ', error.message);\r\n return throwError(() => error);\r\n })\r\n );\r\n }\r\n\r\n saveRequest(IN: ISaveRequestIN) {\r\n let data = [];\r\n for (let key in IN) {\r\n data.push({\r\n key: key,\r\n value: IN[key].toString(),\r\n });\r\n }\r\n return this.http\r\n .post(\r\n `api/p2p/transfer/registerorder`,\r\n {\r\n data,\r\n },\r\n {\r\n headers: {\r\n p2p_token_key: this.P2P_KEY_TOKEN,\r\n },\r\n }\r\n )\r\n .pipe(\r\n map((response: ISaveRequestOUT) => {\r\n //console.log('registerorder response: ', response);\r\n return response;\r\n }),\r\n catchError((error) => {\r\n console.log('Error (transfer/registerorder): ', error.message);\r\n return throwError(() => error);\r\n })\r\n );\r\n }\r\n\r\n initPayment(IN: IInitPaymentIN) {\r\n IN = new InitPaymentIN(IN);\r\n\r\n return this.http\r\n .post(`api/p2p/transfer/initpayment`, IN, {\r\n headers: {\r\n p2p_token_key: this.P2P_KEY_TOKEN,\r\n },\r\n })\r\n .pipe(\r\n map((response: IInitPaymentOUT) => {\r\n response.p2psessionKey = this.P2P_KEY_TOKEN;\r\n return response;\r\n }),\r\n catchError((error) => {\r\n console.log('Error (transfer/initpayment): ', error.message);\r\n return throwError(() => error);\r\n })\r\n );\r\n }\r\n\r\n getDetails(IN: IGetDetailsIN) {\r\n return this.http\r\n .post(\r\n `api/p2p/transfer/getdetails`,\r\n { paymentKey: IN.paymentKey, checkoutKey: IN.checkoutKey },\r\n {\r\n headers: {\r\n p2p_token_key: IN.p2psessionKey,\r\n },\r\n }\r\n )\r\n .pipe(\r\n map((response: IGetDetailsOUT) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n console.log('Error (transfer/getdetails): ', error.message);\r\n return throwError(() => error);\r\n })\r\n );\r\n }\r\n\r\n getDetailsPdf(IN: IGetDetailsIN): Observable {\r\n return this.http\r\n .post(\r\n `api/p2p/transfer/getdetailspdf`,\r\n { paymentKey: IN.paymentKey, checkoutKey: IN.checkoutKey },\r\n {\r\n headers: {\r\n p2p_token_key: IN.p2psessionKey,\r\n },\r\n }\r\n )\r\n .pipe(\r\n switchMap((response: IGetDetailsPdfOUT) => {\r\n const mimetype = DetectMimeType(`${response.file.fileContents}`);\r\n const base64String = `data:${mimetype};base64,${response.file.fileContents}`;\r\n return this.toBlob(base64String);\r\n }),\r\n catchError((error) => {\r\n console.log('Error (transfer/getdetailspdf): ', error.message);\r\n return throwError(() => error);\r\n })\r\n );\r\n }\r\n\r\n private toBlob(file: string): Observable {\r\n return from(\r\n fetch(file)\r\n .then((res) => res.blob())\r\n .then((blob) => blob)\r\n );\r\n }\r\n\r\n getPrintforOplata(IN: GetDetailsOUT): Observable {\r\n return new Observable((observer) => {\r\n const OUT: GetPrintOUT = {\r\n Fields: [\r\n {\r\n Key: 'ServiceIssuer',\r\n Name: this.translateService.instant(\r\n 'RESULTPAGE.PRINT.SERVICEISSUER'\r\n ),\r\n Value: IN.ServiceIssuer,\r\n },\r\n {\r\n Key: 'OperationType',\r\n Name: this.translateService.instant(\r\n 'RESULTPAGE.PRINT.OPERATIONTYPE'\r\n ),\r\n Value: IN.OperationType,\r\n },\r\n {\r\n Key: 'RES_Status_TRANSLATE',\r\n Name: this.translateService.instant('RESULTPAGE.PRINT.STATUS'),\r\n Value: this.translateService.instant(IN.RES_Status_TRANSLATE),\r\n },\r\n {\r\n Key: 'SenderName',\r\n Name: this.translateService.instant('RESULTPAGE.PRINT.SENDERNAME'),\r\n Value: IN.SenderName,\r\n },\r\n {\r\n Key: 'SenderCardNr',\r\n Name: this.translateService.instant(\r\n 'RESULTPAGE.PRINT.SENDERCARDNR'\r\n ),\r\n Value: IN.SenderCardNr,\r\n },\r\n {\r\n Key: 'ReceiverName',\r\n Name: this.translateService.instant(\r\n 'RESULTPAGE.PRINT.RECEIVERNAME'\r\n ),\r\n Value: IN.ReceiverName,\r\n },\r\n {\r\n Key: 'ReceiverCardNr',\r\n Name: this.translateService.instant(\r\n 'RESULTPAGE.PRINT.RECEIVERCARDNR'\r\n ),\r\n Value: IN.ReceiverCardNr,\r\n },\r\n\r\n // {\r\n // Key: 'RRN',\r\n // Name: this.translateService.instant('RESULTPAGE.PRINT.RRN'),\r\n // Value: IN.RRN,\r\n // },\r\n {\r\n Key: 'OperationID',\r\n Name: this.translateService.instant('RESULTPAGE.PRINT.OPERATIONID'),\r\n Value: IN.OperationID,\r\n },\r\n {\r\n Key: 'TransferAmount',\r\n Name: this.translateService.instant(\r\n 'RESULTPAGE.PRINT.TRANSFERAMOUNT'\r\n ),\r\n Value: IN.TransferAmount,\r\n },\r\n {\r\n Key: 'Fee',\r\n Name: this.translateService.instant('RESULTPAGE.PRINT.TRANSFERFEE'),\r\n Value: IN.Fee,\r\n },\r\n {\r\n Key: 'Total',\r\n Name: this.translateService.instant(\r\n 'RESULTPAGE.PRINT.TRANSFERTOTAL'\r\n ),\r\n Value: IN.Total,\r\n },\r\n ],\r\n };\r\n\r\n if ([Status.FAILED].includes(IN.Status)) {\r\n OUT.Fields.push({\r\n Key: 'ErrorCode',\r\n Name: this.translateService.instant('RESULTPAGE.PRINT.ERRORCODE'),\r\n Value: IN.ErrorCode,\r\n });\r\n }\r\n if ([Status.SUCCESS].includes(IN.Status)) {\r\n OUT.Fields.concat([\r\n {\r\n Key: 'CodeAuth',\r\n Name: this.translateService.instant('RESULTPAGE.PRINT.CODEAUTH'),\r\n Value: IN.CodeAuth,\r\n },\r\n {\r\n Key: 'TransferDate',\r\n Name: this.translateService.instant(\r\n 'RESULTPAGE.PRINT.TRANSFERDATE'\r\n ),\r\n Value: IN.TransferDate,\r\n },\r\n ]);\r\n }\r\n observer.next(OUT);\r\n //observer.complete();\r\n });\r\n }\r\n\r\n getException(IN: IGetExceptionIN): Observable {\r\n return new Observable((observer) => {\r\n const OUT: GetExceptionOUT = new GetExceptionOUT(IN);\r\n observer.next(OUT);\r\n });\r\n }\r\n}\r\n","interface IVGSCollect {\n serviceType: string;\n vaultId: string;\n environment: string;\n version: string;\n url: string;\n}\n//https://tntkd2oedp0.sandbox.verygoodproxy.com/api/transferp2p/token\n\nexport const VGSCollect: IVGSCollect[] = [\n {\n serviceType: 'P2P',\n vaultId: 'tntkd2oedp0',\n environment: 'sandbox',\n version: '2.19.0',\n url: '/api/transferp2p/token',\n },\n];\nexport const environment = {\n production: false,\n apiUrl: 'https://localhost:44398',\n p2pURL: 'https://localhost:4200',\n oplatamdURL: 'https://localhost:44310',\n};\n","import { Observable } from 'rxjs';\r\nimport { environment } from '../../environments/environment';\r\n\r\nexport enum PM_ACTIONS {\r\n //PSP\r\n PSP_VGS_LOADED = 'PSP-VGS-LOADED',\r\n PSP_READY = 'PSP-READY',\r\n PSP_VALIDATE_IN = 'PSP-VALIDATE-IN',\r\n PSP_VALIDATE_OUT = 'PSP-VALIDATE-OUT',\r\n PSP_START = 'PSP-START',\r\n PSP_INIT_FIELDS = 'PSP-INIT-FIELDS',\r\n PSP_SUBMIT = 'PSP-SUBMIT',\r\n PSP_TOKENIZED = 'PSP-TOKENIZED',\r\n PSP_CONFIRM = 'PSP-CONFIRM',\r\n PSP_PREPARE_3DS = 'PSP-PREPARE-3DS',\r\n PSP_EXCEPTION = 'PSP-EXCEPTION',\r\n}\r\n\r\nexport enum PM_FIELDS {\r\n PSP_SENDER_CARDNR = 'PSP-SENDER-CARDNR',\r\n PSP_SENDER_CARDCVV = 'PSP-SENDER-CARDCVV',\r\n PSP_SENDER_CARDEXP = 'PSP-SENDER-CARDEXP',\r\n PSP_SENDER_CARDBINCHECK = 'PSP-SENDER-CARDBINCHECK',\r\n PSP_RECEIVER_CARDNR = 'PSP-RECEIVER-CARDNR',\r\n PSP_RECEIVER_CARDBINCHECK = 'PSP-RECEIVER-CARDBINCHECK',\r\n}\r\n\r\nexport const VGSFieldCSS = {\r\n '@font-face': {\r\n fontFamily: 'Circe-Regular',\r\n src: `url(${environment.p2pURL}/Circe-Regular.eot) format('embedded-opentype'), url(${environment.p2pURL}/Circe-Regular.otf)`,\r\n },\r\n color: '#000000',\r\n backgroundColor: '#f9fafc',\r\n 'border-radius': '0.313rem',\r\n padding: '0.938rem 0.563rem',\r\n width: '25.9375rem',\r\n 'box-sizing': 'border-box',\r\n 'line-height': '1.813rem',\r\n 'font-size': '1.563rem',\r\n '&::placeholder': {\r\n fontFamily: 'Circe-Regular',\r\n color: '#cacaca',\r\n },\r\n '&.invalid.touched': {\r\n color: '#cc4b37',\r\n border: '0.188rem solid #cc4b37',\r\n },\r\n '@media (max-width: 640px)': {\r\n color: '#000000',\r\n backgroundColor: '#f9fafc',\r\n 'border-radius': '0.313rem',\r\n padding: '0.938rem 0.563rem',\r\n width: '100%',\r\n 'box-sizing': 'border-box',\r\n 'line-height': '1.438rem',\r\n 'font-size': '1.25rem',\r\n '&.invalid.touched': {\r\n color: '#cc4b37',\r\n border: '0.188rem solid #cc4b37',\r\n },\r\n },\r\n};\r\n// export const css2 = {\r\n// ...css,\r\n// width: '8.438rem',\r\n// };\r\n\r\n// export const css3 = {\r\n// ...css2,\r\n// };\r\n\r\nexport function waitForElementToAppear(elementId) {\r\n return new Observable(function (observer) {\r\n var el_ref;\r\n let intervalId;\r\n\r\n var f = () => {\r\n el_ref = document.getElementById(elementId);\r\n // if (elementId === 'SenderCardNr') {\r\n // console.log('==============================>>>>>>>>> SenderCardNr');\r\n // }\r\n if (el_ref) {\r\n clearInterval(intervalId);\r\n observer.next(el_ref);\r\n observer.complete();\r\n return;\r\n }\r\n\r\n //window.requestAnimationFrame(f);\r\n intervalId = setInterval(f, 100);\r\n };\r\n f();\r\n });\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class CultureSharedService {\r\n currentLang$ = new Subject()\r\n constructor() { }\r\n\r\n setLanguage(lang: string) {\r\n this.currentLang$.next(lang)\r\n }\r\n}\r\n","import { HostListener, OnInit } from '@angular/core';\r\nimport { Component } from '@angular/core';\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { TranslateService, LangChangeEvent } from '@ngx-translate/core';\r\nimport { P2PService } from '../../_services/p2p.service';\r\nimport {\r\n Currencies,\r\n FormField,\r\n ICurrency,\r\n ICurrencyLimit,\r\n IValidationType,\r\n SanitizedSRC,\r\n} from '../../_models/request-form.model';\r\nimport { environment } from 'projects/p2p-plugin/src/environments/environment';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport {\r\n AmountKeyPress,\r\n Langs,\r\n PM_ACTIONS,\r\n inIframe,\r\n AmountGetAsLong,\r\n AmountGetString,\r\n FormControlKeyPress,\r\n ERR_SERVER,\r\n IServerError,\r\n FormControlPaste,\r\n} from '../../_models/common.model';\r\nimport { PM_FIELDS } from 'projects/psp-plugin/src/app/_models/common.model';\r\nimport {\r\n IInitPaymentIN,\r\n IInitPaymentOUT,\r\n IRecalculateAmountIN,\r\n ISaveRequestOUT,\r\n SaveRequest,\r\n} from '../../_models/p2p.service.model';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { ReCaptchaV3Service } from 'ng-recaptcha';\r\nimport { CultureSharedService } from '../../_services/culture.shared.service';\r\n\r\n@Component({\r\n selector: 'app-request-form',\r\n templateUrl: './request-form.component.html',\r\n})\r\nexport class RequestFormComponent implements OnInit {\r\n private OplatamdObject;\r\n SRC: SanitizedSRC;\r\n private oplatamd = window.parent as Window;\r\n InProgress: boolean = true;\r\n Submitted: boolean = false;\r\n SenderFormFields: FormField[] = [];\r\n ReceiverFormFields: FormField[] = [];\r\n AmountFormFields: FormField[] = [];\r\n VFSFormFields: any[] = [];\r\n\r\n CurrenciesList: ICurrency[] = [];\r\n CurrencyLimitsList: ICurrencyLimit[] = [];\r\n\r\n private PSP_READY_CNT = 0;\r\n private PSP_TOKENIZED_CNT = 0;\r\n\r\n private ServerErrors: IServerError[] = [];\r\n\r\n GetServerError = (field: string): IServerError => {\r\n return this.ServerErrors.find((x) => x.field === field);\r\n };\r\n\r\n private RemoveServerError = (field: string): void => {\r\n this.ServerErrors = this.ServerErrors.filter((x) => x.field !== field);\r\n };\r\n\r\n private SetServerError = (ServerError: IServerError): void => {\r\n this.ServerErrors.push(ServerError);\r\n };\r\n\r\n RequestForm: FormGroup = this.formBuilder.group({\r\n SenderCVV: new FormControl(false, [Validators.requiredTrue]),\r\n SenderCardExp: new FormControl(false, [Validators.requiredTrue]),\r\n RequestConfirmation: new FormControl(false, Validators.requiredTrue),\r\n\r\n //Sender Block iframe inputs:\r\n SenderCardType: new FormControl('', Validators.required),\r\n SenderCardBin: new FormControl('', Validators.required),\r\n SenderCardLast4: new FormControl('', Validators.required),\r\n SenderCardBinChecked: new FormControl('', Validators.requiredTrue),\r\n\r\n //Receiver CardNr iframe inputs:\r\n ReceiverCardType: new FormControl('', Validators.required),\r\n ReceiverCardBin: new FormControl('', Validators.required),\r\n ReceiverCardLast4: new FormControl('', Validators.required),\r\n ReceiverCardBinChecked: new FormControl('', Validators.requiredTrue),\r\n\r\n CurrencyName: new FormControl('MDL'),\r\n CurrencyID: new FormControl(498, [Validators.required]),\r\n });\r\n\r\n CurrencyNameControl: FormControl = (\r\n this.RequestForm.get('CurrencyName')\r\n );\r\n CurrencyIDControl: FormControl = (\r\n this.RequestForm.get('CurrencyID')\r\n );\r\n SenderCardBinControl: FormControl = (\r\n this.RequestForm.get('SenderCardBin')\r\n );\r\n ReceiverCardBinControl: FormControl = (\r\n this.RequestForm.get('ReceiverCardBin')\r\n );\r\n\r\n AmountControl: FormControl;\r\n FeeControl: FormControl;\r\n TotalsControl: FormControl;\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private translateService: TranslateService,\r\n private p2pService: P2PService,\r\n private sanitizer: DomSanitizer,\r\n private recaptchaV3Service: ReCaptchaV3Service,\r\n private cultureSharedService: CultureSharedService\r\n ) {\r\n this.SenderCardBinControl.valueChanges.subscribe(() => {\r\n if (\r\n this.BinsStateAfterRecalc != this.BinsStateCurrent ||\r\n !this.Recalculated\r\n ) {\r\n this.Recalculate();\r\n }\r\n });\r\n this.ReceiverCardBinControl.valueChanges.subscribe(() => {\r\n if (\r\n this.BinsStateAfterRecalc != this.BinsStateCurrent ||\r\n !this.Recalculated\r\n ) {\r\n this.Recalculate();\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n private Start() {\r\n if (inIframe()) {\r\n this.translateService.use(\r\n Langs.includes(this.OplatamdObject.Language)\r\n ? this.OplatamdObject.Language\r\n : 'ru'\r\n );\r\n } else {\r\n this.translateService.use('ru');\r\n }\r\n this.cultureSharedService.setLanguage(this.translateService.currentLang);\r\n // localStorage.setItem('currentLang', this.translateService.currentLang);\r\n this.translateService.onLangChange.subscribe(\r\n (event: LangChangeEvent) => { }\r\n );\r\n\r\n this.InitForm(this.OplatamdObject);\r\n }\r\n\r\n private InitForm(OplatamdObject) {\r\n this.p2pService.getFormFields(OplatamdObject).subscribe({\r\n next: ({\r\n SenderSimpleFields,\r\n ReceiverSimpleFields,\r\n AmountSimpleFields,\r\n VGSFields,\r\n DDCurrencies,\r\n ArrCurrencyLimits,\r\n }) => {\r\n if (!!SenderSimpleFields) {\r\n this.SenderFormFields = SenderSimpleFields;\r\n }\r\n if (!!ReceiverSimpleFields) {\r\n this.ReceiverFormFields = ReceiverSimpleFields;\r\n }\r\n if (!!AmountSimpleFields) {\r\n this.AmountFormFields = AmountSimpleFields;\r\n }\r\n if (!!VGSFields) {\r\n this.VFSFormFields = VGSFields;\r\n }\r\n\r\n this.CurrenciesList = [...DDCurrencies];\r\n this.CurrencyLimitsList = [...ArrCurrencyLimits];\r\n\r\n this.SenderFormFields.filter((x) => !!x.FormControl).forEach((x) => {\r\n this.RequestForm.addControl(x.ID, x.FormControl);\r\n });\r\n this.ReceiverFormFields.filter((x) => !!x.FormControl).forEach((x) => {\r\n this.RequestForm.addControl(x.ID, x.FormControl);\r\n });\r\n this.AmountFormFields.filter((x) => !!x.FormControl).forEach((x) => {\r\n this.RequestForm.addControl(x.ID, x.FormControl);\r\n });\r\n\r\n console.log('this.RequestForm: ', this.RequestForm);\r\n console.log('this.CurrencyLimitsList: ', this.CurrencyLimitsList);\r\n\r\n this.AmountControl = this.RequestForm.get('Amount');\r\n this.FeeControl = this.RequestForm.get('Fee');\r\n this.TotalsControl = this.RequestForm.get('Totals');\r\n this.SetCurrencyLimits(this.CurrencyIDControl.value);\r\n\r\n this.InProgress = !(\r\n !!SenderSimpleFields &&\r\n !!ReceiverSimpleFields &&\r\n !!AmountSimpleFields &&\r\n !!VGSFields\r\n );\r\n },\r\n error: (error: HttpErrorResponse) => {\r\n console.log(error);\r\n //this.P2PInProgress(true);\r\n this.P2PException(error);\r\n },\r\n complete: () => {\r\n // console.log('getFormFields request completed');\r\n },\r\n });\r\n }\r\n\r\n @HostListener('window:message', ['$event'])\r\n onPostMessage(event: MessageEvent) {\r\n if (event.origin === environment.oplatamdURL) {\r\n if (!!event.data) {\r\n switch (event.data.action) {\r\n case PM_ACTIONS.P2P_START_IN:\r\n console.log(event.data);\r\n //console.log('OplatamdObject', event.data.OplatamdObject);\r\n this.OplatamdObject = event.data.OplatamdObject;\r\n this.SRC = new SanitizedSRC(\r\n this.OplatamdObject.Language,\r\n this.sanitizer\r\n );\r\n this.Start();\r\n break;\r\n case PM_ACTIONS.P2P_RECAPTCHA_RESPONSE:\r\n console.log(event.data);\r\n\r\n if (!!event.data?.OplatamdObject?.Success) {\r\n this.RemoveServerError('Recaptcha');\r\n this.SaveRequest(this.RequestForm.value);\r\n }\r\n // Recaptcha Validate Fail\r\n else {\r\n this.SetServerError({\r\n field: 'Recaptcha',\r\n error: ERR_SERVER.RECAPTCHA_EXCEPTION,\r\n });\r\n\r\n this.P2PInProgress(false);\r\n this.PSPValidate();\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (event.origin === environment.pspURL) {\r\n if (!!event.data) {\r\n switch (event.data.action) {\r\n case PM_ACTIONS.PSP_VGS_LOADED:\r\n console.log(event.data);\r\n this.PSPInitFields(event.data);\r\n break;\r\n\r\n case PM_ACTIONS.PSP_READY:\r\n console.log(event.data);\r\n this.PSP_READY_CNT++;\r\n if (this.PSP_READY_CNT === 2) {\r\n console.log(`LISTEN: PSP_READY_CNT ${PM_ACTIONS.PSP_READY}`)\r\n this.P2PInProgress(false);\r\n }\r\n break;\r\n case PM_ACTIONS.PSP_VALIDATE_OUT:\r\n this.PatchForm(event.data);\r\n break;\r\n case PM_ACTIONS.PSP_TOKENIZED:\r\n console.log(event.data);\r\n this.PSP_TOKENIZED_CNT++;\r\n if (this.PSP_TOKENIZED_CNT === 2) {\r\n this.InitPayment();\r\n }\r\n break;\r\n case PM_ACTIONS.PSP_PREPARE_3DS:\r\n console.log(event.data);\r\n if (event.data.object) {\r\n this.FinishPaymentAfter3DS(event.data.object);\r\n }\r\n break;\r\n case PM_ACTIONS.PSP_EXCEPTION:\r\n console.log(event.data);\r\n this.P2PException(event.data.error);\r\n break;\r\n default:\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n @HostListener('window:unload', ['$event'])\r\n onUnloadTo3DS() {\r\n window.parent.postMessage(\r\n {\r\n action: PM_ACTIONS.P2P_WAITING_3DS,\r\n },\r\n environment.oplatamdURL\r\n );\r\n }\r\n\r\n private PSPInitFields(data) {\r\n const iframe = document.getElementById(data.iframe) as HTMLIFrameElement;\r\n iframe.contentWindow.postMessage(\r\n {\r\n action: PM_ACTIONS.PSP_INIT_FIELDS,\r\n fields: this.VFSFormFields.filter((f) => data.fields.includes(f.id)),\r\n },\r\n environment.pspURL\r\n );\r\n }\r\n\r\n private PSPValidate() {\r\n this.Submitted = true;\r\n const iframes = Array.from([\r\n document.getElementsByTagName('iframe').namedItem('PSPSenderBlock'),\r\n document.getElementsByTagName('iframe').namedItem('PSPReceiverBlock'),\r\n ]);\r\n\r\n iframes.forEach((iframe) => {\r\n iframe.contentWindow.postMessage(\r\n {\r\n action: PM_ACTIONS.PSP_VALIDATE_IN,\r\n },\r\n environment.pspURL\r\n );\r\n });\r\n }\r\n\r\n private PSPConfirm() {\r\n const iframe = document.getElementById(\r\n 'PSPCallBackPageTO'\r\n ) as HTMLIFrameElement;\r\n iframe.contentWindow.postMessage(\r\n {\r\n action: PM_ACTIONS.PSP_CONFIRM,\r\n object: this.InitPaymentOUTObject,\r\n },\r\n environment.pspURL\r\n );\r\n }\r\n\r\n //private PSPSubmitOUT: IPSPSubmitOUT;\r\n private PSPSubmit(tokenboxes: ISaveRequestOUT) {\r\n this.PSP_TOKENIZED_CNT = 0;\r\n this.SaveRequestOUTObject = tokenboxes;\r\n const iframes = Array.from([\r\n document.getElementsByTagName('iframe').namedItem('PSPSenderBlock'),\r\n document.getElementsByTagName('iframe').namedItem('PSPReceiverBlock'),\r\n ]);\r\n\r\n iframes.forEach((iframe) => {\r\n iframe.contentWindow.postMessage(\r\n {\r\n action: PM_ACTIONS.PSP_SUBMIT,\r\n tokenboxes: tokenboxes.associatedTokenBoxKeys,\r\n },\r\n environment.pspURL\r\n );\r\n });\r\n }\r\n\r\n private PatchForm(pspObj: any) {\r\n switch (pspObj.field) {\r\n case PM_FIELDS.PSP_SENDER_CARDNR:\r\n this.RequestForm.patchValue({\r\n SenderCardType: pspObj.data.cardType,\r\n SenderCardBin: pspObj.data.bin?.slice(0, 6),\r\n SenderCardLast4: pspObj.data.last4,\r\n });\r\n break;\r\n case PM_FIELDS.PSP_SENDER_CARDCVV:\r\n this.RequestForm.patchValue({\r\n SenderCVV: pspObj.data.isValid,\r\n });\r\n break;\r\n case PM_FIELDS.PSP_SENDER_CARDEXP:\r\n this.RequestForm.patchValue({\r\n SenderCardExp: pspObj.data.isValid,\r\n });\r\n break;\r\n case PM_FIELDS.PSP_SENDER_CARDBINCHECK:\r\n this.RequestForm.patchValue({\r\n SenderCardBinChecked: pspObj.checkedbin,\r\n });\r\n console.log(this.RequestForm.value);\r\n break;\r\n case PM_FIELDS.PSP_RECEIVER_CARDBINCHECK:\r\n this.RequestForm.patchValue({\r\n ReceiverCardBinChecked: pspObj.checkedbin,\r\n });\r\n console.log(this.RequestForm.value);\r\n break;\r\n case PM_FIELDS.PSP_RECEIVER_CARDNR:\r\n this.RequestForm.patchValue({\r\n ReceiverCardType: pspObj.data.cardType,\r\n ReceiverCardBin: pspObj.data.bin?.slice(0, 6),\r\n ReceiverCardLast4: pspObj.data.last4,\r\n });\r\n break;\r\n default:\r\n break;\r\n }\r\n //console.log(this.RequestForm.value);\r\n }\r\n\r\n private Validate() {\r\n this.P2PInProgress(true);\r\n if (this.RequestForm.valid) {\r\n this.recaptchaV3Service.execute('GetToken').subscribe((token: string) => {\r\n console.log('recaptcha token: ', token);\r\n this.oplatamd.postMessage(\r\n {\r\n action: PM_ACTIONS.P2P_RECAPTCHA_VERIFY,\r\n response: token,\r\n remoteip: this.OplatamdObject.IPAddress,\r\n },\r\n environment.oplatamdURL\r\n );\r\n });\r\n } else {\r\n this.P2PInProgress(false);\r\n this.PSPValidate();\r\n }\r\n }\r\n\r\n private SaveRequestOUTObject: ISaveRequestOUT;\r\n private SaveRequest(formData) {\r\n const IN: SaveRequest = new SaveRequest(formData);\r\n\r\n this.p2pService.saveRequest(IN).subscribe({\r\n next: (response) => {\r\n console.log(response);\r\n this.PSPSubmit(response);\r\n },\r\n error: (error: HttpErrorResponse) => {\r\n console.log(error);\r\n this.P2PException(error);\r\n //this.P2PInProgress(false);\r\n },\r\n });\r\n }\r\n\r\n private InitPaymentOUTObject: IInitPaymentOUT;\r\n private InitPayment() {\r\n const IN: IInitPaymentIN = {\r\n transferOrderKey: this.SaveRequestOUTObject.transferOrderKey,\r\n };\r\n this.p2pService.initPayment(IN).subscribe({\r\n next: (response: IInitPaymentOUT) => {\r\n //console.log(response);\r\n this.InitPaymentOUTObject = response;\r\n this.PSPConfirm();\r\n },\r\n error: (error: HttpErrorResponse) => {\r\n console.log(error);\r\n this.P2PException(error);\r\n //this.P2PInProgress(false);\r\n },\r\n });\r\n }\r\n\r\n private P2PInProgress(state: boolean) {\r\n //console.log('P2P-INPROGRESS', state);\r\n this.oplatamd.postMessage(\r\n {\r\n action: PM_ACTIONS.P2P_INPROGRESS,\r\n state: state,\r\n },\r\n environment.oplatamdURL\r\n );\r\n }\r\n private P2PException(error: HttpErrorResponse) {\r\n this.oplatamd.postMessage(\r\n {\r\n action: PM_ACTIONS.P2P_EXCEPTION,\r\n errorcode: error.status,\r\n errormessage:\r\n error?.error?.errorInfo?.title ??\r\n error?.error?.errorInfo?.ppResponseCodeDescription ??\r\n error?.error?.errorInfo?.ppResponseCodeText ??\r\n error?.message,\r\n },\r\n environment.oplatamdURL\r\n );\r\n }\r\n\r\n private FinishPaymentAfter3DS(OUT) {\r\n const node3DSForm = new DOMParser().parseFromString(\r\n OUT.htmlForm3DS,\r\n 'text/html'\r\n );\r\n this.oplatamd.postMessage(\r\n {\r\n action: PM_ACTIONS.P2P_WAITING_3DS,\r\n },\r\n environment.oplatamdURL\r\n );\r\n //this.P2PInProgress(false);\r\n document\r\n .getElementsByTagName('body')[0]\r\n .appendChild(node3DSForm.querySelector('form'));\r\n (\r\n document.getElementsByName('ThreeDform').item(0) as HTMLFormElement\r\n ).submit();\r\n }\r\n\r\n onSubmit() {\r\n this.Submitted = true;\r\n console.log('this form: ', this.RequestForm);\r\n\r\n this.Validate();\r\n console.log('this.RequestForm: ', this.RequestForm);\r\n }\r\n\r\n ChangeCurrency(currency: number) {\r\n this.RequestForm.patchValue({\r\n CurrencyID: Currencies.find((x) => x.Num === currency).Num,\r\n });\r\n this.RequestForm.patchValue({\r\n CurrencyName: Currencies.find((x) => x.Num === currency).Code,\r\n });\r\n this.SetCurrencyLimits(currency);\r\n this.Recalculate();\r\n }\r\n\r\n private SetCurrencyLimits(currencyId: number) {\r\n const currentLimit = this.CurrencyLimitsList.find(\r\n (x) => x.currencyId === currencyId\r\n );\r\n const validators = [\r\n ...(currentLimit.min\r\n ? [\r\n Validators.min(Number(AmountGetString(currentLimit.min))),\r\n Validators.minLength(AmountGetString(currentLimit.min).length),\r\n ]\r\n : []),\r\n ...(currentLimit.max\r\n ? [\r\n Validators.max(Number(AmountGetString(currentLimit.max))),\r\n Validators.maxLength(AmountGetString(currentLimit.max).length),\r\n ]\r\n : []),\r\n ];\r\n this.AmountControl.setValidators(validators);\r\n this.AmountControl.updateValueAndValidity();\r\n\r\n const field = this.AmountFormFields.find((x) => x.ID === 'Amount');\r\n const validationMin = field.Validation.find(\r\n (x) => x.Type === IValidationType.min\r\n );\r\n validationMin.Error =\r\n 'REQFORM.ERR.MIN.AMOUNT.' +\r\n Currencies.find((x) => x.Num === currencyId).Code;\r\n const validationMax = field.Validation.find(\r\n (x) => x.Type === IValidationType.max\r\n );\r\n validationMax.Error =\r\n 'REQFORM.ERR.MAX.AMOUNT.' +\r\n Currencies.find((x) => x.Num === currencyId).Code;\r\n field.MaxLength = AmountGetString(currentLimit.max).length;\r\n\r\n // console.log(this.AmountControl.errors);\r\n }\r\n\r\n private BinsStateAfterRecalc: string;\r\n private get BinsStateCurrent(): string {\r\n return this.SenderCardBinControl.value + this.ReceiverCardBinControl.value;\r\n }\r\n\r\n private get Recalculated(): boolean {\r\n return !!this.TotalsControl.value && !!this.FeeControl.value;\r\n }\r\n private Recalculate() {\r\n const val = Number(this.AmountControl.value?.replaceAll(',', '.'));\r\n const patchvalue = isNaN(val) ? null : val.toFixed(2);\r\n this.AmountControl.patchValue(patchvalue);\r\n if (\r\n this.AmountControl.valid &&\r\n this.SenderCardBinControl.valid &&\r\n this.ReceiverCardBinControl.valid\r\n ) {\r\n this.P2PInProgress(true);\r\n const IN: IRecalculateAmountIN = {\r\n amount: AmountGetAsLong(this.AmountControl.value),\r\n senderCardBin: this.SenderCardBinControl.value,\r\n receiverCardBin: this.ReceiverCardBinControl.value,\r\n currencyId: this.CurrencyIDControl.value,\r\n };\r\n\r\n this.p2pService.recalculateAmount(IN).subscribe({\r\n next: (response) => {\r\n console.log(response);\r\n this.FeeControl.patchValue(AmountGetString(response.comission));\r\n this.TotalsControl.patchValue(AmountGetString(response.amountTotal));\r\n this.BinsStateAfterRecalc = this.BinsStateCurrent;\r\n this.RemoveServerError('Fee');\r\n this.P2PInProgress(false);\r\n },\r\n error: (error: HttpErrorResponse) => {\r\n console.log(error);\r\n console.log(error.headers.get('Content-Type'));\r\n if (error.status === 500) {\r\n if (error.headers.get('Content-Type').startsWith('text/plain')) {\r\n // unexpected server exception\r\n this.SetServerError({\r\n field: 'Fee',\r\n error: ERR_SERVER.FEE_EXCEPTION,\r\n });\r\n }\r\n }\r\n this.FeeControl.patchValue(null);\r\n this.TotalsControl.patchValue(null);\r\n this.P2PInProgress(false);\r\n },\r\n });\r\n } else {\r\n this.FeeControl.patchValue(null);\r\n this.TotalsControl.patchValue(null);\r\n this.AmountControl.patchValue(patchvalue);\r\n }\r\n }\r\n\r\n FormControlKeyPress(event) {\r\n let pattern;\r\n switch (event.target.id) {\r\n case 'SenderCardHolderName':\r\n case 'ReceiverCardHolderName':\r\n pattern = /^[A-Za-z\\s\\-]+$/;\r\n break;\r\n case 'SenderAddress':\r\n pattern = /^[0-9A-Za-z\\s\\-\\,\\.\\/]+$/;\r\n break;\r\n case 'SenderLocation':\r\n pattern = /^[A-Za-z\\s\\-]+$/;\r\n break;\r\n }\r\n FormControlKeyPress(event, pattern);\r\n }\r\n\r\n FormControlPaste(event) {\r\n let pattern;\r\n switch (event.target.id) {\r\n case 'SenderCardHolderName':\r\n case 'ReceiverCardHolderName':\r\n pattern = /^[A-Za-z\\s\\-]+$/;\r\n break;\r\n case 'SenderAddress':\r\n pattern = /^[0-9A-Za-z\\s\\-\\,\\.\\/]+$/;\r\n break;\r\n case 'SenderLocation':\r\n pattern = /^[A-Za-z\\s\\-]+$/;\r\n break;\r\n }\r\n FormControlPaste(event, pattern);\r\n }\r\n\r\n AlphaFocusOut(event, ctrl: FormControl) {\r\n const val = event.target.value\r\n .split(' ')\r\n .filter((x) => x !== '')\r\n .join(' ');\r\n\r\n ctrl.patchValue(\r\n ['SenderCardHolderName', 'ReceiverCardHolderName'].includes(\r\n event.target.id\r\n )\r\n ? val.toUpperCase()\r\n : val\r\n );\r\n }\r\n\r\n AmountKeyPress(event) {\r\n AmountKeyPress(event);\r\n }\r\n\r\n private AmountControlFocusInValue: number;\r\n\r\n AmountFocusIn(event) {\r\n if (Number(event.target.value) === 0) {\r\n event.target.value = '';\r\n }\r\n this.AmountControlFocusInValue = Number(event.target.value);\r\n }\r\n AmountFocusOut() {\r\n if (this.AmountControlFocusInValue !== Number(this.AmountControl.value)) {\r\n this.Recalculate();\r\n } else {\r\n this.AmountControl.patchValue(this.AmountControlFocusInValue.toFixed(2));\r\n }\r\n }\r\n}\r\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { environment } from 'projects/p2p-plugin/src/environments/environment';\n\n@Component({\n selector: 'app-callback-page',\n templateUrl: './callback-page-from.component.html',\n})\nexport class CallbackPageFROMComponent {\n private paymentKey: string;\n private checkoutKey: string;\n private p2psessionKey: string;\n constructor(\n private activatedRoute: ActivatedRoute //private pspService: P2PService\n ) {\n this.parseParams();\n }\n\n private parseParams() {\n this.activatedRoute.params.subscribe((params) => {\n console.log(params);\n this.paymentKey = params['paymentkey'];\n this.checkoutKey = params['checkoutkey'];\n this.p2psessionKey = params['p2psessionkey'];\n\n if (!!this.paymentKey && !!this.checkoutKey) {\n this.RedirectToOplata();\n }\n });\n }\n private RedirectToOplata() {\n window.parent.location.href = `${environment.oplatamdURL}/p2p/result/${this.paymentKey}/${this.checkoutKey}/${this.p2psessionKey}`;\n }\n}\n","import { CultureSharedService } from './../../_services/culture.shared.service';\nimport { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\n\nimport { environment } from 'projects/p2p-plugin/src/environments/environment';\nimport { P2PService } from '../../_services/p2p.service';\nimport {\n GetDetailsOUT,\n IGetDetailsIN,\n Status,\n} from '../../_models/p2p.service.model';\nimport { Langs, PM_ACTIONS } from '../../_models/common.model';\nimport { HttpErrorResponse } from '@angular/common/http';\n\n@Component({\n selector: 'app-result-page',\n templateUrl: './result-page.component.html',\n})\nexport class ResultPageComponent {\n private oplatamd = window.parent as Window;\n private CurrentLang: string;\n private paymentKey: string;\n private checkoutKey: string;\n private p2psessionKey: string;\n public Model: GetDetailsOUT;\n public InProgress: boolean = true;\n private IN: IGetDetailsIN;\n public Timer: number;\n constructor(\n private translateService: TranslateService,\n private activatedRoute: ActivatedRoute,\n private p2pService: P2PService,\n private cultureSharedService: CultureSharedService\n ) { }\n\n ngOnInit() {\n this.parseParams();\n }\n private parseParams() {\n this.activatedRoute.params.subscribe((params) => {\n this.CurrentLang = params['lang'];\n this.paymentKey = params['paymentkey'];\n this.checkoutKey = params['checkoutkey'];\n this.p2psessionKey = params['p2psessionkey'];\n\n if (!!this.paymentKey && !!this.checkoutKey && !!this.p2psessionKey) {\n this.IN = {\n checkoutKey: this.checkoutKey,\n paymentKey: this.paymentKey,\n p2psessionKey: this.p2psessionKey,\n currentLang: this.CurrentLang\n };\n this.GetResult();\n }\n });\n\n this.translateService.use(\n Langs.includes(this.CurrentLang) ? this.CurrentLang : 'ru'\n );\n this.cultureSharedService.setLanguage(this.translateService.currentLang);\n //localStorage.setItem('currentLang', this.translateService.currentLang);\n }\n\n private GetResult() {\n console.log('GetResult');\n this.p2pService.getDetails(this.IN).subscribe({\n next: (response) => {\n this.Model = new GetDetailsOUT(response, this.CurrentLang);\n if (this.Model.Status === Status.INPROGRESS) {\n this.StartCountDown();\n }\n this.InProgress = false;\n setTimeout(() => this.P2PInProgress(false), 1000);\n },\n error: (error: HttpErrorResponse) => {\n console.log(error);\n this.P2PException(error);\n },\n });\n }\n\n ExpireTime: number = 5;\n private StartCountDown() {\n const interval = setInterval(() => {\n if (this.ExpireTime > 0) {\n this.ExpireTime--;\n } else {\n this.P2PInProgress(true);\n this.GetResult();\n this.ExpireTime = 5;\n clearInterval(interval);\n }\n }, 1000);\n }\n\n ExportPdf() {\n this.p2pService.getDetailsPdf(this.IN).subscribe({\n next: (response) => {\n //console.log('getfile', response);\n const url = window.URL.createObjectURL(response);\n const anchor = document.createElement('a');\n anchor.download = `${this.Model.OperationType} ${this.Model.OperationID}`;\n anchor.href = url;\n anchor.click();\n anchor.remove();\n },\n error: (error: HttpErrorResponse) => {\n console.log(error);\n this.P2PException(error);\n },\n });\n }\n\n Print() {\n this.p2pService.getPrintforOplata(this.Model).subscribe({\n next: (response) => {\n this.oplatamd.postMessage(\n {\n action: PM_ACTIONS.P2P_PRINT,\n object: response,\n },\n environment.oplatamdURL\n );\n },\n });\n }\n\n New() {\n this.oplatamd.postMessage(\n {\n action: PM_ACTIONS.P2P_NEW,\n },\n environment.oplatamdURL\n );\n }\n\n private P2PInProgress(state: boolean) {\n this.oplatamd.postMessage(\n {\n action: PM_ACTIONS.P2P_INPROGRESS,\n state: state,\n },\n environment.oplatamdURL\n );\n }\n\n private P2PException(error: HttpErrorResponse) {\n this.oplatamd.postMessage(\n {\n action: PM_ACTIONS.P2P_EXCEPTION,\n errorcode: error.status,\n },\n environment.oplatamdURL\n );\n }\n}\n","import { CultureSharedService } from './../../_services/culture.shared.service';\nimport { Component, HostListener } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n GetExceptionOUT,\n IGetExceptionIN,\n} from '../../_models/p2p.service.model';\nimport { Langs, PM_ACTIONS } from '../../_models/common.model';\nimport { P2PService } from '../../_services/p2p.service';\nimport { environment } from 'projects/p2p-plugin/src/environments/environment';\n\n@Component({\n selector: 'app-exception-page',\n templateUrl: './exception-page.component.html',\n styleUrls: ['./exception-page.component.scss'],\n})\nexport class ExceptionPageComponent {\n private oplatamd = window.parent as Window;\n private CurrentLang: string;\n private exceptionCode: string;\n private IN: IGetExceptionIN;\n public Model: GetExceptionOUT;\n public InProgress: boolean = true;\n constructor(\n private translateService: TranslateService,\n private activatedRoute: ActivatedRoute,\n private p2pService: P2PService,\n private cultureSharedService: CultureSharedService\n ) { }\n\n ngOnInit() {\n this.parseParams();\n }\n\n @HostListener('window:message', ['$event'])\n onPostMessage(event: MessageEvent) {\n if (event.origin === environment.oplatamdURL && !!event.data) {\n switch (event.data.action) {\n case PM_ACTIONS.P2P_EXCEPTION_RESPONSE:\n {\n // console.log(event.data);\n this.IN = {\n exceptionCode: event.data.exceptioncode,\n exceptionMessage: event.data.exceptionmessage\n }\n this.GetException();\n }\n break;\n default:\n break;\n }\n }\n }\n\n private parseParams() {\n this.activatedRoute.params.subscribe((params) => {\n console.log(params);\n this.CurrentLang = params['lang'];\n // this.exceptionCode = params['exceptioncode'];\n\n // if (!!this.exceptionCode) {\n // this.IN = {\n // exceptionCode: this.exceptionCode,\n // };\n // this.GetException();\n // }\n });\n\n this.translateService.use(\n Langs.includes(this.CurrentLang) ? this.CurrentLang : 'ru'\n );\n this.cultureSharedService.setLanguage(this.CurrentLang)\n // localStorage.setItem('currentLang', this.translateService.currentLang);\n }\n\n private GetException() {\n this.p2pService.getException(this.IN).subscribe({\n next: (response) => {\n this.Model = response;\n this.InProgress = false;\n setTimeout(() => this.P2PInProgress(false), 1000);\n },\n });\n }\n\n private P2PInProgress(state: boolean) {\n //console.log('P2P-INPROGRESS', state);\n this.oplatamd.postMessage(\n {\n action: PM_ACTIONS.P2P_INPROGRESS,\n state: state,\n },\n environment.oplatamdURL\n );\n }\n\n New() {\n //console.log('P2P-INPROGRESS', state);\n this.oplatamd.postMessage(\n {\n action: PM_ACTIONS.P2P_NEW,\n },\n environment.oplatamdURL\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { RequestFormComponent } from './components/request-form/request-form.component';\nimport { CallbackPageFROMComponent } from './components/callback-page-from/callback-page-from.component';\nimport { ResultPageComponent } from './components/result-page/result-page.component';\nimport { ExceptionPageComponent } from './components/exception-page/exception-page.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: RequestFormComponent,\n data: {\n title: 'p2p-plugin',\n },\n },\n {\n path: 'callback-page-from/:paymentkey/:checkoutkey/:p2psessionkey',\n component: CallbackPageFROMComponent,\n },\n {\n path: 'result/:lang/:paymentkey/:checkoutkey/:p2psessionkey',\n component: ResultPageComponent,\n },\n {\n path: 'exception/:lang',\n component: ExceptionPageComponent,\n },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule],\n})\nexport class AppRoutingModule { }\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\nexport class AppComponent implements OnInit {\n title = 'p2p-plugin';\n\n constructor(\n ) {\n }\n\n ngOnInit(): void {\n console.log('app component oninit')\n }\n}\n","import { TranslateService } from '@ngx-translate/core';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor,\r\n} from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { environment } from '../../environments/environment';\r\nimport { CultureSharedService } from '../_services/culture.shared.service';\r\n\r\n@Injectable()\r\nexport class JwtInterceptor implements HttpInterceptor {\r\n currentLang: string\r\n constructor(\r\n private cultureSharedService: CultureSharedService,\r\n private translateService: TranslateService\r\n ) { }\r\n\r\n intercept(\r\n request: HttpRequest,\r\n next: HttpHandler\r\n ): Observable> {\r\n // if (this.skipHandling(request)) {\r\n // return next.handle(request);\r\n // }\r\n request = request.clone({\r\n url: `${environment.apiUrl}/${request.url}`,\r\n setHeaders: {\r\n 'Accept-Language': this.getLanguage() ?? 'ru',\r\n },\r\n });\r\n console.log('p2p this.translateService.currentLang', this.translateService.currentLang)\r\n return next.handle(request);\r\n }\r\n private skipHandling(request: HttpRequest) {\r\n return request.url.includes('/content/gettranslates/');\r\n }\r\n\r\n private getLanguage(): string {\r\n this.cultureSharedService.currentLang$.subscribe({\r\n next: (lang) => {\r\n if (!!lang) {\r\n this.currentLang = lang\r\n }\r\n }\r\n })\r\n return this.currentLang\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\r\nimport { Observable, map } from 'rxjs';\r\n\r\n@Pipe({\r\n name: 'imgapi',\r\n})\r\nexport class ImgApiPipe implements PipeTransform {\r\n constructor(private http: HttpClient, private sanitizer: DomSanitizer) {}\r\n transform(code: string): Observable {\r\n // console.log('imgapi: ', code);\r\n return this.http\r\n .get(`api/p2p/content/getimage/${code}`, {\r\n responseType: 'blob',\r\n observe: 'response',\r\n })\r\n .pipe(\r\n map((response) =>\r\n this.sanitizer.bypassSecurityTrustUrl(\r\n URL.createObjectURL(response.body)\r\n )\r\n )\r\n );\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { environment } from '../../environments/environment';\r\n\r\n@Pipe({\r\n name: 'imgsrc',\r\n pure: true,\r\n})\r\nexport class ImgSrcPipe implements PipeTransform {\r\n constructor() {}\r\n transform(code: string): string {\r\n // console.log('imgapi: ', code);\r\n return `${environment.apiUrl}/api/p2p/content/getimage/${code}`;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ImgApiPipe } from './imgapi.pipe';\nimport { ImgSrcPipe } from './imgsrc.pipe';\n\n@NgModule({\n declarations: [ImgApiPipe, ImgSrcPipe],\n imports: [CommonModule],\n exports: [ImgApiPipe, ImgSrcPipe],\n})\nexport class PipesModule {}\n","import { LOCALE_ID, NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { AppRoutingModule } from './app-routing.module';\nimport {\n HTTP_INTERCEPTORS,\n HttpClient,\n HttpClientModule,\n} from '@angular/common/http';\nimport { environment } from '../environments/environment';\n\n//The internationalization library for Angular.\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\n\n//Components\nimport { AppComponent } from './app.component';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RequestFormComponent } from './components/request-form/request-form.component';\nimport { CallbackPageFROMComponent } from './components/callback-page-from/callback-page-from.component';\nimport { ResultPageComponent } from './components/result-page/result-page.component';\nimport { ExceptionPageComponent } from './components/exception-page/exception-page.component';\n\n//reCAPTCHA\nimport {\n RECAPTCHA_V3_SITE_KEY,\n RECAPTCHA_LANGUAGE,\n RecaptchaV3Module,\n} from 'ng-recaptcha';\nimport { JwtInterceptor } from './_helpers/jwt.interceptor';\nimport { PipesModule } from './_pipes/pipes.module';\n\n//AOT requires an exported function for factories\nexport function HttpLoaderFactory(http: HttpClient): TranslateLoader {\n return new TranslateHttpLoader(http, `api/p2p/content/gettranslates/`, '');\n}\n\n@NgModule({\n declarations: [\n AppComponent,\n RequestFormComponent,\n CallbackPageFROMComponent,\n ResultPageComponent,\n ExceptionPageComponent,\n ],\n imports: [\n CommonModule,\n BrowserModule,\n AppRoutingModule,\n HttpClientModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n FormsModule,\n ReactiveFormsModule,\n RecaptchaV3Module,\n PipesModule,\n ],\n providers: [\n { provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true },\n {\n provide: RECAPTCHA_V3_SITE_KEY,\n useValue: environment.RECAPTCHA_SITE_KEY,\n },\n {\n provide: RECAPTCHA_LANGUAGE,\n useFactory: (locale: string) => locale,\n deps: [LOCALE_ID],\n },\n ],\n bootstrap: [AppComponent],\n})\nexport class AppModule {}\n","import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n if (window) {\n window.console.log = function () {};\n }\n}\nplatformBrowserDynamic()\n .bootstrapModule(AppModule)\n .catch((err) => console.error(err));\n","// Imports\nvar ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ``, \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ = require(\"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ``, \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n"],"names":["PM_ACTIONS","ERR_SERVER","Langs","inIframe","window","self","top","e","FormControlKeyPress","event","pattern","el","target","val","value","inp","String","fromCharCode","keyCode","length","maxLength","test","preventDefault","FormControlPaste","clipboardData","getData","AmountKeyPress","AmountGetString","pAmount","evenRound","parseFloat","toString","toFixed","AmountGetAsLong","amountStr","includes","replace","amountRaw","parseInt","Number","FormatAmountString","intl","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","format","num","decimalPlaces","d","m","Math","pow","n","i","floor","f","r","round","FormatDateTime","culture","date","toLocaleString","month","slice","day","year","hour12","hour","minute","SaveRequest","constructor","formData","SenderCardType","SenderCardBin","SenderCardLast4","SenderCardHolderName","SenderAddress","SenderLocation","ReceiverCardType","ReceiverCardBin","ReceiverCardLast4","ReceiverCardHolderName","CurrencyID","Amount","AmountTotal","Totals","InitPaymentIN","IN","transferOrderKey","backUrlTemplate","location","host","browserJson","JSON","stringify","userAgent","navigator","colorDepth","screen","screenHeight","height","screenWidth","width","javaEnabled","browserLanguage","language","browserTimeZone","DateTimeFormat","resolvedOptions","timeZone","browserTimeZoneOffset","Date","getTimezoneOffset","browserAcceptHeader","browserIpAddress","javascriptEnabled","Status","CSS_Status_MAP","status","SUCCESS","color","FAILED","INPROGRESS","UNKNOWN","getStatus","isNaN","GetDetailsOUT","core","currentLang","console","log","CSS_Status_H4","find","x","RES_Status_TRANSLATE","SRC_Status_IMG","ErrorCode","error","OperationType","operationType","ServiceIssuer","serviceProvider","SenderName","senderCardholderName","SenderCardNr","senderCard","ReceiverName","receiverCardholderName","ReceiverCardNr","receiverCard","OperationID","paymentId","RRN","rrn","CodeAuth","approvalCode","TransferDate","paidDate","TransferAmount","amountTransfer","currency","Fee","commission","Total","amountTotal","OplataPrintField","GetPrintOUT","GetExceptionOUT","exceptionCode","ErrorMessage","exceptionMessage","SRC_IMG","environment","production","apiUrl","oplatamdURL","pspURL","RECAPTCHA_SITE_KEY","FormControl","Validators","Currencies","Code","Num","CurrencyLimits","currencyId","min","max","CurrencyLimit","Currency","code","IValidationType","Validation","coreModel","Type","type","Error","FormField","mapError","ctrlerrors","validation","Object","keys","field","MaxLength","ID","id","Label","label","Name","name","Placeholder","placeholder","AutoComplete","autocomplete","Required","required","Readonly","readonly","Value","forEach","element","push","HasFormControlValidation","validators","minlength","minLength","maxlength","setValidators","SanitizedSRC","sanitizer","IFRAMESenderBlock","bypassSecurityTrustResourceUrl","random","IFRAMEReceiverBlockCardNr","IFRAMECallBackPageTO","LINKOplataMdTerms","HttpParams","HttpClientUtils","isBuffer","obj","toKeyValuePairs","prefix","toISOString","primitives","key","pairs","map","keyPrefix","Array","isArray","reduce","accumulator","concat","toHttpParams","keyPairs","params","pair","append","blobToBase64","blob","Promise","resolve","reject","reader","FileReader","onloadend","base64String","result","onerror","readAsDataURL","DetectMimeType","decodedData","atob","arrayBuffer","ArrayBuffer","uint8Array","Uint8Array","charCodeAt","imageFormat","getImageFormat","ImageHeaderData","PNG","JPEG","PDF","GIF","TIFF_01","TIFF_02","ImageFormat","Unknown","TIFF","data","buffer","compareBuffers","buffer1","buffer2","HttpClient","Injectable","Observable","catchError","from","switchMap","throwError","TranslateService","mockFields","validations","autoComplete","validCardBrands","yearLength","SenderSimpleFieldsArr","ReceiverSimpleFieldsArr","AmountSimpleFieldsArr","VGSFieldsArr","P2PService","_class","http","translateService","getFormFields","OplatamdObject","post","externalDateTime","Data","RequestDate","ip","IPAddress","UserAgent","externalReference","ExternalId","signature","Signature","domainOrigin","Origin","pipe","response","fields","parse","DDCurrencies","currencies","filter","y","SenderSimpleFields","ReceiverSimpleFields","AmountSimpleFields","ArrCurrencyLimits","corelimit","currencyLimits","VGSFields","P2P_KEY_TOKEN","tokenKey","recalculateAmount","get","headers","p2p_token_key","message","saveRequest","initPayment","p2psessionKey","getDetails","paymentKey","checkoutKey","getDetailsPdf","mimetype","file","fileContents","toBlob","fetch","then","res","getPrintforOplata","observer","OUT","Fields","Key","instant","next","getException","__decorate","providedIn","VGSCollect","serviceType","vaultId","version","url","p2pURL","PM_FIELDS","VGSFieldCSS","fontFamily","src","backgroundColor","padding","border","waitForElementToAppear","elementId","el_ref","intervalId","document","getElementById","clearInterval","complete","setInterval","Subject","CultureSharedService","currentLang$","setLanguage","lang","HostListener","Component","FormBuilder","DomSanitizer","ReCaptchaV3Service","RequestFormComponent","formBuilder","p2pService","recaptchaV3Service","cultureSharedService","oplatamd","parent","InProgress","Submitted","SenderFormFields","ReceiverFormFields","AmountFormFields","VFSFormFields","CurrenciesList","CurrencyLimitsList","PSP_READY_CNT","PSP_TOKENIZED_CNT","ServerErrors","GetServerError","RemoveServerError","SetServerError","ServerError","RequestForm","group","SenderCVV","requiredTrue","SenderCardExp","RequestConfirmation","SenderCardBinChecked","ReceiverCardBinChecked","CurrencyName","CurrencyNameControl","CurrencyIDControl","SenderCardBinControl","ReceiverCardBinControl","valueChanges","subscribe","BinsStateAfterRecalc","BinsStateCurrent","Recalculated","Recalculate","ngOnInit","Start","use","Language","onLangChange","InitForm","addControl","AmountControl","FeeControl","TotalsControl","SetCurrencyLimits","P2PException","onPostMessage","origin","action","P2P_START_IN","SRC","P2P_RECAPTCHA_RESPONSE","Success","RECAPTCHA_EXCEPTION","P2PInProgress","PSPValidate","PSP_VGS_LOADED","PSPInitFields","PSP_READY","PSP_VALIDATE_OUT","PatchForm","PSP_TOKENIZED","InitPayment","PSP_PREPARE_3DS","object","FinishPaymentAfter3DS","PSP_EXCEPTION","onUnloadTo3DS","postMessage","P2P_WAITING_3DS","iframe","contentWindow","PSP_INIT_FIELDS","iframes","getElementsByTagName","namedItem","PSP_VALIDATE_IN","PSPConfirm","PSP_CONFIRM","InitPaymentOUTObject","PSPSubmit","tokenboxes","SaveRequestOUTObject","PSP_SUBMIT","associatedTokenBoxKeys","pspObj","PSP_SENDER_CARDNR","patchValue","cardType","bin","last4","PSP_SENDER_CARDCVV","isValid","PSP_SENDER_CARDEXP","PSP_SENDER_CARDBINCHECK","checkedbin","PSP_RECEIVER_CARDBINCHECK","PSP_RECEIVER_CARDNR","Validate","valid","execute","token","P2P_RECAPTCHA_VERIFY","remoteip","state","P2P_INPROGRESS","P2P_EXCEPTION","errorcode","errormessage","errorInfo","title","ppResponseCodeDescription","ppResponseCodeText","node3DSForm","DOMParser","parseFromString","htmlForm3DS","appendChild","querySelector","getElementsByName","item","submit","onSubmit","ChangeCurrency","currentLimit","updateValueAndValidity","validationMin","validationMax","replaceAll","patchvalue","amount","senderCardBin","receiverCardBin","comission","startsWith","FEE_EXCEPTION","AlphaFocusOut","ctrl","split","join","toUpperCase","AmountFocusIn","AmountControlFocusInValue","AmountFocusOut","args","selector","template","__NG_CLI_RESOURCE__0","ActivatedRoute","CallbackPageFROMComponent","activatedRoute","parseParams","RedirectToOplata","href","ResultPageComponent","ExpireTime","CurrentLang","GetResult","Model","StartCountDown","setTimeout","interval","ExportPdf","URL","createObjectURL","anchor","createElement","download","click","remove","Print","P2P_PRINT","New","P2P_NEW","ExceptionPageComponent","P2P_EXCEPTION_RESPONSE","exceptioncode","exceptionmessage","GetException","NgModule","RouterModule","routes","path","component","AppRoutingModule","imports","forRoot","exports","AppComponent","JwtInterceptor","intercept","request","clone","setHeaders","getLanguage","handle","skipHandling","Pipe","ImgApiPipe","transform","responseType","observe","bypassSecurityTrustUrl","body","ImgSrcPipe","pure","CommonModule","PipesModule","declarations","LOCALE_ID","BrowserModule","HTTP_INTERCEPTORS","HttpClientModule","TranslateModule","TranslateLoader","TranslateHttpLoader","FormsModule","ReactiveFormsModule","RECAPTCHA_V3_SITE_KEY","RECAPTCHA_LANGUAGE","RecaptchaV3Module","HttpLoaderFactory","AppModule","loader","provide","useFactory","deps","providers","useClass","multi","useValue","locale","bootstrap","platformBrowserDynamic","bootstrapModule","catch","err"],"sourceRoot":"webpack:///","x_google_ignoreList":[]}