{"version":3,"file":"ngx-mercadopago-sdk.mjs","sources":["../../../projects/ngx-mercadopago/src/lib/ngx-mercadopago.service.ts","../../../projects/ngx-mercadopago/src/lib/ngx-mercadopago.module.ts","../../../projects/ngx-mercadopago/src/public-api.ts","../../../projects/ngx-mercadopago/src/ngx-mercadopago-sdk.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { MercadopagoSDk, PaymentMethod, PaymentForm, CardInstallment, PaymentMethodSearch, CardToken, Installments, ErrorData, IdentificationType, FieldOptions, InstallmentSearchParams, CardTokenOptions, FieldElement, CardTokenSavedOptions } from './interfaces/mercadopago-sdk';\r\nimport { NgxMercadopagoConfiguration } from './interfaces/ngx-mercadopago';\r\nimport { Observable, bindCallback, from } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n\r\n/** @hidden */\r\nconst pathSDK = 'https://secure.mlstatic.com/sdk/javascript/v1/mercadopago.js';\r\nconst pathSDKSecurity = 'https://www.mercadopago.com/v2/security.js';\r\n/** @hidden */\r\nexport const ConfigToken = new InjectionToken<NgxMercadopagoConfiguration>('config');\r\n\r\ndeclare var MercadoPago: MercadopagoSDk;\r\n\r\ndeclare global {\r\n  interface Window {\r\n    MercadoPago: any;\r\n  }\r\n}\r\n\r\nexport class NgxMercadopagoService {\r\n  private initialized!: boolean;\r\n  private cardNumberElement!: FieldElement;\r\n  private securityCodeElement!: FieldElement;\r\n  private paymentMethod!: PaymentMethod;\r\n\r\n  constructor(\r\n    private config: NgxMercadopagoConfiguration,\r\n  ) {\r\n    if (!config.pathSDK) {\r\n      config.pathSDK = pathSDK;\r\n    }\r\n\r\n    if (!config.pathSDKSecurity) {\r\n      config.pathSDKSecurity = pathSDKSecurity\r\n    }\r\n\r\n    this.initialized = false;\r\n  }\r\n\r\n  initialize(publishKey?: string, loadingOnlyCVC?: boolean): Promise<MercadopagoSDk> {\r\n    return new Promise((resolve, reject) => {\r\n      this.loadMPScript(this.config.pathSDKSecurity || pathSDKSecurity, true)\r\n        .onload = () => {\r\n\r\n          const sdkMercadoPago = this.loadMPScript(this.config.pathSDK ?? pathSDK, false);\r\n\r\n          sdkMercadoPago.onload = () => {\r\n            this.initialized = true;\r\n            MercadoPago = new window['MercadoPago'](publishKey || this.config.publishKey, { locale: 'pt-BR' });\r\n            this.createForm(loadingOnlyCVC);\r\n            // MercadoPago.setPublishableKey();\r\n\r\n            return resolve(MercadoPago);\r\n          };\r\n\r\n          sdkMercadoPago.onerror = (error) => reject(error);\r\n        };\r\n\r\n      this.loadMPScript(pathSDKSecurity).onerror = (error) => reject(error);\r\n    });\r\n  }\r\n\r\n  loadMPScript(src: string, scurity?: boolean): HTMLScriptElement {\r\n    const script = document.createElement('script');\r\n    script.type = 'text/javascript';\r\n    script.src = src;\r\n    if (scurity) {\r\n      script.setAttribute('view', 'checkout');\r\n      script.setAttribute('output', 'deviceId');\r\n    }\r\n    document.body.appendChild(script);\r\n    return script;\r\n  }\r\n\r\n  async clearSession() {\r\n    MercadoPago.clearSession();\r\n  };\r\n\r\n  private createForm(loadingOnlyCVC?: boolean) {\r\n    if (!loadingOnlyCVC) {\r\n      this.cardNumberElement = MercadoPago.fields.create('cardNumber', {\r\n        placeholder: \"Número do cartão\"\r\n      }).mount('cardNumber');\r\n\r\n      this.securityCodeElement = MercadoPago.fields.create('securityCode', {\r\n        placeholder: \"CVC\"\r\n      }).mount('securityCode');\r\n\r\n      MercadoPago.fields.create('expirationDate', {\r\n        placeholder: \"MM/YY\",\r\n      }).mount('expirationDate');\r\n\r\n      // Esta etapa melhora as validações cardNumber e securityCode (De acordo com a documentação MP)\r\n      let currentBin: any;\r\n\r\n      this.cardNumberElement.on('binChange', async (data: any) => {\r\n        const { bin } = data;\r\n        if (bin && bin !== currentBin) {\r\n          this.getPaymentMethods({ bin }).subscribe((result: PaymentMethod[]) => {\r\n            if (result[0] != undefined) {\r\n              this.paymentMethod = result[0];\r\n              this.updatePCIFieldsSettings(result[0]);\r\n              const transactionAmountElement = document.getElementById('transactionAmount') as HTMLInputElement;\r\n              this.getInstallments(bin, parseFloat(transactionAmountElement.value));\r\n            }\r\n          });\r\n        }\r\n      });\r\n    } else {\r\n      this.securityCodeElement = MercadoPago.fields.create('securityCode', {\r\n        placeholder: \"CVC\"\r\n      }).mount('securityCode');\r\n    }\r\n  }\r\n\r\n  createToken(form: CardTokenOptions | CardTokenSavedOptions): Observable<CardToken | ErrorData> {\r\n    return from(MercadoPago.fields.createCardToken(form)).pipe(\r\n      map(response => response)\r\n    );\r\n  }\r\n\r\n  getPaymentMethods(params?: PaymentMethodSearch): Observable<PaymentMethod[]> {\r\n    return from(MercadoPago.getPaymentMethods(params)).pipe(\r\n      map(response => { return response.results })\r\n    );\r\n  }\r\n\r\n  updatePCIFieldsSettings(paymentMethod: PaymentMethod) {\r\n    // Atualiza as configurações do cardNumber\r\n    const cardNumberSettings = paymentMethod.settings[0].card_number;\r\n    this.cardNumberElement.update({\r\n      settings: cardNumberSettings\r\n    });\r\n\r\n    // Atualiza as configurações do securityCode\r\n    const securityCodeSettings = paymentMethod.settings[0].security_code;\r\n    this.securityCodeElement.update({\r\n      settings: securityCodeSettings\r\n    });\r\n  }\r\n\r\n  getIdentificationTypes(): Observable<IdentificationType[]> {\r\n    return from(MercadoPago.getIdentificationTypes()).pipe(\r\n      map(response => response)\r\n    );\r\n  }\r\n\r\n  getInstallments(bin: any, value: number): Observable<Installments[]> {\r\n    let params: InstallmentSearchParams = {\r\n      amount: value,\r\n      bin: bin,\r\n      paymentTypeId: this.paymentMethod.payment_type_id,\r\n    }\r\n\r\n    return from(MercadoPago.getInstallments(params)).pipe(\r\n      map(response => response)\r\n    );\r\n  }\r\n\r\n  validateExpiryDate(month: string, year: string): boolean {\r\n    return MercadoPago.validateExpiryDate(month, year);\r\n  }\r\n}\r\n","import { ModuleWithProviders, NgModule, Inject, PLATFORM_ID } from '@angular/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport { NgxMercadopagoConfiguration } from './interfaces/ngx-mercadopago';\r\nimport { NgxMercadopagoService } from './ngx-mercadopago.service';\r\n\r\n\r\n@NgModule({\r\n  imports: [],\r\n})\r\nexport class NgxMercadopagoModule {\r\n  private static config: NgxMercadopagoConfiguration | null = null;\r\n\r\n  constructor(\r\n    private mercadopagoService: NgxMercadopagoService,\r\n    @Inject(PLATFORM_ID) platformId: Object\r\n  ) {\r\n    if (!NgxMercadopagoModule.config) {\r\n      throw Error('ngx-mercadopago not configured correctly. Pass the `publishKey` property to the `forRoot()` function');\r\n    }\r\n    if (NgxMercadopagoModule.config.publishKey && isPlatformBrowser(platformId)) {\r\n      this.mercadopagoService.initialize(NgxMercadopagoModule.config.publishKey);\r\n    }\r\n  }\r\n\r\n  static forRoot(config: NgxMercadopagoConfiguration): ModuleWithProviders<NgxMercadopagoModule> {\r\n    this.config = config;\r\n    const publishKey = config.publishKey;\r\n    this.verifypublishKey(publishKey);\r\n\r\n    return {\r\n      ngModule: NgxMercadopagoModule,\r\n      providers: [NgxMercadopagoService, { provide: 'config', useValue: config }]\r\n    };\r\n  }\r\n\r\n  /**\r\n * Verifies the Pixel ID that was passed into the configuration.\r\n * - Checks if Pixel was initialized\r\n * @param publishKey Pixel ID to verify\r\n */\r\n  private static verifypublishKey(publishKey: string): void {\r\n    // Have to verify first that all Pixel IDs follow the same 15 digit format\r\n    if (publishKey === null || publishKey === undefined || publishKey.length === 0) {\r\n      throw Error('Invalid publishKey. Did you pass the ID into the forRoot() function?');\r\n    }\r\n  }\r\n}","/*\r\n * Public API Surface of ngx-mercadopago\r\n */\r\n\r\nexport * from './lib/ngx-mercadopago.service';\r\nexport * from './lib/ngx-mercadopago.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}