@miden-npm/angular 0.0.36 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/buzapay-checkout/index.d.ts +15 -7
- package/fesm2022/miden-npm-angular-buzapay-checkout.mjs +63 -11
- package/fesm2022/miden-npm-angular-buzapay-checkout.mjs.map +1 -1
- package/fesm2022/miden-npm-angular.mjs +1 -3
- package/fesm2022/miden-npm-angular.mjs.map +1 -1
- package/index.d.ts +5 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"miden-npm-angular-buzapay-checkout.mjs","sources":["../../buzapay-checkout/src/lib/components/pay-by-card/pay-by-card.component.ts","../../buzapay-checkout/src/lib/components/pay-by-card/pay-by-card.component.html","../../buzapay-checkout/src/lib/components/pay-by-transfer/pay-by-transfer.component.ts","../../buzapay-checkout/src/lib/components/pay-by-transfer/pay-by-transfer.component.html","../../buzapay-checkout/src/lib/components/pay-by-stable-coin/pay-by-stable-coin.component.ts","../../buzapay-checkout/src/lib/components/pay-by-stable-coin/pay-by-stable-coin.component.html","../../buzapay-checkout/src/lib/checkout-card/checkout-card.component.ts","../../buzapay-checkout/src/lib/checkout-card/checkout-card.component.html","../../buzapay-checkout/src/lib/checkout-iframe/checkout-iframe.component.ts","../../buzapay-checkout/src/lib/checkout-iframe/checkout-iframe.component.html","../../buzapay-checkout/src/lib/checkout-button/checkout-button.component.ts","../../buzapay-checkout/src/lib/checkout-button/checkout-button.component.html","../../buzapay-checkout/miden-npm-angular-buzapay-checkout.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport {\n ButtonComponent,\n cardType,\n checkObjectTruthy,\n CheckoutService,\n EncryptService,\n getQueryParams,\n getValidationErrorMessage,\n IApiResponse,\n IAuthorizeCardPaymentPayload,\n IBillingDetails,\n ICardDetails,\n ICountry,\n InputComponent,\n IPaymentObject,\n ISelectOption,\n IState,\n ISuccessObject,\n ResourceService,\n SelectComponent,\n formatAmount,\n} from '@miden-npm/angular';\nimport { finalize, tap } from 'rxjs';\n\n@Component({\n selector: 'pay-by-card',\n standalone: true,\n templateUrl: './pay-by-card.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ButtonComponent, InputComponent, SelectComponent, ReactiveFormsModule],\n})\nexport class PayByCardComponent implements OnInit {\n constructor(\n private resources: ResourceService,\n private cdr: ChangeDetectorRef,\n private checkout: CheckoutService,\n private encryptService: EncryptService,\n ) {}\n\n @Input() secretKey: string = '';\n @Input() environment: 'sandbox' | 'prod' = 'sandbox';\n @Input() paymentObject: IPaymentObject = {\n merchantName: '',\n amount: 0,\n currency: '',\n email: '',\n phoneNumber: '',\n narration: '',\n redirectUrl: '',\n };\n @Output() paymentAuthorized = new EventEmitter<ISuccessObject>();\n\n loading: boolean = false;\n loadingCountries: boolean = false;\n loadingStates: boolean = false;\n isMakingPayment: boolean = false;\n cardType: string = '';\n message: string = '';\n transactionReference: string = '';\n rawCountries: ICountry[] = [];\n countries: ISelectOption[] = [];\n countryStates: ISelectOption[] = [];\n formIndex: number = 0;\n setFormIndex(index: number) {\n this.formIndex = index;\n }\n\n billingForm = new FormGroup({\n address1: new FormControl('', [Validators.required]),\n address2: new FormControl(''),\n postalCode: new FormControl('', [Validators.required]),\n state: new FormControl('', [Validators.required]),\n city: new FormControl('', [Validators.required]),\n country: new FormControl('', [Validators.required]),\n emailAddress: new FormControl('', [Validators.required, Validators.email]),\n phoneNumber: new FormControl('', [Validators.required]),\n });\n\n payForm = new FormGroup({\n customerName: new FormControl('', [Validators.required]),\n cardNo: new FormControl('', [Validators.required]),\n expireDate: new FormControl('', [Validators.required]),\n cvv: new FormControl('', [Validators.required]),\n cardPin: new FormControl(''), // Only required for Verve cards\n });\n\n getError(formKey: string, controlName: string, label?: string): string | null {\n const control =\n formKey === 'billing' ? this.billingForm.get(controlName) : this.payForm.get(controlName);\n return getValidationErrorMessage(control, label);\n }\n\n get formatAmountHandler(): string {\n return formatAmount(this.paymentObject.amount, this.paymentObject.currency);\n }\n\n cardNumberInputHandler(event: string): void {\n this.cardType = cardType(event);\n this.updatePinValidation();\n }\n\n updatePinValidation(): void {\n const cardPinControl = this.payForm.get('cardPin');\n if (this.cardType === 'Verve') {\n cardPinControl?.setValidators([Validators.required]);\n } else {\n cardPinControl?.clearValidators();\n }\n cardPinControl?.updateValueAndValidity();\n }\n\n async getAllCountries(): Promise<void> {\n this.loadingCountries = true;\n this.cdr.markForCheck();\n this.resources\n .getCountries(this.environment, this.secretKey)\n .pipe(\n tap((res: IApiResponse<ICountry[]>) => {\n if (res?.isSuccessful) {\n this.rawCountries = res.data ?? [];\n this.countries = (res.data ?? []).map((c) => {\n return { label: c.countryName, value: c.iso2 };\n });\n }\n }),\n finalize(() => {\n this.loadingCountries = false;\n this.cdr.markForCheck();\n }),\n )\n .subscribe();\n }\n\n async getCountryStates(countryIso2: string): Promise<void> {\n const country: any = this.rawCountries.filter((c) => c.iso2 === countryIso2);\n this.loadingStates = true;\n this.cdr.markForCheck();\n this.resources\n .getCountryStates(country[0].iso3, this.environment, this.secretKey)\n .pipe(\n tap((res: IApiResponse<IState[]>) => {\n if (res?.isSuccessful) {\n this.countryStates = (res.data ?? []).map((s) => {\n return { label: s.name, value: s.name };\n });\n }\n }),\n finalize(() => {\n this.loadingStates = false;\n this.cdr.markForCheck();\n }),\n )\n .subscribe();\n }\n\n async generatePaymentLinkHandler(): Promise<void | string> {\n if (!this.secretKey) {\n return (this.message = 'Secret key is required.');\n }\n\n if (!checkObjectTruthy<IPaymentObject>(this.paymentObject)) {\n return (this.message = 'Kindly ensure you are passing all the required data.');\n }\n\n this.loading = true;\n this.cdr.markForCheck();\n this.checkout\n .createPaymentLink(this.paymentObject, this.environment, this.secretKey)\n .pipe(\n tap((res: IApiResponse<any>) => {\n if (res?.isSuccessful) {\n this.message = 'Payment link created successfully';\n const queryParams = getQueryParams(res.launchUrl ?? '');\n this.transactionReference = queryParams['paymentReference'];\n } else {\n this.message = 'Failed to create payment link';\n }\n }),\n finalize(() => {\n this.loading = false;\n this.cdr.markForCheck();\n }),\n )\n .subscribe();\n }\n\n async proceedHandler(): Promise<void> {\n if (this.formIndex === 0) {\n if (this.billingForm && this.billingForm.valid) {\n this.checkout.setBillingInfo({ ...this.billingForm.value });\n this.setFormIndex(1);\n } else {\n this.billingForm.markAllAsTouched();\n }\n } else {\n if (this.payForm && this.payForm.valid) {\n try {\n this.isMakingPayment = true;\n\n // Create card details object for encryption\n const cardDetails: ICardDetails = {\n pan: this.payForm.value.cardNo ?? '',\n expiryDate: this.payForm.value.expireDate ?? '',\n cvv: this.payForm.value.cvv ?? '',\n cardScheme: this.cardType,\n nameOnCard: this.payForm.value.customerName ?? '',\n ...(this.cardType === 'Verve' && { pin: this.payForm.value.cardPin ?? '' }),\n };\n\n // Get billing details from the form control\n const billingDetails: IBillingDetails = {\n address2: this.billingForm.value.address2 ?? '',\n address1: this.billingForm.value.address1 ?? '',\n postalCode: this.billingForm.value.postalCode ?? '',\n state: this.billingForm.value.state ?? '',\n city: this.billingForm.value.city ?? '',\n country: this.billingForm.value.country ?? '',\n emailAddress: this.billingForm.value.emailAddress ?? '',\n phoneNumber: this.billingForm.value.phoneNumber ?? '',\n };\n\n // Encrypt card details using payload encryption method\n const encryptedCardDetails = this.encryptService.encryptPayload(\n this.secretKey,\n cardDetails,\n );\n\n // Test: Decrypt to verify encryption works\n // const decryptedTest = this.encryptService.decryptPayload(\n // this.environment,\n // encryptedCardDetails.requestParam,\n // );\n\n const payload: IAuthorizeCardPaymentPayload = {\n customerId: this.paymentObject?.email || this.payForm.value.customerName || '',\n amount: this.paymentObject?.amount.toString(),\n currency: this.paymentObject?.currency || 'USD',\n narration: this.paymentObject?.narration || 'Test transaction',\n encryptedCardDetails: encryptedCardDetails.requestParam, // Use the encrypted card details\n billingDetails: billingDetails,\n redirectUrl: this.paymentObject?.redirectUrl || '',\n paymentReference: this.transactionReference,\n isCheckout: true,\n };\n\n this.checkout\n .authorizeCardPayment(this.environment, {\n ...payload,\n merchantId: this.secretKey,\n })\n .subscribe({\n next: async (response: any) => {\n let processedResponse = response;\n\n // Check if response is encrypted (has responseParam)\n if (response?.responseParam) {\n // Decrypt the response\n processedResponse = this.encryptService.decryptPayload(\n this.environment,\n response.responseParam,\n );\n }\n\n if (processedResponse?.isSuccessful) {\n // Check for 3DS authentication requirement\n if (processedResponse.threeDsInteractionRequired === true) {\n // Store 3DS data for the authentication page\n const threeDsData = {\n transactionReference: processedResponse.transactionReference,\n threeDsHtml: processedResponse.threeDsHtml,\n amount: processedResponse.amount,\n responseMessage: processedResponse.responseMessage,\n // Pass all 3DS details\n paReq: processedResponse.threeDsHtml?.paReq,\n termUrl: processedResponse.threeDsHtml?.termUrl,\n action: processedResponse.threeDsHtml?.action,\n acsUrl: processedResponse.threeDsHtml?.acsUrl,\n md: processedResponse.threeDsHtml?.md,\n };\n\n // Encrypt 3DS data to pass as url param\n const stringifiedThreeDsData = btoa(JSON.stringify(threeDsData));\n\n // Open 3DS authentication page in a new tab\n const threeDsUrl = `https://sandbox-merchant.buzapay.com/account/three-ds-confirm?threeDsData=${encodeURIComponent(\n stringifiedThreeDsData,\n )}&paymentReference=${processedResponse.transactionReference}`;\n window.open(threeDsUrl, '_self', 'noopener,noreferrer');\n\n this.message =\n '3D Secure authentication opened in new tab. Please complete the verification';\n\n this.isMakingPayment = false;\n return;\n }\n\n // Fallback check: if response message indicates 3DS is required\n if (\n processedResponse.responseMessage === 'Payer Interaction Required' &&\n processedResponse.threeDsHtml\n ) {\n // Store 3DS data for the authentication page\n const threeDsData = {\n transactionReference: processedResponse.transactionReference,\n threeDsHtml: processedResponse.threeDsHtml,\n amount: processedResponse.amount,\n responseMessage: processedResponse.responseMessage,\n // Pass all 3DS details\n paReq: processedResponse.threeDsHtml?.paReq,\n termUrl: processedResponse.threeDsHtml?.termUrl,\n action: processedResponse.threeDsHtml?.action,\n acsUrl: processedResponse.threeDsHtml?.acsUrl,\n md: processedResponse.threeDsHtml?.md,\n };\n\n // Encrypt 3DS data to pass as url param\n const stringifiedThreeDsData = btoa(JSON.stringify(threeDsData));\n\n // Open 3DS authentication page in a new tab\n const threeDsUrl = `https://sandbox-merchant.buzapay.com/account/three-ds-confirm?threeDsData=${encodeURIComponent(\n stringifiedThreeDsData,\n )}&paymentReference=${processedResponse.transactionReference}`;\n window.open(threeDsUrl, '_self', 'noopener,noreferrer');\n\n this.message =\n '3D Secure authentication opened in new tab. Please complete the verification';\n this.isMakingPayment = false;\n return;\n }\n\n // Emit the transaction reference to parent component\n if (\n processedResponse.transactionReference &&\n processedResponse.transactionReference.trim() !== ''\n ) {\n this.paymentAuthorized.emit({\n paymentId: processedResponse.transactionReference,\n paymentDate: response.data.updatedAt,\n paymentStatus: 'Authorized',\n });\n }\n\n this.message = 'Card payment authorized successfully';\n\n // Handle legacy 3DS logic for backward compatibility\n // if (processedResponse.provider === 'myRoute2') {\n // if (processedResponse.requires3DS === true) {\n // this.router.navigateByUrl('account/visa-card-payment-confirm');\n // } else {\n // if (processedResponse.responseCode === 'T00') {\n // } else if (processedResponse.responseCode === '000') {\n // this.message = 'Please confirm transaction !!';\n // } else {\n // this.message = processedResponse.responseMessage;\n // }\n // }\n // } else if (processedResponse.provider === 'myRoute1') {\n // if (processedResponse.requires3DS === true) {\n // this.router.navigateByUrl('account/visa-card-payment-confirm2');\n // }\n // }\n\n this.isMakingPayment = false;\n } else {\n this.isMakingPayment = false;\n this.message = processedResponse.responseMessage || 'Payment failed';\n this.paymentAuthorized.emit({\n paymentId: processedResponse.transactionReference,\n paymentDate: response.data.updatedAt,\n paymentStatus: 'Payment failed',\n });\n }\n },\n error: (err) => {\n this.isMakingPayment = false;\n if (err.error?.responseParam) {\n // Decrypt error response\n const decryptedErrorResponse = this.encryptService.decryptPayload(\n this.environment,\n err.error.responseParam,\n );\n this.message = decryptedErrorResponse.responseMessage || 'Payment failed';\n } else {\n this.message = err.error.responseMessage || err.error.message || 'Payment failed';\n }\n },\n });\n } catch (error) {\n this.isMakingPayment = false;\n this.message = 'An unexpected error occurred';\n }\n } else {\n this.payForm.markAllAsTouched();\n }\n }\n }\n\n async ngOnInit(): Promise<void> {\n await this.generatePaymentLinkHandler();\n await this.getAllCountries();\n }\n}\n","<div class=\"flex flex-col gap-6\">\n <!-- Billing Details -->\n @if (formIndex === 0) {\n <form [formGroup]=\"billingForm\">\n <div class=\"grid grid-cols-2 gap-6 overflow-y-auto\">\n <div class=\"col-span-2\">\n <base-input\n formControlName=\"address1\"\n label=\"Address Line 1\"\n [required]=\"true\"\n [validationError]=\"getError('billing', 'address1', 'Address Line 1') || ''\"\n ></base-input>\n </div>\n <div class=\"col-span-2\">\n <base-input formControlName=\"address2\" label=\"Address Line 2\"></base-input>\n </div>\n <base-select\n formControlName=\"country\"\n label=\"Select Country\"\n [required]=\"true\"\n [options]=\"countries\"\n [loading]=\"loadingCountries\"\n [validationError]=\"getError('billing', 'country', 'Country') || ''\"\n (onSelectChange)=\"getCountryStates($event)\"\n ></base-select>\n <base-select\n formControlName=\"state\"\n label=\"Select State\"\n [required]=\"true\"\n [options]=\"countryStates\"\n [loading]=\"loadingStates\"\n [validationError]=\"getError('billing', 'state', 'State') || ''\"\n ></base-select>\n <base-input\n formControlName=\"city\"\n label=\"City\"\n [required]=\"true\"\n [validationError]=\"getError('billing', 'city', 'City') || ''\"\n ></base-input>\n <base-input\n formControlName=\"postalCode\"\n label=\"Postal Code\"\n [required]=\"true\"\n [validationError]=\"getError('billing', 'postalCode', 'Postal Code') || ''\"\n ></base-input>\n <base-input\n formControlName=\"emailAddress\"\n label=\"Email\"\n [required]=\"true\"\n [validationError]=\"getError('billing', 'emailAddress', 'Email Address') || ''\"\n ></base-input>\n <base-input\n formControlName=\"phoneNumber\"\n label=\"Phone Number\"\n [required]=\"true\"\n [validationError]=\"getError('billing', 'phoneNumber', 'Phone Number') || ''\"\n ></base-input>\n </div>\n </form>\n }\n\n <!-- Card Details -->\n @if (formIndex === 1) {\n <form [formGroup]=\"payForm\">\n <div class=\"grid grid-cols-2 gap-6 overflow-y-auto\" style=\"max-height: 320px\">\n <div class=\"col-span-2\">\n <base-input\n formControlName=\"customerName\"\n label=\"Card Name\"\n [required]=\"true\"\n [validationError]=\"getError('pay', 'customerName', 'Customer Name') || ''\"\n ></base-input>\n </div>\n <div class=\"col-span-2\">\n <base-input\n formControlName=\"cardNo\"\n label=\"Card Number\"\n [required]=\"true\"\n mask=\"0000 0000 0000 0000\"\n placeholder=\"0000 0000 0000 0000\"\n [preventPaste]=\"true\"\n [validationError]=\"getError('pay', 'cardNo', 'Card Number') || ''\"\n (onInputChange)=\"cardNumberInputHandler($event)\"\n ></base-input>\n </div>\n <base-input\n formControlName=\"expireDate\"\n label=\"Expiry Date\"\n [required]=\"true\"\n mask=\"00/00\"\n placeholder=\"00/00\"\n [validationError]=\"getError('pay', 'expireDate', 'Expiry Date') || ''\"\n ></base-input>\n <base-input\n formControlName=\"cvv\"\n label=\"CVV\"\n [required]=\"true\"\n mask=\"000\"\n placeholder=\"000\"\n [validationError]=\"getError('pay', 'cvv', 'CVV') || ''\"\n ></base-input>\n\n @if (cardType === 'Verve') {\n <base-input\n formControlName=\"cardPin\"\n label=\"Card Pin\"\n type=\"password\"\n placeholder=\"0000\"\n mask=\"0000\"\n [required]=\"true\"\n [validationError]=\"getError('pay', 'cardPin', 'Card Pin') || ''\"\n ></base-input>\n <div class=\"text-sm text-blue-600 mb-4\">\n <i class=\"fas fa-info-circle mr-1\"></i>\n Pin is required for Verve cards\n </div>\n }\n </div>\n </form>\n }\n\n <base-button\n [label]=\"formIndex === 0 ? 'Proceed' : 'Pay ' + formatAmountHandler\"\n type=\"primary\"\n customClass=\"w-full\"\n [loading]=\"isMakingPayment\"\n (onClick)=\"proceedHandler()\"\n ></base-button>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n OnDestroy,\n ChangeDetectorRef,\n Input,\n EventEmitter,\n Output,\n} from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport {\n LabelInfoComponent,\n CopyComponent,\n ButtonComponent,\n IPaymentObject,\n CheckoutService,\n checkObjectTruthy,\n IApiResponse,\n IPaymentAccountResponse,\n formatAmount,\n getValidationErrorMessage,\n IPaymentReferenceDetail,\n InputComponent,\n getQueryParams,\n ISuccessObject,\n} from '@miden-npm/angular';\nimport { finalize, tap } from 'rxjs';\n\n@Component({\n selector: 'pay-by-transfer',\n standalone: true,\n templateUrl: './pay-by-transfer.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n LabelInfoComponent,\n CopyComponent,\n ButtonComponent,\n ReactiveFormsModule,\n InputComponent,\n ],\n})\nexport class PayByTransferComponent implements OnInit, OnDestroy {\n constructor(\n private checkout: CheckoutService,\n private cdr: ChangeDetectorRef,\n ) {}\n\n @Input() secretKey: string = '';\n @Input() environment: string = '';\n @Input() paymentObject: IPaymentObject = {\n merchantName: '',\n amount: 0,\n currency: '',\n email: '',\n phoneNumber: '',\n narration: '',\n redirectUrl: '',\n };\n @Output() paymentAuthorized = new EventEmitter<ISuccessObject>();\n\n message: string = '';\n generatingLink: boolean = false;\n isMakingPayment: boolean = false;\n isFetchingPaymentDetails: boolean = false;\n isConfirmCall: boolean = false;\n paymentMade: boolean = false;\n isPaymentConfirmed: boolean = false;\n paymentAccountDetails: IPaymentAccountResponse | null = null;\n paymentReferenceDetails: IPaymentReferenceDetail | null = null;\n transactionReference: string = '';\n paymentReferenceStatus: string = '';\n countDownTime: string = '';\n private remainingSeconds = 30 * 60;\n private intervalId: ReturnType<typeof setInterval> | null = null;\n\n private updateDisplay(): void {\n const minutes = Math.floor(this.remainingSeconds / 60);\n const seconds = this.remainingSeconds % 60;\n this.countDownTime = `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;\n this.cdr.markForCheck(); // 👈 notify OnPush to re-render\n }\n\n transferForm = new FormGroup({\n customerName: new FormControl('', [Validators.required]),\n });\n\n getError(controlName: string, label?: string): string | null {\n const control = this.transferForm.get(controlName);\n return getValidationErrorMessage(control, label);\n }\n\n get formatAmountHandler(): string {\n return formatAmount(this.paymentObject.amount, this.paymentObject.currency);\n }\n\n private startTimer(): void {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = null;\n }\n\n this.updateDisplay();\n this.intervalId = setInterval(() => {\n this.remainingSeconds--;\n\n if (this.remainingSeconds < 0) {\n clearInterval(this.intervalId!);\n this.intervalId = null;\n this.countDownTime = '00:00';\n this.cdr.markForCheck();\n return;\n }\n\n this.updateDisplay();\n }, 1000);\n }\n\n async generatePaymentLinkHandler(): Promise<void | string> {\n if (!this.secretKey) {\n return (this.message = 'Secret key is required.');\n }\n\n if (!checkObjectTruthy<IPaymentObject>(this.paymentObject)) {\n return (this.message = 'Kindly ensure you are passing all the required data.');\n }\n\n this.generatingLink = true;\n this.cdr.markForCheck();\n this.checkout\n .createPaymentLink(this.paymentObject, this.environment, this.secretKey)\n .pipe(\n tap((res: IApiResponse<any>) => {\n if (res?.isSuccessful) {\n this.message = 'Payment link created successfully';\n const queryParams = getQueryParams(res.launchUrl ?? '');\n this.transactionReference = queryParams['paymentReference'];\n } else {\n this.message = 'Failed to create payment link';\n }\n }),\n finalize(() => {\n this.generatingLink = false;\n this.cdr.markForCheck();\n }),\n )\n .subscribe();\n }\n\n async payHandler() {\n if (this.transferForm && this.transferForm.valid) {\n const payload = {\n paymentReference: this.transactionReference,\n channel: 'virtual_account',\n customerName: this.transferForm.value.customerName ?? '',\n merchantId: this.secretKey,\n };\n\n this.isMakingPayment = true;\n await this.checkout.generatePaymentAccount(this.environment, payload).subscribe({\n next: async (response: IApiResponse<IPaymentAccountResponse>) => {\n if (response?.isSuccessful) {\n this.paymentAccountDetails = response.data;\n this.startTimer();\n this.message = 'Virtual account generated successfully for payment.';\n\n this.isMakingPayment = false;\n }\n },\n error: (err) => {\n this.isMakingPayment = false;\n this.message = err.error.responseMessage || err.error.message;\n },\n });\n } else {\n this.transferForm?.markAllAsTouched();\n }\n }\n\n async getReferenceDetails(): Promise<void> {\n this.isFetchingPaymentDetails = true;\n await this.checkout\n .getPaymentReferenceDetails(this.environment, this.transactionReference)\n .subscribe({\n next: async (response: IApiResponse<IPaymentReferenceDetail>) => {\n if (response?.isSuccessful) {\n this.paymentReferenceDetails = response.data;\n\n // Check if payment has been made (paymentStatus is \"Payment Received\")\n if (response.data?.paymentStatus === 'Payment Received') {\n this.paymentMade = true;\n }\n\n if (\n response.data?.finalTransactionStatus === null ||\n response.data?.paymentStatus === null\n ) {\n if (this.isConfirmCall) {\n this.message = 'Transaction not confirmed !!';\n }\n // Only set to pending if payment hasn't been confirmed locally or made locally\n if (!this.isPaymentConfirmed && !this.paymentMade) {\n this.paymentReferenceStatus = 'pending';\n this.paymentAuthorized.emit({\n paymentId: this.transactionReference,\n paymentDate: response.data.updatedAt,\n paymentStatus: this.paymentReferenceStatus,\n });\n } else {\n this.paymentReferenceStatus = 'confirmed';\n this.paymentAuthorized.emit({\n paymentId: this.transactionReference,\n paymentDate: response.data.updatedAt,\n paymentStatus: this.paymentReferenceStatus,\n });\n }\n } else if (\n response.data?.finalTransactionStatus === 'Success' ||\n response.data?.paymentStatus === 'Received' ||\n response.data?.paymentStatus === 'Payment Received'\n ) {\n this.paymentAuthorized.emit({\n paymentId: this.transactionReference,\n paymentDate: response.data.updatedAt,\n paymentStatus: this.paymentReferenceStatus,\n });\n this.message = 'Transaction confirmed !!';\n this.paymentReferenceStatus = 'confirmed';\n this.isPaymentConfirmed = true;\n }\n } else if (!response?.isSuccessful && response?.responseCode === '119') {\n this.paymentReferenceStatus = 'used';\n this.message = response.responseMessage;\n this.paymentAuthorized.emit({\n paymentId: this.transactionReference,\n paymentDate: null,\n paymentStatus: this.paymentReferenceStatus,\n });\n }\n this.isFetchingPaymentDetails = false;\n },\n error: (err) => {\n this.paymentReferenceStatus = '';\n this.isFetchingPaymentDetails = false;\n this.message = err.error.responseMessage || err.error.message;\n },\n });\n }\n\n async ngOnInit(): Promise<void> {\n this.startTimer();\n await this.generatePaymentLinkHandler();\n }\n\n ngOnDestroy(): void {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = null;\n }\n }\n}\n","<div class=\"flex flex-col gap-10\">\n @if (!paymentAccountDetails) {\n <form [formGroup]=\"transferForm\">\n <div class=\"flex flex-col gap-10\">\n <base-input\n formControlName=\"customerName\"\n label=\"Customer Name\"\n [required]=\"true\"\n [validationError]=\"getError('customerName', 'Customer Name') || ''\"\n ></base-input>\n\n <base-button\n [label]=\"'Pay ' + formatAmountHandler\"\n type=\"primary\"\n customClass=\"w-full\"\n [loading]=\"isMakingPayment\"\n (onClick)=\"payHandler()\"\n ></base-button>\n </div>\n </form>\n }\n\n @if (paymentAccountDetails) {\n <div class=\"flex flex-col gap-10\">\n <div class=\"bg-[#EFF7FF] p-4 rounded-lg flex flex-col gap-6\">\n <base-label-info\n label=\"Bank Name\"\n [value]=\"paymentAccountDetails.bank + ' - ' + paymentAccountDetails.accountName\"\n ></base-label-info>\n <div class=\"flex items-center justify-between\">\n <base-label-info\n label=\"Account Number\"\n [value]=\"paymentAccountDetails.accountNumber\"\n ></base-label-info>\n <base-copy color=\"#9DBFDE\" [copyText]=\"paymentAccountDetails.accountNumber\"></base-copy>\n </div>\n <div class=\"flex items-center justify-between\">\n <base-label-info label=\"Amount\" [value]=\"formatAmountHandler\"></base-label-info>\n <base-copy color=\"#9DBFDE\" [copyText]=\"formatAmountHandler\"></base-copy>\n </div>\n </div>\n\n <p class=\"w-2/3 mx-auto text-center text-body-2xs font-medium text-sub-copy\">\n This account is for this transaction only and expires in\n <span class=\"text-orange-500\">{{ countDownTime }}</span>\n </p>\n\n <div class=\"flex flex-col gap-4\">\n <base-button\n label=\"I have paid the money\"\n type=\"primary\"\n customClass=\"w-full\"\n [loading]=\"isFetchingPaymentDetails\"\n (onClick)=\"getReferenceDetails()\"\n ></base-button>\n <p class=\"text-heading-text text-body-2xs font-medium text-center py-2 cursor-pointer\">\n Cancel Payment\n </p>\n </div>\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport {\n ButtonComponent,\n checkObjectTruthy,\n CheckoutService,\n CopyComponent,\n CurrencyAmountComponent,\n getQueryParams,\n getValidationErrorMessage,\n IApiResponse,\n IconArrowSwapComponent,\n IGenerateStableCoinAddress,\n IGenerateStableCoinAddressResponse,\n ImageComponent,\n IPaymentObject,\n IPaymentReferenceDetail,\n ISelectOption,\n ISuccessObject,\n ResourceService,\n SelectComponent,\n formatAmount,\n} from '@miden-npm/angular';\nimport { finalize, tap } from 'rxjs';\n\n@Component({\n selector: 'pay-by-stable-coin',\n standalone: true,\n templateUrl: './pay-by-stable-coin.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n SelectComponent,\n ButtonComponent,\n // ImageComponent,\n CurrencyAmountComponent,\n CopyComponent,\n IconArrowSwapComponent,\n ReactiveFormsModule,\n ],\n})\nexport class PayByStableCoinComponent implements OnInit {\n constructor(\n private resource: ResourceService,\n private checkout: CheckoutService,\n private cdr: ChangeDetectorRef,\n ) {}\n\n @Input() secretKey: string = '';\n @Input() environment: string = '';\n @Input() paymentObject: IPaymentObject = {\n merchantName: '',\n amount: 0,\n currency: '',\n email: '',\n phoneNumber: '',\n narration: '',\n redirectUrl: '',\n };\n @Output() paymentAuthorized = new EventEmitter<ISuccessObject>();\n\n message: string = '';\n transactionReference: string = '';\n paymentReferenceStatus: string = '';\n generateAddressPayload: IGenerateStableCoinAddress | null = null;\n addressDetails: IGenerateStableCoinAddressResponse | null = null;\n paymentReferenceDetails: IPaymentReferenceDetail | null = null;\n stableCoins: ISelectOption[] = [];\n networkList: ISelectOption[] = [];\n loadingStableCoins: boolean = false;\n generatingAddress: boolean = false;\n isConfirmingPayment: boolean = false;\n loading: boolean = false;\n loadingStableCoinNetworks: boolean = false;\n formIndex: number = 0;\n setFormIndex(index: number): void {\n this.formIndex = index;\n }\n\n stableCoinForm = new FormGroup({\n stableCoin: new FormControl('', [Validators.required]),\n network: new FormControl('', [Validators.required]),\n });\n\n getError(controlName: string, label?: string): string | null {\n const control = this.stableCoinForm.get(controlName);\n return getValidationErrorMessage(control, label);\n }\n\n get formatAmountHandler(): string {\n return formatAmount(this.paymentObject.amount, this.paymentObject.currency);\n }\n\n get amountPlusNetworkFee(): number {\n return this.addressDetails\n ? Number(this.addressDetails.transactionAmount) + this.addressDetails.networkFee\n : 0;\n }\n\n async generatePaymentLinkHandler(): Promise<void | string> {\n if (!this.secretKey) {\n return (this.message = 'Secret key is required.');\n }\n\n if (!checkObjectTruthy<IPaymentObject>(this.paymentObject)) {\n return (this.message = 'Kindly ensure you are passing all the required data.');\n }\n\n this.loading = true;\n this.cdr.markForCheck();\n this.checkout\n .createPaymentLink(this.paymentObject, this.environment, this.secretKey)\n .pipe(\n tap((res: IApiResponse<any>) => {\n if (res?.isSuccessful) {\n this.message = 'Payment link created successfully';\n const queryParams = getQueryParams(res.launchUrl ?? '');\n this.transactionReference = queryParams['paymentReference'];\n } else {\n this.message = 'Failed to create payment link';\n }\n }),\n finalize(() => {\n this.loading = false;\n this.cdr.markForCheck();\n }),\n )\n .subscribe();\n }\n\n generateAddress(): void {\n if (!this.generateAddressPayload) return;\n\n this.generatingAddress = true;\n this.cdr.markForCheck();\n\n this.checkout\n .generateStableCoinAddress(this.environment, this.generateAddressPayload)\n .pipe(\n tap((response: IApiResponse<IGenerateStableCoinAddressResponse>) => {\n if (response?.isSuccessful) {\n this.addressDetails = response.data;\n this.setFormIndex(1);\n }\n }),\n finalize(() => {\n this.generatingAddress = false;\n this.cdr.markForCheck();\n }),\n )\n .subscribe({\n error: (err) => {\n this.message = err.error.responseMessage || err.error.message;\n },\n });\n }\n\n async payHandler(): Promise<void> {\n if (this.stableCoinForm && this.stableCoinForm.valid) {\n this.generateAddressPayload = {\n paymentReference: this.transactionReference,\n currency: this.stableCoinForm.get('stableCoin')?.value ?? '',\n chain: this.stableCoinForm.get('network')?.value ?? '',\n transactionAmount: this.paymentObject?.amount,\n merchantId: this.secretKey,\n };\n await this.generateAddress();\n } else {\n this.stableCoinForm?.markAllAsTouched();\n }\n }\n\n async getStableCoins(): Promise<void> {\n this.loadingStableCoins = true;\n await this.resource.getStableCoins(this.environment).subscribe({\n next: async (response: IApiResponse<{ name: string }[]>) => {\n if (response?.isSuccessful) {\n this.stableCoins =\n response.data?.map((c) => ({\n label: c.name,\n value: c.name,\n })) ?? [];\n this.loadingStableCoins = false;\n }\n },\n error: (err) => {\n this.loadingStableCoins = false;\n this.message = err.error.responseMessage || err.error.message;\n },\n });\n }\n\n async getStableCoinNetworks(): Promise<void> {\n const stableCoin = this.stableCoinForm.get('stableCoin')?.value;\n this.loadingStableCoinNetworks = true;\n await this.resource.getStableCoinNetworks(this.environment, stableCoin ?? '').subscribe({\n next: async (response: IApiResponse<string[]>) => {\n if (response?.isSuccessful) {\n this.networkList =\n response.networks?.map((n) => ({\n label: n,\n value: n,\n })) ?? [];\n this.loadingStableCoinNetworks = false;\n }\n },\n error: (err: any) => {\n this.loadingStableCoinNetworks = false;\n this.message = err.error.responseMessage || err.error.message;\n },\n });\n }\n\n async confirmPaymentHandler(): Promise<void> {\n this.isConfirmingPayment = true;\n await this.checkout\n .getPaymentReferenceDetails(this.environment, this.transactionReference)\n .subscribe({\n next: async (response: IApiResponse<IPaymentReferenceDetail>) => {\n if (response?.isSuccessful) {\n this.paymentReferenceDetails = response.data;\n if (\n response.data?.finalTransactionStatus === null ||\n response.data?.paymentStatus === null\n ) {\n this.message = 'Transaction not confirmed !!';\n this.paymentReferenceStatus = 'pending';\n this.paymentAuthorized.emit({\n paymentId: this.transactionReference,\n paymentDate: response.data.updatedAt,\n paymentStatus: this.paymentReferenceStatus,\n });\n } else if (\n response.data?.finalTransactionStatus === 'Success' ||\n response.data?.paymentStatus === 'Payment Received'\n ) {\n this.message = 'Transaction confirmed !!';\n this.paymentReferenceStatus = 'confirmed';\n this.paymentAuthorized.emit({\n paymentId: this.transactionReference,\n paymentDate: response.data.updatedAt,\n paymentStatus: this.paymentReferenceStatus,\n });\n }\n } else if (!response?.isSuccessful && response?.responseCode === '119') {\n this.paymentReferenceStatus = 'used';\n this.message = response.responseMessage;\n this.paymentAuthorized.emit({\n paymentId: this.transactionReference,\n paymentDate: null,\n paymentStatus: this.paymentReferenceStatus,\n });\n }\n this.isConfirmingPayment = false;\n },\n error: (err) => {\n this.paymentReferenceStatus = '';\n this.isConfirmingPayment = false;\n this.message = err.error.responseMessage || err.error.message;\n },\n });\n }\n\n async ngOnInit(): Promise<void> {\n await this.generatePaymentLinkHandler();\n await this.getStableCoins();\n }\n}\n","<div class=\"flex flex-col gap-6\">\n @if (formIndex === 0) {\n <form [formGroup]=\"stableCoinForm\" class=\"grid grid-cols-1 gap-6\">\n <div class=\"grid grid-cols-1 gap-6\">\n <base-select\n formControlName=\"stableCoin\"\n label=\"Select Crypto\"\n [required]=\"true\"\n [options]=\"stableCoins\"\n [validationError]=\"getError('stableCoin', 'Select Crypto') ?? ''\"\n [loading]=\"loadingStableCoins\"\n (onSelectChange)=\"getStableCoinNetworks()\"\n ></base-select>\n <base-select\n formControlName=\"network\"\n label=\"Select Network\"\n [required]=\"true\"\n [options]=\"networkList\"\n [validationError]=\"getError('network', 'Network') ?? ''\"\n [loading]=\"loadingStableCoinNetworks\"\n ></base-select>\n </div>\n\n <base-button\n [label]=\"'Pay ' + formatAmountHandler\"\n type=\"primary\"\n customClass=\"w-full\"\n [loading]=\"generatingAddress\"\n (onClick)=\"payHandler()\"\n ></base-button>\n </form>\n }\n\n @if (formIndex === 1) {\n <div class=\"flex flex-col gap-6\">\n <div class=\"mx-auto\">\n <!-- <base-image\n src=\"../../../assets/images/stable-coin-qr-code.png\"\n alt=\"QR Code\"\n [width]=\"122\"\n [height]=\"122\"\n class=\"mb-1\"\n ></base-image> -->\n <p class=\"mb-0 text-body-4xs text-light-copy font-normal text-center\">\n {{ generateAddressPayload?.currency }}\n </p>\n </div>\n\n <div class=\"flex flex-col gap-6 border-c border-grey-100 p-4 rounded-2xl bg-light-white-50\">\n <div class=\"border-b border-grey-border pb-4 flex flex-col gap-2\">\n <p class=\"mb-0 text-body-3xs text-light-copy font-normal\">Network</p>\n <div class=\"flex justify-between\">\n <div class=\"flex flex-col gap-1\">\n <p class=\"mb-0 text-body-2xs font-medium text-sub-copy\">\n {{ addressDetails?.chain }}\n </p>\n <div class=\"flex items-center gap-2\">\n <p class=\"mb-0 text-body-3xs text-light-copy font-normal\">*Est. arrival = 3 mins</p>\n <p class=\"mb-0 text-body-3xs text-light-copy font-normal\">|</p>\n <base-currency-amount\n [currency]=\"generateAddressPayload?.currency ?? ''\"\n [amount]=\"addressDetails?.networkFee ?? 0\"\n textClass=\"mb-0 text-body-3xs text-light-copy font-normal\"\n iconColorClass=\"#557591\"\n iconWidth=\"12\"\n iconHeight=\"12\"\n ></base-currency-amount>\n </div>\n </div>\n <icon-arrow-swap></icon-arrow-swap>\n </div>\n </div>\n\n <div class=\"pb-4 flex flex-col gap-2\">\n <p class=\"mb-0 text-body-3xs text-light-copy font-normal\">Deposit Address ></p>\n <div class=\"flex justify-between\">\n <p class=\"mb-0 text-body-2xs font-medium text-sub-copy w-2/3 break-words\">\n {{ addressDetails?.walletAddress }}\n </p>\n <base-copy [copyText]=\"addressDetails?.walletAddress ?? ''\"></base-copy>\n </div>\n </div>\n\n <!-- <div class=\"pb-4 flex flex-col gap-2\">\n <p class=\"mb-0 text-body-3xs text-light-copy font-normal\">Memo ></p>\n <div class=\"flex justify-between\">\n <p\n class=\"mb-0 text-body-2xs font-medium text-sub-copy w-2/3 break-words\"\n >\n 0j8938ysheeee8333c162883a4d4f5g6t111nhk8uey37777yt6\n </p>\n <app-copy\n [isCopyIcon]=\"true\"\n [copyText]=\"'0j8938ysheeee8333c162883a4d4f5g6t111nhk8uey37777yt6'\"\n ></app-copy>\n </div>\n </div> -->\n </div>\n\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex items-center justify-between border-b border-grey-border py-3\">\n <p class=\"mb-0 text-body-2xs font-medium text-primary-black\">Network fee</p>\n <base-currency-amount\n [currency]=\"generateAddressPayload?.currency ?? ''\"\n [amount]=\"addressDetails?.networkFee ?? 0\"\n textClass=\"mb-0 text-body-2xs font-extrabold text-primary-black\"\n iconColorClass=\"#231F20\"\n ></base-currency-amount>\n </div>\n\n <div class=\"flex items-center justify-between py-4\">\n <p class=\"mb-0 text-body-lg font-semibold text-primary-black\">Pay</p>\n <base-currency-amount\n [currency]=\"generateAddressPayload?.currency ?? ''\"\n [amount]=\"amountPlusNetworkFee\"\n textClass=\"mb-0 text-body-lg font-extrabold text-primary-black\"\n iconColorClass=\"#231F20\"\n iconWidth=\"20\"\n iconHeight=\"20\"\n ></base-currency-amount>\n </div>\n </div>\n\n <div class=\"flex flex-col gap-6\">\n <base-button\n label=\"Confirm Payment\"\n type=\"primary\"\n customClass=\"w-full\"\n [loading]=\"isConfirmingPayment\"\n (onClick)=\"confirmPaymentHandler()\"\n ></base-button>\n </div>\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport {\n ISelectOption,\n RadioGroupComponent,\n ImageComponent,\n SuccessComponent,\n CardComponent,\n IPaymentObject,\n formatAmount,\n ISuccessObject,\n} from '@miden-npm/angular';\nimport { PayByCardComponent } from '../components/pay-by-card/pay-by-card.component';\nimport { PayByTransferComponent } from '../components/pay-by-transfer/pay-by-transfer.component';\nimport { PayByStableCoinComponent } from '../components/pay-by-stable-coin/pay-by-stable-coin.component';\n\nexport interface CheckoutIframeStyle {\n [cssProp: string]: string | number;\n}\n\nexport interface CheckoutCardOptions {\n imageUrl?: string;\n numberPlaceholder?: string;\n expiryPlaceholder?: string;\n cvcPlaceholder?: string;\n styles?: {\n base?: CheckoutIframeStyle;\n invalid?: CheckoutIframeStyle;\n focus?: CheckoutIframeStyle;\n };\n}\n\nexport interface TokenizeResult {\n token: string;\n last4?: string;\n brand?: string;\n}\n\n@Component({\n selector: 'bzp-checkout-card',\n standalone: true,\n templateUrl: './checkout-card.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n RadioGroupComponent,\n ImageComponent,\n PayByCardComponent,\n PayByTransferComponent,\n PayByStableCoinComponent,\n SuccessComponent,\n CardComponent,\n ],\n})\nexport class CheckoutCardComponent {\n @Input() options: CheckoutCardOptions | null = null;\n @Input() secretKey: string = '';\n @Input() environment: 'sandbox' | 'prod' = 'sandbox';\n @Input() paymentObject: IPaymentObject = {\n merchantName: '',\n amount: 0,\n currency: '',\n email: '',\n phoneNumber: '',\n narration: '',\n redirectUrl: 'https://sandbox-merchant.buzapay.com/account/three-ds-status',\n };\n @Output() ready = new EventEmitter<void>();\n @Output() validityChange = new EventEmitter<{ valid: boolean; field?: string }>();\n @Output() tokenize = new EventEmitter<TokenizeResult>();\n\n successObject: ISuccessObject = {\n paymentDate: '',\n paymentId: '',\n paymentStatus: '',\n };\n checkoutState: 'SUCCESS' | 'PENDING' | 'USED' = 'PENDING';\n countryOptions: ISelectOption[] = [\n {\n label: 'Nigeria',\n value: 'Nigeria',\n },\n {\n label: 'Ghana',\n value: 'Ghana',\n },\n ];\n paymentTypeOptions: ISelectOption[] = [\n { label: 'Card', value: 'CARD' },\n { label: 'Bank Transfer', value: 'BANK_TRANSFER' },\n { label: 'Stable Coin', value: 'STABLE_COIN' },\n ];\n paymentType: string = this.paymentTypeOptions[0].value;\n\n get filteredPaymentTypeOptions(): ISelectOption[] {\n if (this.paymentObject.currency === 'USD') {\n if (this.paymentObject.amount < 50) {\n return this.paymentTypeOptions.filter(\n (option) => option.value !== 'BANK_TRANSFER' && option.value !== 'STABLE_COIN',\n );\n } else {\n return this.paymentTypeOptions.filter((option) => option.value !== 'BANK_TRANSFER');\n }\n } else {\n return this.paymentTypeOptions.filter((option) => option.value !== 'STABLE_COIN');\n }\n }\n\n get formatAmountHandler(): string {\n return formatAmount(this.paymentObject.amount, this.paymentObject.currency);\n }\n\n paymentTypeHandler(event: string): void {\n this.paymentType = event;\n }\n\n setSuccess(event: ISuccessObject): void {\n this.successObject = { ...event };\n if (this.successObject.paymentStatus === 'Authorized') {\n this.checkoutState = 'SUCCESS';\n } else if (this.successObject.paymentStatus === 'Payment failed') {\n this.checkoutState = 'PENDING';\n } else if (this.successObject.paymentStatus === 'used') {\n this.checkoutState = 'USED';\n } else {\n this.checkoutState = 'PENDING';\n }\n }\n}\n","<base-card>\n <div class=\"grid grid-cols-3\">\n @if (checkoutState === 'PENDING') {\n <div class=\"bg-[#EFF7FF] px-6 py-8 flex flex-col gap-5 col-span-1 rounded-l-xl\">\n <p class=\"text-heading-text text-body-xs font-semibold\">Pay with</p>\n <base-radio-group\n [options]=\"filteredPaymentTypeOptions\"\n (selectedChange)=\"paymentTypeHandler($event)\"\n ></base-radio-group>\n </div>\n }\n\n <div [class]=\"checkoutState === 'SUCCESS' ? 'col-span-3' : 'col-span-2'\">\n @if (checkoutState === 'PENDING') {\n <div class=\"flex items-center justify-between px-12 py-8\">\n @if (options?.imageUrl) {\n <base-image\n [src]=\"options?.imageUrl ?? ''\"\n alt=\"Merchant Logo\"\n [width]=\"52\"\n [height]=\"52\"\n class=\"rounded-lg\"\n ></base-image>\n } @else {\n <div\n class=\"bg-heading-text rounded flex flex-col justify-center\"\n style=\"width: 52px; height: 52px\"\n >\n <p class=\"text-white text-center text-body-2xs font-medium\">Logo</p>\n </div>\n }\n\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-body-2xs font-regular text-sub-copy text-right\">\n {{ paymentObject.merchantName }}\n </p>\n <p class=\"text-body-2xs font-regular text-sub-copy text-right\">\n Pay:\n <span class=\"text-orange-500 font-extrabold\">{{ formatAmountHandler }}</span>\n </p>\n </div>\n </div>\n\n <div class=\"overflow-y-scroll px-10 pb-10 pt-2\">\n @if (paymentType === 'CARD') {\n <pay-by-card\n [environment]=\"environment\"\n [secretKey]=\"secretKey\"\n [paymentObject]=\"paymentObject\"\n (paymentAuthorized)=\"setSuccess($event)\"\n ></pay-by-card>\n } @else if (paymentType === 'BANK_TRANSFER') {\n <pay-by-transfer\n [environment]=\"environment\"\n [secretKey]=\"secretKey\"\n [paymentObject]=\"paymentObject\"\n (paymentAuthorized)=\"setSuccess($event)\"\n ></pay-by-transfer>\n } @else {\n <pay-by-stable-coin\n [environment]=\"environment\"\n [secretKey]=\"secretKey\"\n [paymentObject]=\"paymentObject\"\n (paymentAuthorized)=\"setSuccess($event)\"\n ></pay-by-stable-coin>\n }\n </div>\n } @else if (checkoutState === 'SUCCESS') {\n <base-success\n [amount]=\"paymentObject.amount\"\n [currency]=\"paymentObject.currency\"\n [redirectUrl]=\"paymentObject.redirectUrl ?? ''\"\n [successObject]=\"successObject\"\n ></base-success>\n }\n </div>\n </div>\n</base-card>\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport {\n checkObjectTruthy,\n CheckoutService,\n IApiResponse,\n IPaymentObject,\n IconLoaderComponent,\n} from '@miden-npm/angular';\nimport { finalize, tap } from 'rxjs';\n\ninterface IIframeStyle {\n width?: string;\n height?: string;\n border?: string;\n borderRadius?: string;\n overflow?: string;\n}\n\n@Component({\n selector: 'bzp-checkout-iframe',\n standalone: true,\n templateUrl: './checkout-iframe.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [IconLoaderComponent, CommonModule],\n})\nexport class CheckoutIframeComponent implements AfterViewInit {\n constructor(\n private renderer: Renderer2,\n private cdr: ChangeDetectorRef,\n private checkout: CheckoutService,\n ) {}\n\n errorMessage: string = '';\n loading: boolean = false;\n launchUrl: string = '';\n iframe: any;\n\n @Input() secretKey: string = '';\n @Input() url: string = '';\n @Input() style: IIframeStyle = {\n width: '100%',\n height: '100vh',\n border: '0',\n borderRadius: '6px',\n overflow: 'hidden',\n };\n @Input() environment: 'sandbox' | 'prod' = 'sandbox';\n @Input() paymentObject: IPaymentObject = {\n merchantName: '',\n amount: 0,\n currency: '',\n email: '',\n phoneNumber: '',\n narration: '',\n redirectUrl: 'https://sandbox-merchant.buzapay.com/account/three-ds-status',\n };\n @ViewChild('container', { static: false }) container?: ElementRef<HTMLDivElement>;\n\n get blockStyle() {\n return {\n ...(this.style || {}),\n };\n }\n\n launchIframe(url: string): void {\n const host = this.container?.nativeElement;\n if (!host) return; // guard: container not in DOM yet\n this.iframe = this.renderer.createElement('iframe');\n this.renderer.setAttribute(this.iframe, 'src', url);\n this.renderer.setStyle(this.iframe, 'width', this.style.width);\n this.renderer.setStyle(this.iframe, 'height', this.style.height);\n this.renderer.setStyle(this.iframe, 'border', this.style.border);\n this.renderer.setStyle(this.iframe, 'borderRadius', this.style.borderRadius);\n this.renderer.setStyle(this.iframe, 'overflow', this.style.overflow);\n this.renderer.appendChild(host, this.iframe);\n }\n\n async generatePaymentLinkHandler(): Promise<void | string> {\n if (this.url) {\n this.launchIframe(this.url);\n return;\n }\n\n if (!this.secretKey) {\n return (this.errorMessage = 'Secret key is required.');\n }\n\n if (!checkObjectTruthy<IPaymentObject>(this.paymentObject)) {\n return (this.errorMessage = 'Kindly ensure you are passing all the required data.');\n }\n\n this.loading = true;\n this.cdr.markForCheck();\n this.checkout\n .createPaymentLink(this.paymentObject, this.environment, this.secretKey)\n .pipe(\n tap((res: IApiResponse<any>) => {\n if (res?.isSuccessful) {\n this.launchUrl = res.launchUrl ?? '';\n this.errorMessage = 'Payment link created successfully';\n if (this.launchUrl) {\n this.launchIframe(`${this.launchUrl}&merchantId=${btoa(this.secretKey)}`);\n }\n } else {\n this.errorMessage = 'Failed to create payment link';\n }\n }),\n finalize(() => {\n this.loading = false;\n this.cdr.markForCheck();\n }),\n )\n .subscribe();\n }\n\n async ngAfterViewInit(): Promise<void> {\n await this.generatePaymentLinkHandler();\n }\n}\n","<div class=\"relative\" [ngStyle]=\"blockStyle\">\n <div #container class=\"w-full h-full\"></div>\n\n @if (loading) {\n <div class=\"absolute inset-0 grid place-items-center bg-white/60\">\n <icon-loader></icon-loader>\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core';\nimport {\n ButtonComponent,\n checkObjectTruthy,\n CheckoutService,\n IApiResponse,\n IPaymentObject,\n InputErrorComponent,\n} from '@miden-npm/angular';\nimport { CheckoutIframeComponent } from '../checkout-iframe/checkout-iframe.component';\nimport { finalize, tap } from 'rxjs';\n\n@Component({\n selector: 'bzp-checkout-button',\n standalone: true,\n templateUrl: './checkout-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ButtonComponent, InputErrorComponent, InputErrorComponent, CheckoutIframeComponent],\n})\nexport class CheckoutButtonComponent {\n constructor(\n private checkout: CheckoutService,\n private cdr: ChangeDetectorRef,\n ) {}\n\n errorMessage: string = '';\n loading: boolean = false;\n launchUrl: string = '';\n urlLaunchUrl: string = '';\n\n @Input() secretKey: string = '';\n @Input() timeout: number = 30000;\n @Input() environment: 'sandbox' | 'prod' = 'sandbox';\n @Input() mode: 'redirect' | 'iframe' = 'redirect';\n @Input() paymentObject: IPaymentObject = {\n merchantName: '',\n amount: 0,\n currency: '',\n email: '',\n phoneNumber: '',\n narration: '',\n redirectUrl: 'https://sandbox-merchant.buzapay.com/account/three-ds-status',\n };\n\n async generatePaymentLinkHandler(): Promise<void | string> {\n if (!this.secretKey) {\n return (this.errorMessage = 'Secret key is required.');\n }\n\n if (!checkObjectTruthy<IPaymentObject>(this.paymentObject)) {\n return (this.errorMessage = 'Kindly ensure you are passing all the required data.');\n }\n\n this.loading = true;\n this.cdr.markForCheck();\n this.checkout\n .createPaymentLink(this.paymentObject, this.environment, this.secretKey)\n .pipe(\n tap((res: IApiResponse<any>) => {\n if (res?.isSuccessful) {\n this.launchUrl = res.launchUrl ?? '';\n this.urlLaunchUrl = `${res.launchUrl}&merchantId=${btoa(this.secretKey)}`;\n this.errorMessage = 'Payment link created successfully';\n if (this.mode === 'redirect' && this.launchUrl) {\n window.open(this.launchUrl, '_blank', 'noopener,noreferrer');\n }\n } else {\n this.errorMessage = 'Failed to create payment link';\n }\n }),\n finalize(() => {\n this.loading = false;\n this.cdr.markForCheck();\n }),\n )\n .subscribe();\n }\n}\n","@if (urlLaunchUrl && mode === 'iframe') {\n <bzp-checkout-iframe\n [url]=\"urlLaunchUrl\"\n [secretKey]=\"secretKey\"\n [environment]=\"environment\"\n ></bzp-checkout-iframe>\n} @else {\n <base-button\n label=\"Pay\"\n type=\"primary\"\n customClass=\"w-full\"\n [loading]=\"loading\"\n (onClick)=\"generatePaymentLinkHandler()\"\n ></base-button>\n <base-input-error [errorMessage]=\"errorMessage\"></base-input-error>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"miden-npm-angular-buzapay-checkout.mjs","sources":["../../buzapay-checkout/src/lib/components/pay-by-card/pay-by-card.component.ts","../../buzapay-checkout/src/lib/components/pay-by-card/pay-by-card.component.html","../../buzapay-checkout/src/lib/components/pay-by-transfer/pay-by-transfer.component.ts","../../buzapay-checkout/src/lib/components/pay-by-transfer/pay-by-transfer.component.html","../../buzapay-checkout/src/lib/components/pay-by-stable-coin/pay-by-stable-coin.component.ts","../../buzapay-checkout/src/lib/components/pay-by-stable-coin/pay-by-stable-coin.component.html","../../buzapay-checkout/src/lib/checkout-card/checkout-card.component.ts","../../buzapay-checkout/src/lib/checkout-card/checkout-card.component.html","../../buzapay-checkout/src/lib/checkout-iframe/checkout-iframe.component.ts","../../buzapay-checkout/src/lib/checkout-iframe/checkout-iframe.component.html","../../buzapay-checkout/src/lib/checkout-button/checkout-button.component.ts","../../buzapay-checkout/src/lib/checkout-button/checkout-button.component.html","../../buzapay-checkout/miden-npm-angular-buzapay-checkout.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport {\n ButtonComponent,\n cardType,\n checkObjectTruthy,\n CheckoutService,\n EncryptService,\n getQueryParams,\n getValidationErrorMessage,\n IApiResponse,\n IAuthorizeCardPaymentPayload,\n IBillingDetails,\n ICardDetails,\n ICountry,\n InputComponent,\n IPaymentObject,\n ISelectOption,\n IState,\n ISuccessObject,\n IErrorObject,\n ResourceService,\n SelectComponent,\n formatAmount,\n} from '@miden-npm/angular';\nimport { finalize, tap } from 'rxjs';\n\n@Component({\n selector: 'pay-by-card',\n standalone: true,\n templateUrl: './pay-by-card.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ButtonComponent, InputComponent, SelectComponent, ReactiveFormsModule],\n})\nexport class PayByCardComponent implements OnInit {\n constructor(\n private resources: ResourceService,\n private cdr: ChangeDetectorRef,\n private checkout: CheckoutService,\n private encryptService: EncryptService,\n ) {}\n\n @Input() secretKey: string = '';\n @Input() environment: 'sandbox' | 'prod' = 'sandbox';\n @Input() paymentObject: IPaymentObject = {\n merchantName: '',\n amount: 0,\n currency: '',\n email: '',\n phoneNumber: '',\n narration: '',\n redirectUrl: '',\n };\n @Output() paymentAuthorized = new EventEmitter<ISuccessObject>();\n @Output() onError = new EventEmitter<IErrorObject>();\n\n loading: boolean = false;\n loadingCountries: boolean = false;\n loadingStates: boolean = false;\n isMakingPayment: boolean = false;\n cardType: string = '';\n message: string = '';\n transactionReference: string = '';\n rawCountries: ICountry[] = [];\n countries: ISelectOption[] = [];\n countryStates: ISelectOption[] = [];\n formIndex: number = 0;\n setFormIndex(index: number) {\n this.formIndex = index;\n }\n\n billingForm = new FormGroup({\n address1: new FormControl('', [Validators.required]),\n address2: new FormControl(''),\n postalCode: new FormControl('', [Validators.required]),\n state: new FormControl('', [Validators.required]),\n city: new FormControl('', [Validators.required]),\n country: new FormControl('', [Validators.required]),\n emailAddress: new FormControl('', [Validators.required, Validators.email]),\n phoneNumber: new FormControl('', [Validators.required]),\n });\n\n payForm = new FormGroup({\n customerName: new FormControl('', [Validators.required]),\n cardNo: new FormControl('', [Validators.required]),\n expireDate: new FormControl('', [Validators.required]),\n cvv: new FormControl('', [Validators.required]),\n cardPin: new FormControl(''), // Only required for Verve cards\n });\n\n getError(formKey: string, controlName: string, label?: string): string | null {\n const control =\n formKey === 'billing' ? this.billingForm.get(controlName) : this.payForm.get(controlName);\n return getValidationErrorMessage(control, label);\n }\n\n get formatAmountHandler(): string {\n return formatAmount(this.paymentObject.amount, this.paymentObject.currency);\n }\n\n cardNumberInputHandler(event: string): void {\n this.cardType = cardType(event);\n this.updatePinValidation();\n }\n\n updatePinValidation(): void {\n const cardPinControl = this.payForm.get('cardPin');\n if (this.cardType === 'Verve') {\n cardPinControl?.setValidators([Validators.required]);\n } else {\n cardPinControl?.clearValidators();\n }\n cardPinControl?.updateValueAndValidity();\n }\n\n async getAllCountries(): Promise<void> {\n this.loadingCountries = true;\n this.cdr.markForCheck();\n this.resources\n .getCountries(this.environment, this.secretKey)\n .pipe(\n tap((res: IApiResponse<ICountry[]>) => {\n if (res?.isSuccessful) {\n this.rawCountries = res.data ?? [];\n this.countries = (res.data ?? []).map((c) => {\n return { label: c.countryName, value: c.iso2 };\n });\n }\n }),\n finalize(() => {\n this.loadingCountries = false;\n this.cdr.markForCheck();\n }),\n )\n .subscribe();\n }\n\n async getCountryStates(countryIso2: string): Promise<void> {\n const country: any = this.rawCountries.filter((c) => c.iso2 === countryIso2);\n this.loadingStates = true;\n this.cdr.markForCheck();\n this.resources\n .getCountryStates(country[0].iso3, this.environment, this.secretKey)\n .pipe(\n tap((res: IApiResponse<IState[]>) => {\n if (res?.isSuccessful) {\n this.countryStates = (res.data ?? []).map((s) => {\n return { label: s.name, value: s.name };\n });\n }\n }),\n finalize(() => {\n this.loadingStates = false;\n this.cdr.markForCheck();\n }),\n )\n .subscribe();\n }\n\n async generatePaymentLinkHandler(): Promise<void | string> {\n if (!this.secretKey) {\n return (this.message = 'Secret key is required.');\n }\n\n if (!checkObjectTruthy<IPaymentObject>(this.paymentObject)) {\n return (this.message = 'Kindly ensure you are passing all the required data.');\n }\n\n this.loading = true;\n this.cdr.markForCheck();\n this.checkout\n .createPaymentLink(this.paymentObject, this.environment, this.secretKey)\n .pipe(\n tap((res: IApiResponse<any>) => {\n if (res?.isSuccessful) {\n this.message = 'Payment link created successfully';\n const queryParams = getQueryParams(res.launchUrl ?? '');\n this.transactionReference = queryParams['paymentReference'];\n } else {\n this.message = 'Failed to create payment link';\n }\n }),\n finalize(() => {\n this.loading = false;\n this.cdr.markForCheck();\n }),\n )\n .subscribe();\n }\n\n async proceedHandler(): Promise<void> {\n if (this.formIndex === 0) {\n if (this.billingForm && this.billingForm.valid) {\n this.checkout.setBillingInfo({ ...this.billingForm.value });\n this.setFormIndex(1);\n } else {\n this.billingForm.markAllAsTouched();\n }\n } else {\n if (this.payForm && this.payForm.valid) {\n try {\n this.isMakingPayment = true;\n\n // Create card details object for encryption\n const cardDetails: ICardDetails = {\n pan: this.payForm.value.cardNo ?? '',\n expiryDate: this.payForm.value.expireDate ?? '',\n cvv: this.payForm.value.cvv ?? '',\n cardScheme: this.cardType,\n nameOnCard: this.payForm.value.customerName ?? '',\n ...(this.cardType === 'Verve' && { pin: this.payForm.value.cardPin ?? '' }),\n };\n\n // Get billing details from the form control\n const billingDetails: IBillingDetails = {\n address2: this.billingForm.value.address2 ?? '',\n address1: this.billingForm.value.address1 ?? '',\n postalCode: this.billingForm.value.postalCode ?? '',\n state: this.billingForm.value.state ?? '',\n city: this.billingForm.value.city ?? '',\n country: this.billingForm.value.country ?? '',\n emailAddress: this.billingForm.value.emailAddress ?? '',\n phoneNumber: this.billingForm.value.phoneNumber ?? '',\n };\n\n // Encrypt card details using payload encryption method\n const encryptedCardDetails = this.encryptService.encryptPayload(\n this.secretKey,\n cardDetails,\n );\n\n // Test: Decrypt to verify encryption works\n // const decryptedTest = this.encryptService.decryptPayload(\n // this.environment,\n // encryptedCardDetails.requestParam,\n // );\n\n const payload: IAuthorizeCardPaymentPayload = {\n customerId: this.paymentObject?.email || this.payForm.value.customerName || '',\n amount: this.paymentObject?.amount.toString(),\n currency: this.paymentObject?.currency || 'USD',\n narration: this.paymentObject?.narration || 'Test transaction',\n encryptedCardDetails: encryptedCardDetails.requestParam, // Use the encrypted card details\n billingDetails: billingDetails,\n redirectUrl: this.paymentObject?.redirectUrl || '',\n paymentReference: this.transactionReference,\n isCheckout: true,\n };\n\n this.checkout\n .authorizeCardPayment(this.environment, {\n ...payload,\n merchantId: this.secretKey,\n })\n .subscribe({\n next: async (response: any) => {\n let processedResponse = response;\n\n // Check if response is encrypted (has responseParam)\n if (response?.responseParam) {\n // Decrypt the response\n processedResponse = this.encryptService.decryptPayload(\n this.environment,\n response.responseParam,\n );\n }\n\n if (processedResponse?.isSuccessful) {\n // Check for 3DS authentication requirement\n if (processedResponse.threeDsInteractionRequired === true) {\n // Store 3DS data for the authentication page\n const threeDsData = {\n transactionReference: processedResponse.transactionReference,\n threeDsHtml: processedResponse.threeDsHtml,\n amount: processedResponse.amount,\n responseMessage: processedResponse.responseMessage,\n // Pass all 3DS details\n paReq: processedResponse.threeDsHtml?.paReq,\n termUrl: processedResponse.threeDsHtml?.termUrl,\n action: processedResponse.threeDsHtml?.action,\n acsUrl: processedResponse.threeDsHtml?.acsUrl,\n md: processedResponse.threeDsHtml?.md,\n };\n\n // Encrypt 3DS data to pass as url param\n const stringifiedThreeDsData = btoa(JSON.stringify(threeDsData));\n\n // Open 3DS authentication page in a new tab\n const threeDsUrl = `https://sandbox-merchant.buzapay.com/account/three-ds-confirm?threeDsData=${encodeURIComponent(\n stringifiedThreeDsData,\n )}&paymentReference=${processedResponse.transactionReference}`;\n window.open(threeDsUrl, '_self', 'noopener,noreferrer');\n\n this.message =\n '3D Secure authentication opened in new tab. Please complete the verification';\n\n this.isMakingPayment = false;\n return;\n }\n\n // Fallback check: if response message indicates 3DS is required\n if (\n processedResponse.responseMessage === 'Payer Interaction Required' &&\n processedResponse.threeDsHtml\n ) {\n // Store 3DS data for the authentication page\n const threeDsData = {\n transactionReference: processedResponse.transactionReference,\n threeDsHtml: processedResponse.threeDsHtml,\n amount: processedResponse.amount,\n responseMessage: processedResponse.responseMessage,\n // Pass all 3DS details\n paReq: processedResponse.threeDsHtml?.paReq,\n termUrl: processedResponse.threeDsHtml?.termUrl,\n action: processedResponse.threeDsHtml?.action,\n acsUrl: processedResponse.threeDsHtml?.acsUrl,\n md: processedResponse.threeDsHtml?.md,\n };\n\n // Encrypt 3DS data to pass as url param\n const stringifiedThreeDsData = btoa(JSON.stringify(threeDsData));\n\n // Open 3DS authentication page in a new tab\n const threeDsUrl = `https://sandbox-merchant.buzapay.com/account/three-ds-confirm?threeDsData=${encodeURIComponent(\n stringifiedThreeDsData,\n )}&paymentReference=${processedResponse.transactionReference}`;\n window.open(threeDsUrl, '_self', 'noopener,noreferrer');\n\n this.message =\n '3D Secure authentication opened in new tab. Please complete the verification';\n this.isMakingPayment = false;\n return;\n }\n\n // Emit the transaction reference to parent component\n if (\n processedResponse.transactionReference &&\n processedResponse.transactionReference.trim() !== ''\n ) {\n this.paymentAuthorized.emit({\n paymentId: processedResponse.transactionReference,\n paymentDate: response.data.updatedAt,\n paymentStatus: 'authorized',\n message: this.message,\n });\n }\n\n this.message = 'Card payment authorized successfully';\n\n // Handle legacy 3DS logic for backward compatibility\n // if (processedResponse.provider === 'myRoute2') {\n // if (processedResponse.requires3DS === true) {\n // this.router.navigateByUrl('account/visa-card-payment-confirm');\n // } else {\n // if (processedResponse.responseCode === 'T00') {\n // } else if (processedResponse.responseCode === '000') {\n // this.message = 'Please confirm transaction !!';\n // } else {\n // this.message = processedResponse.responseMessage;\n // }\n // }\n // } else if (processedResponse.provider === 'myRoute1') {\n // if (processedResponse.requires3DS === true) {\n // this.router.navigateByUrl('account/visa-card-payment-confirm2');\n // }\n // }\n\n this.isMakingPayment = false;\n } else {\n this.isMakingPayment = false;\n this.message = processedResponse.responseMessage || 'Payment failed';\n this.paymentAuthorized.emit({\n paymentId: processedResponse.transactionReference,\n paymentDate: response.data.updatedAt,\n paymentStatus: 'payment failed',\n message: this.message,\n });\n }\n },\n error: (err) => {\n this.isMakingPayment = false;\n if (err.error?.responseParam) {\n // Decrypt error response\n const decryptedErrorResponse = this.encryptService.decryptPayload(\n this.environment,\n err.error.responseParam,\n );\n this.message = decryptedErrorResponse.responseMessage || 'Payment failed';\n } else {\n this.message = err.error.responseMessage || err.error.message || 'Payment failed';\n }\n this.onError.emit({ errorMessage: this.message });\n },\n });\n } catch (error) {\n this.isMakingPayment = false;\n this.message = 'An unexpected error occurred';\n this.onError.emit({ errorMessage: this.message });\n }\n } else {\n this.payForm.markAllAsTouched();\n }\n }\n }\n\n async ngOnInit(): Promise<void> {\n await this.generatePaymentLinkHandler();\n await this.getAllCountries();\n }\n}\n","<div class=\"flex flex-col gap-6\">\n <!-- Billing Details -->\n @if (formIndex === 0) {\n <form [formGroup]=\"billingForm\">\n <div class=\"grid grid-cols-2 gap-6 overflow-y-auto\">\n <div class=\"col-span-2\">\n <base-input\n formControlName=\"address1\"\n label=\"Address Line 1\"\n [required]=\"true\"\n [validationError]=\"getError('billing', 'address1', 'Address Line 1') || ''\"\n ></base-input>\n </div>\n <div class=\"col-span-2\">\n <base-input formControlName=\"address2\" label=\"Address Line 2\"></base-input>\n </div>\n <base-select\n formControlName=\"country\"\n label=\"Select Country\"\n [required]=\"true\"\n [options]=\"countries\"\n [loading]=\"loadingCountries\"\n [validationError]=\"getError('billing', 'country', 'Country') || ''\"\n (onSelectChange)=\"getCountryStates($event)\"\n ></base-select>\n <base-select\n formControlName=\"state\"\n label=\"Select State\"\n [required]=\"true\"\n [options]=\"countryStates\"\n [loading]=\"loadingStates\"\n [validationError]=\"getError('billing', 'state', 'State') || ''\"\n ></base-select>\n <base-input\n formControlName=\"city\"\n label=\"City\"\n [required]=\"true\"\n [validationError]=\"getError('billing', 'city', 'City') || ''\"\n ></base-input>\n <base-input\n formControlName=\"postalCode\"\n label=\"Postal Code\"\n [required]=\"true\"\n [validationError]=\"getError('billing', 'postalCode', 'Postal Code') || ''\"\n ></base-input>\n <base-input\n formControlName=\"emailAddress\"\n label=\"Email\"\n [required]=\"true\"\n [validationError]=\"getError('billing', 'emailAddress', 'Email Address') || ''\"\n ></base-input>\n <base-input\n formControlName=\"phoneNumber\"\n label=\"Phone Number\"\n [required]=\"true\"\n [validationError]=\"getError('billing', 'phoneNumber', 'Phone Number') || ''\"\n ></base-input>\n </div>\n </form>\n }\n\n <!-- Card Details -->\n @if (formIndex === 1) {\n <form [formGroup]=\"payForm\">\n <div class=\"grid grid-cols-2 gap-6 overflow-y-auto\" style=\"max-height: 320px\">\n <div class=\"col-span-2\">\n <base-input\n formControlName=\"customerName\"\n label=\"Card Name\"\n [required]=\"true\"\n [validationError]=\"getError('pay', 'customerName', 'Customer Name') || ''\"\n ></base-input>\n </div>\n <div class=\"col-span-2\">\n <base-input\n formControlName=\"cardNo\"\n label=\"Card Number\"\n [required]=\"true\"\n mask=\"0000 0000 0000 0000\"\n placeholder=\"0000 0000 0000 0000\"\n [preventPaste]=\"true\"\n [validationError]=\"getError('pay', 'cardNo', 'Card Number') || ''\"\n (onInputChange)=\"cardNumberInputHandler($event)\"\n ></base-input>\n </div>\n <base-input\n formControlName=\"expireDate\"\n label=\"Expiry Date\"\n [required]=\"true\"\n mask=\"00/00\"\n placeholder=\"00/00\"\n [validationError]=\"getError('pay', 'expireDate', 'Expiry Date') || ''\"\n ></base-input>\n <base-input\n formControlName=\"cvv\"\n label=\"CVV\"\n [required]=\"true\"\n mask=\"000\"\n placeholder=\"000\"\n [validationError]=\"getError('pay', 'cvv', 'CVV') || ''\"\n ></base-input>\n\n @if (cardType === 'Verve') {\n <base-input\n formControlName=\"cardPin\"\n label=\"Card Pin\"\n type=\"password\"\n placeholder=\"0000\"\n mask=\"0000\"\n [required]=\"true\"\n [validationError]=\"getError('pay', 'cardPin', 'Card Pin') || ''\"\n ></base-input>\n <div class=\"text-sm text-blue-600 mb-4\">\n <i class=\"fas fa-info-circle mr-1\"></i>\n Pin is required for Verve cards\n </div>\n }\n </div>\n </form>\n }\n\n <base-button\n [label]=\"formIndex === 0 ? 'Proceed' : 'Pay ' + formatAmountHandler\"\n type=\"primary\"\n customClass=\"w-full\"\n [loading]=\"isMakingPayment\"\n (onClick)=\"proceedHandler()\"\n ></base-button>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n OnDestroy,\n ChangeDetectorRef,\n Input,\n EventEmitter,\n Output,\n} from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport {\n LabelInfoComponent,\n CopyComponent,\n ButtonComponent,\n IPaymentObject,\n CheckoutService,\n checkObjectTruthy,\n IApiResponse,\n IPaymentAccountResponse,\n formatAmount,\n getValidationErrorMessage,\n IPaymentReferenceDetail,\n InputComponent,\n getQueryParams,\n ISuccessObject,\n IErrorObject,\n} from '@miden-npm/angular';\nimport { finalize, tap } from 'rxjs';\n\n@Component({\n selector: 'pay-by-transfer',\n standalone: true,\n templateUrl: './pay-by-transfer.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n LabelInfoComponent,\n CopyComponent,\n ButtonComponent,\n ReactiveFormsModule,\n InputComponent,\n ],\n})\nexport class PayByTransferComponent implements OnInit, OnDestroy {\n constructor(\n private checkout: CheckoutService,\n private cdr: ChangeDetectorRef,\n ) {}\n\n @Input() secretKey: string = '';\n @Input() environment: string = '';\n @Input() paymentObject: IPaymentObject = {\n merchantName: '',\n amount: 0,\n currency: '',\n email: '',\n phoneNumber: '',\n narration: '',\n redirectUrl: '',\n };\n @Output() paymentAuthorized = new EventEmitter<ISuccessObject>();\n @Output() onError = new EventEmitter<IErrorObject>();\n\n message: string = '';\n generatingLink: boolean = false;\n isMakingPayment: boolean = false;\n isFetchingPaymentDetails: boolean = false;\n isConfirmCall: boolean = false;\n paymentMade: boolean = false;\n isPaymentConfirmed: boolean = false;\n paymentAccountDetails: IPaymentAccountResponse | null = null;\n paymentReferenceDetails: IPaymentReferenceDetail | null = null;\n transactionReference: string = '';\n paymentReferenceStatus: string = '';\n countDownTime: string = '';\n private remainingSeconds = 30 * 60;\n private intervalId: ReturnType<typeof setInterval> | null = null;\n\n private updateDisplay(): void {\n const minutes = Math.floor(this.remainingSeconds / 60);\n const seconds = this.remainingSeconds % 60;\n this.countDownTime = `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;\n this.cdr.markForCheck(); // 👈 notify OnPush to re-render\n }\n\n transferForm = new FormGroup({\n customerName: new FormControl('', [Validators.required]),\n });\n\n getError(controlName: string, label?: string): string | null {\n const control = this.transferForm.get(controlName);\n return getValidationErrorMessage(control, label);\n }\n\n get formatAmountHandler(): string {\n return formatAmount(this.paymentObject.amount, this.paymentObject.currency);\n }\n\n private startTimer(): void {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = null;\n }\n\n this.updateDisplay();\n this.intervalId = setInterval(() => {\n this.remainingSeconds--;\n\n if (this.remainingSeconds < 0) {\n clearInterval(this.intervalId!);\n this.intervalId = null;\n this.countDownTime = '00:00';\n this.cdr.markForCheck();\n return;\n }\n\n this.updateDisplay();\n }, 1000);\n }\n\n async generatePaymentLinkHandler(): Promise<void | string> {\n if (!this.secretKey) {\n return (this.message = 'Secret key is required.');\n }\n\n if (!checkObjectTruthy<IPaymentObject>(this.paymentObject)) {\n return (this.message = 'Kindly ensure you are passing all the required data.');\n }\n\n this.generatingLink = true;\n this.cdr.markForCheck();\n this.checkout\n .createPaymentLink(this.paymentObject, this.environment, this.secretKey)\n .pipe(\n tap((res: IApiResponse<any>) => {\n if (res?.isSuccessful) {\n this.message = 'Payment link created successfully';\n const queryParams = getQueryParams(res.launchUrl ?? '');\n this.transactionReference = queryParams['paymentReference'];\n } else {\n this.message = 'Failed to create payment link';\n }\n }),\n finalize(() => {\n this.generatingLink = false;\n this.cdr.markForCheck();\n }),\n )\n .subscribe();\n }\n\n async payHandler() {\n if (this.transferForm && this.transferForm.valid) {\n const payload = {\n paymentReference: this.transactionReference,\n channel: 'virtual_account',\n customerName: this.transferForm.value.customerName ?? '',\n merchantId: this.secretKey,\n };\n\n this.isMakingPayment = true;\n await this.checkout.generatePaymentAccount(this.environment, payload).subscribe({\n next: async (response: IApiResponse<IPaymentAccountResponse>) => {\n if (response?.isSuccessful) {\n this.paymentAccountDetails = response.data;\n this.startTimer();\n this.message = 'Virtual account generated successfully for payment.';\n\n this.isMakingPayment = false;\n }\n },\n error: (err) => {\n this.isMakingPayment = false;\n this.message = err.error.responseMessage || err.error.message;\n this.onError.emit({ errorMessage: this.message });\n },\n });\n } else {\n this.transferForm?.markAllAsTouched();\n }\n }\n\n async getReferenceDetails(): Promise<void> {\n this.isFetchingPaymentDetails = true;\n await this.checkout\n .getPaymentReferenceDetails(this.environment, this.transactionReference)\n .subscribe({\n next: async (response: IApiResponse<IPaymentReferenceDetail>) => {\n if (response?.isSuccessful) {\n this.paymentReferenceDetails = response.data;\n\n // Check if payment has been made (paymentStatus is \"Payment Received\")\n if (response.data?.paymentStatus === 'Payment Received') {\n this.paymentMade = true;\n }\n\n if (\n response.data?.finalTransactionStatus === null ||\n response.data?.paymentStatus === null\n ) {\n if (this.isConfirmCall) {\n this.message = 'Transaction not confirmed !!';\n }\n // Only set to pending if payment hasn't been confirmed locally or made locally\n if (!this.isPaymentConfirmed && !this.paymentMade) {\n this.paymentReferenceStatus = 'pending';\n this.paymentAuthorized.emit({\n paymentId: this.transactionReference,\n paymentDate: response.data.updatedAt,\n paymentStatus: this.paymentReferenceStatus,\n message: this.message,\n });\n } else {\n this.paymentReferenceStatus = 'confirmed';\n this.paymentAuthorized.emit({\n paymentId: this.transactionReference,\n paymentDate: response.data.updatedAt,\n paymentStatus: this.paymentReferenceStatus,\n message: this.message,\n });\n }\n } else if (\n response.data?.finalTransactionStatus === 'Success' ||\n response.data?.paymentStatus === 'Received' ||\n response.data?.paymentStatus === 'Payment Received'\n ) {\n this.paymentAuthorized.emit({\n paymentId: this.transactionReference,\n paymentDate: response.data.updatedAt,\n paymentStatus: this.paymentReferenceStatus,\n message: this.message,\n });\n this.message = 'Transaction confirmed !!';\n this.paymentReferenceStatus = 'confirmed';\n this.isPaymentConfirmed = true;\n }\n } else if (!response?.isSuccessful && response?.responseCode === '119') {\n this.paymentReferenceStatus = 'used';\n this.message = response.responseMessage;\n this.paymentAuthorized.emit({\n paymentId: this.transactionReference,\n paymentDate: null,\n paymentStatus: this.paymentReferenceStatus,\n message: this.message,\n });\n }\n this.isFetchingPaymentDetails = false;\n },\n error: (err) => {\n this.paymentReferenceStatus = '';\n this.isFetchingPaymentDetails = false;\n this.message = err.error.responseMessage || err.error.message;\n this.onError.emit({ errorMessage: this.message });\n },\n });\n }\n\n async ngOnInit(): Promise<void> {\n this.startTimer();\n await this.generatePaymentLinkHandler();\n }\n\n ngOnDestroy(): void {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = null;\n }\n }\n}\n","<div class=\"flex flex-col gap-10\">\n @if (!paymentAccountDetails) {\n <form [formGroup]=\"transferForm\">\n <div class=\"flex flex-col gap-10\">\n <base-input\n formControlName=\"customerName\"\n label=\"Customer Name\"\n [required]=\"true\"\n [validationError]=\"getError('customerName', 'Customer Name') || ''\"\n ></base-input>\n\n <base-button\n [label]=\"'Pay ' + formatAmountHandler\"\n type=\"primary\"\n customClass=\"w-full\"\n [loading]=\"isMakingPayment\"\n (onClick)=\"payHandler()\"\n ></base-button>\n </div>\n </form>\n }\n\n @if (paymentAccountDetails) {\n <div class=\"flex flex-col gap-10\">\n <div class=\"bg-[#EFF7FF] p-4 rounded-lg flex flex-col gap-6\">\n <base-label-info\n label=\"Bank Name\"\n [value]=\"paymentAccountDetails.bank + ' - ' + paymentAccountDetails.accountName\"\n ></base-label-info>\n <div class=\"flex items-center justify-between\">\n <base-label-info\n label=\"Account Number\"\n [value]=\"paymentAccountDetails.accountNumber\"\n ></base-label-info>\n <base-copy color=\"#9DBFDE\" [copyText]=\"paymentAccountDetails.accountNumber\"></base-copy>\n </div>\n <div class=\"flex items-center justify-between\">\n <base-label-info label=\"Amount\" [value]=\"formatAmountHandler\"></base-label-info>\n <base-copy color=\"#9DBFDE\" [copyText]=\"formatAmountHandler\"></base-copy>\n </div>\n </div>\n\n <p class=\"w-2/3 mx-auto text-center text-body-2xs font-medium text-sub-copy\">\n This account is for this transaction only and expires in\n <span class=\"text-orange-500\">{{ countDownTime }}</span>\n </p>\n\n <div class=\"flex flex-col gap-4\">\n <base-button\n label=\"I have paid the money\"\n type=\"primary\"\n customClass=\"w-full\"\n [loading]=\"isFetchingPaymentDetails\"\n (onClick)=\"getReferenceDetails()\"\n ></base-button>\n <p class=\"text-heading-text text-body-2xs font-medium text-center py-2 cursor-pointer\">\n Cancel Payment\n </p>\n </div>\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport {\n ButtonComponent,\n checkObjectTruthy,\n CheckoutService,\n CopyComponent,\n CurrencyAmountComponent,\n getQueryParams,\n getValidationErrorMessage,\n IApiResponse,\n IconArrowSwapComponent,\n IGenerateStableCoinAddress,\n IGenerateStableCoinAddressResponse,\n IPaymentObject,\n IPaymentReferenceDetail,\n ISelectOption,\n ISuccessObject,\n IErrorObject,\n ResourceService,\n SelectComponent,\n formatAmount,\n} from '@miden-npm/angular';\nimport { finalize, tap } from 'rxjs';\n\n@Component({\n selector: 'pay-by-stable-coin',\n standalone: true,\n templateUrl: './pay-by-stable-coin.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n SelectComponent,\n ButtonComponent,\n // ImageComponent,\n CurrencyAmountComponent,\n CopyComponent,\n IconArrowSwapComponent,\n ReactiveFormsModule,\n ],\n})\nexport class PayByStableCoinComponent implements OnInit {\n constructor(\n private resource: ResourceService,\n private checkout: CheckoutService,\n private cdr: ChangeDetectorRef,\n ) {}\n\n @Input() secretKey: string = '';\n @Input() environment: string = '';\n @Input() paymentObject: IPaymentObject = {\n merchantName: '',\n amount: 0,\n currency: '',\n email: '',\n phoneNumber: '',\n narration: '',\n redirectUrl: '',\n };\n @Output() paymentAuthorized = new EventEmitter<ISuccessObject>();\n @Output() onError = new EventEmitter<IErrorObject>();\n\n message: string = '';\n transactionReference: string = '';\n paymentReferenceStatus: string = '';\n generateAddressPayload: IGenerateStableCoinAddress | null = null;\n addressDetails: IGenerateStableCoinAddressResponse | null = null;\n paymentReferenceDetails: IPaymentReferenceDetail | null = null;\n stableCoins: ISelectOption[] = [];\n networkList: ISelectOption[] = [];\n loadingStableCoins: boolean = false;\n generatingAddress: boolean = false;\n isConfirmingPayment: boolean = false;\n loading: boolean = false;\n loadingStableCoinNetworks: boolean = false;\n formIndex: number = 0;\n setFormIndex(index: number): void {\n this.formIndex = index;\n }\n\n stableCoinForm = new FormGroup({\n stableCoin: new FormControl('', [Validators.required]),\n network: new FormControl('', [Validators.required]),\n });\n\n getError(controlName: string, label?: string): string | null {\n const control = this.stableCoinForm.get(controlName);\n return getValidationErrorMessage(control, label);\n }\n\n get formatAmountHandler(): string {\n return formatAmount(this.paymentObject.amount, this.paymentObject.currency);\n }\n\n get amountPlusNetworkFee(): number {\n return this.addressDetails\n ? Number(this.addressDetails.transactionAmount) + this.addressDetails.networkFee\n : 0;\n }\n\n async generatePaymentLinkHandler(): Promise<void | string> {\n if (!this.secretKey) {\n return (this.message = 'Secret key is required.');\n }\n\n if (!checkObjectTruthy<IPaymentObject>(this.paymentObject)) {\n return (this.message = 'Kindly ensure you are passing all the required data.');\n }\n\n this.loading = true;\n this.cdr.markForCheck();\n this.checkout\n .createPaymentLink(this.paymentObject, this.environment, this.secretKey)\n .pipe(\n tap((res: IApiResponse<any>) => {\n if (res?.isSuccessful) {\n this.message = 'Payment link created successfully';\n const queryParams = getQueryParams(res.launchUrl ?? '');\n this.transactionReference = queryParams['paymentReference'];\n } else {\n this.message = 'Failed to create payment link';\n }\n }),\n finalize(() => {\n this.loading = false;\n this.cdr.markForCheck();\n }),\n )\n .subscribe();\n }\n\n generateAddress(): void {\n if (!this.generateAddressPayload) return;\n\n this.generatingAddress = true;\n this.cdr.markForCheck();\n\n this.checkout\n .generateStableCoinAddress(this.environment, this.generateAddressPayload)\n .pipe(\n tap((response: IApiResponse<IGenerateStableCoinAddressResponse>) => {\n if (response?.isSuccessful) {\n this.addressDetails = response.data;\n this.setFormIndex(1);\n }\n }),\n finalize(() => {\n this.generatingAddress = false;\n this.cdr.markForCheck();\n }),\n )\n .subscribe({\n error: (err) => {\n this.message = err.error.responseMessage || err.error.message;\n this.onError.emit({ errorMessage: this.message });\n },\n });\n }\n\n async payHandler(): Promise<void> {\n if (this.stableCoinForm && this.stableCoinForm.valid) {\n this.generateAddressPayload = {\n paymentReference: this.transactionReference,\n currency: this.stableCoinForm.get('stableCoin')?.value ?? '',\n chain: this.stableCoinForm.get('network')?.value ?? '',\n transactionAmount: this.paymentObject?.amount,\n merchantId: this.secretKey,\n };\n await this.generateAddress();\n } else {\n this.stableCoinForm?.markAllAsTouched();\n }\n }\n\n async getStableCoins(): Promise<void> {\n this.loadingStableCoins = true;\n await this.resource.getStableCoins(this.environment).subscribe({\n next: async (response: IApiResponse<{ name: string }[]>) => {\n if (response?.isSuccessful) {\n this.stableCoins =\n response.data?.map((c) => ({\n label: c.name,\n value: c.name,\n })) ?? [];\n this.loadingStableCoins = false;\n }\n },\n error: (err) => {\n this.loadingStableCoins = false;\n this.message = err.error.responseMessage || err.error.message;\n this.onError.emit({ errorMessage: this.message });\n },\n });\n }\n\n async getStableCoinNetworks(): Promise<void> {\n const stableCoin = this.stableCoinForm.get('stableCoin')?.value;\n this.loadingStableCoinNetworks = true;\n await this.resource.getStableCoinNetworks(this.environment, stableCoin ?? '').subscribe({\n next: async (response: IApiResponse<string[]>) => {\n if (response?.isSuccessful) {\n this.networkList =\n response.networks?.map((n) => ({\n label: n,\n value: n,\n })) ?? [];\n this.loadingStableCoinNetworks = false;\n }\n },\n error: (err: any) => {\n this.loadingStableCoinNetworks = false;\n this.message = err.error.responseMessage || err.error.message;\n this.onError.emit({ errorMessage: this.message });\n },\n });\n }\n\n async confirmPaymentHandler(): Promise<void> {\n this.isConfirmingPayment = true;\n await this.checkout\n .getPaymentReferenceDetails(this.environment, this.transactionReference)\n .subscribe({\n next: async (response: IApiResponse<IPaymentReferenceDetail>) => {\n if (response?.isSuccessful) {\n this.paymentReferenceDetails = response.data;\n if (\n response.data?.finalTransactionStatus === null ||\n response.data?.paymentStatus === null\n ) {\n this.message = 'Transaction not confirmed !!';\n this.paymentReferenceStatus = 'pending';\n this.paymentAuthorized.emit({\n paymentId: this.transactionReference,\n paymentDate: response.data.updatedAt,\n paymentStatus: this.paymentReferenceStatus,\n message: this.message,\n });\n } else if (\n response.data?.finalTransactionStatus === 'Success' ||\n response.data?.paymentStatus === 'Payment Received'\n ) {\n this.message = 'Transaction confirmed !!';\n this.paymentReferenceStatus = 'confirmed';\n this.paymentAuthorized.emit({\n paymentId: this.transactionReference,\n paymentDate: response.data.updatedAt,\n paymentStatus: this.paymentReferenceStatus,\n message: this.message,\n });\n }\n } else if (!response?.isSuccessful && response?.responseCode === '119') {\n this.paymentReferenceStatus = 'used';\n this.message = response.responseMessage;\n this.paymentAuthorized.emit({\n paymentId: this.transactionReference,\n paymentDate: null,\n paymentStatus: this.paymentReferenceStatus,\n message: this.message,\n });\n }\n this.isConfirmingPayment = false;\n },\n error: (err) => {\n this.paymentReferenceStatus = '';\n this.isConfirmingPayment = false;\n this.message = err.error.responseMessage || err.error.message;\n this.onError.emit({ errorMessage: this.message });\n },\n });\n }\n\n async ngOnInit(): Promise<void> {\n await this.generatePaymentLinkHandler();\n await this.getStableCoins();\n }\n}\n","<div class=\"flex flex-col gap-6\">\n @if (formIndex === 0) {\n <form [formGroup]=\"stableCoinForm\" class=\"grid grid-cols-1 gap-6\">\n <div class=\"grid grid-cols-1 gap-6\">\n <base-select\n formControlName=\"stableCoin\"\n label=\"Select Crypto\"\n [required]=\"true\"\n [options]=\"stableCoins\"\n [validationError]=\"getError('stableCoin', 'Select Crypto') ?? ''\"\n [loading]=\"loadingStableCoins\"\n (onSelectChange)=\"getStableCoinNetworks()\"\n ></base-select>\n <base-select\n formControlName=\"network\"\n label=\"Select Network\"\n [required]=\"true\"\n [options]=\"networkList\"\n [validationError]=\"getError('network', 'Network') ?? ''\"\n [loading]=\"loadingStableCoinNetworks\"\n ></base-select>\n </div>\n\n <base-button\n [label]=\"'Pay ' + formatAmountHandler\"\n type=\"primary\"\n customClass=\"w-full\"\n [loading]=\"generatingAddress\"\n (onClick)=\"payHandler()\"\n ></base-button>\n </form>\n }\n\n @if (formIndex === 1) {\n <div class=\"flex flex-col gap-6\">\n <div class=\"mx-auto\">\n <!-- <base-image\n src=\"../../../assets/images/stable-coin-qr-code.png\"\n alt=\"QR Code\"\n [width]=\"122\"\n [height]=\"122\"\n class=\"mb-1\"\n ></base-image> -->\n <p class=\"mb-0 text-body-4xs text-light-copy font-normal text-center\">\n {{ generateAddressPayload?.currency }}\n </p>\n </div>\n\n <div class=\"flex flex-col gap-6 border-c border-grey-100 p-4 rounded-2xl bg-light-white-50\">\n <div class=\"border-b border-grey-border pb-4 flex flex-col gap-2\">\n <p class=\"mb-0 text-body-3xs text-light-copy font-normal\">Network</p>\n <div class=\"flex justify-between\">\n <div class=\"flex flex-col gap-1\">\n <p class=\"mb-0 text-body-2xs font-medium text-sub-copy\">\n {{ addressDetails?.chain }}\n </p>\n <div class=\"flex items-center gap-2\">\n <p class=\"mb-0 text-body-3xs text-light-copy font-normal\">*Est. arrival = 3 mins</p>\n <p class=\"mb-0 text-body-3xs text-light-copy font-normal\">|</p>\n <base-currency-amount\n [currency]=\"generateAddressPayload?.currency ?? ''\"\n [amount]=\"addressDetails?.networkFee ?? 0\"\n textClass=\"mb-0 text-body-3xs text-light-copy font-normal\"\n iconColorClass=\"#557591\"\n iconWidth=\"12\"\n iconHeight=\"12\"\n ></base-currency-amount>\n </div>\n </div>\n <icon-arrow-swap></icon-arrow-swap>\n </div>\n </div>\n\n <div class=\"pb-4 flex flex-col gap-2\">\n <p class=\"mb-0 text-body-3xs text-light-copy font-normal\">Deposit Address ></p>\n <div class=\"flex justify-between\">\n <p class=\"mb-0 text-body-2xs font-medium text-sub-copy w-2/3 break-words\">\n {{ addressDetails?.walletAddress }}\n </p>\n <base-copy [copyText]=\"addressDetails?.walletAddress ?? ''\"></base-copy>\n </div>\n </div>\n\n <!-- <div class=\"pb-4 flex flex-col gap-2\">\n <p class=\"mb-0 text-body-3xs text-light-copy font-normal\">Memo ></p>\n <div class=\"flex justify-between\">\n <p\n class=\"mb-0 text-body-2xs font-medium text-sub-copy w-2/3 break-words\"\n >\n 0j8938ysheeee8333c162883a4d4f5g6t111nhk8uey37777yt6\n </p>\n <app-copy\n [isCopyIcon]=\"true\"\n [copyText]=\"'0j8938ysheeee8333c162883a4d4f5g6t111nhk8uey37777yt6'\"\n ></app-copy>\n </div>\n </div> -->\n </div>\n\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex items-center justify-between border-b border-grey-border py-3\">\n <p class=\"mb-0 text-body-2xs font-medium text-primary-black\">Network fee</p>\n <base-currency-amount\n [currency]=\"generateAddressPayload?.currency ?? ''\"\n [amount]=\"addressDetails?.networkFee ?? 0\"\n textClass=\"mb-0 text-body-2xs font-extrabold text-primary-black\"\n iconColorClass=\"#231F20\"\n ></base-currency-amount>\n </div>\n\n <div class=\"flex items-center justify-between py-4\">\n <p class=\"mb-0 text-body-lg font-semibold text-primary-black\">Pay</p>\n <base-currency-amount\n [currency]=\"generateAddressPayload?.currency ?? ''\"\n [amount]=\"amountPlusNetworkFee\"\n textClass=\"mb-0 text-body-lg font-extrabold text-primary-black\"\n iconColorClass=\"#231F20\"\n iconWidth=\"20\"\n iconHeight=\"20\"\n ></base-currency-amount>\n </div>\n </div>\n\n <div class=\"flex flex-col gap-6\">\n <base-button\n label=\"Confirm Payment\"\n type=\"primary\"\n customClass=\"w-full\"\n [loading]=\"isConfirmingPayment\"\n (onClick)=\"confirmPaymentHandler()\"\n ></base-button>\n </div>\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport {\n ISelectOption,\n RadioGroupComponent,\n ImageComponent,\n SuccessComponent,\n CardComponent,\n IPaymentObject,\n formatAmount,\n ISuccessObject,\n IErrorObject,\n} from '@miden-npm/angular';\nimport { PayByCardComponent } from '../components/pay-by-card/pay-by-card.component';\nimport { PayByTransferComponent } from '../components/pay-by-transfer/pay-by-transfer.component';\nimport { PayByStableCoinComponent } from '../components/pay-by-stable-coin/pay-by-stable-coin.component';\n\nexport interface CheckoutIframeStyle {\n [cssProp: string]: string | number;\n}\n\nexport interface CheckoutCardOptions {\n imageUrl?: string;\n numberPlaceholder?: string;\n expiryPlaceholder?: string;\n cvcPlaceholder?: string;\n styles?: {\n base?: CheckoutIframeStyle;\n invalid?: CheckoutIframeStyle;\n focus?: CheckoutIframeStyle;\n };\n}\n\nexport interface TokenizeResult {\n token: string;\n last4?: string;\n brand?: string;\n}\n\n@Component({\n selector: 'bzp-checkout-card',\n standalone: true,\n templateUrl: './checkout-card.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n RadioGroupComponent,\n ImageComponent,\n PayByCardComponent,\n PayByTransferComponent,\n PayByStableCoinComponent,\n SuccessComponent,\n CardComponent,\n ],\n})\nexport class CheckoutCardComponent {\n @Input() options: CheckoutCardOptions | null = null;\n @Input() secretKey: string = '';\n @Input() environment: 'sandbox' | 'prod' = 'sandbox';\n @Input() paymentObject: IPaymentObject = {\n merchantName: '',\n amount: 0,\n currency: '',\n email: '',\n phoneNumber: '',\n narration: '',\n redirectUrl: 'https://sandbox-merchant.buzapay.com/account/three-ds-status',\n };\n @Output() ready = new EventEmitter<void>();\n @Output() validityChange = new EventEmitter<{ valid: boolean; field?: string }>();\n @Output() tokenize = new EventEmitter<TokenizeResult>();\n @Output() paymentAuthorized = new EventEmitter<ISuccessObject>();\n @Output() onError = new EventEmitter<IErrorObject>();\n\n successObject: ISuccessObject = {\n paymentDate: '',\n paymentId: '',\n paymentStatus: '',\n };\n checkoutState: 'SUCCESS' | 'PENDING' | 'USED' = 'PENDING';\n countryOptions: ISelectOption[] = [\n {\n label: 'Nigeria',\n value: 'Nigeria',\n },\n {\n label: 'Ghana',\n value: 'Ghana',\n },\n ];\n paymentTypeOptions: ISelectOption[] = [\n { label: 'Card', value: 'CARD' },\n { label: 'Bank Transfer', value: 'BANK_TRANSFER' },\n { label: 'Stable Coin', value: 'STABLE_COIN' },\n ];\n paymentType: string = this.paymentTypeOptions[0].value;\n\n get filteredPaymentTypeOptions(): ISelectOption[] {\n if (this.paymentObject.currency === 'USD') {\n if (this.paymentObject.amount < 50) {\n return this.paymentTypeOptions.filter(\n (option) => option.value !== 'BANK_TRANSFER' && option.value !== 'STABLE_COIN',\n );\n } else {\n return this.paymentTypeOptions.filter((option) => option.value !== 'BANK_TRANSFER');\n }\n } else {\n return this.paymentTypeOptions.filter((option) => option.value !== 'STABLE_COIN');\n }\n }\n\n get formatAmountHandler(): string {\n return formatAmount(this.paymentObject.amount, this.paymentObject.currency);\n }\n\n paymentTypeHandler(event: string): void {\n this.paymentType = event;\n }\n\n setSuccess(event: ISuccessObject): void {\n this.successObject = { ...event };\n if (this.successObject.paymentStatus === 'Authorized') {\n this.checkoutState = 'SUCCESS';\n } else if (this.successObject.paymentStatus === 'Payment failed') {\n this.checkoutState = 'PENDING';\n } else if (this.successObject.paymentStatus === 'used') {\n this.checkoutState = 'USED';\n } else {\n this.checkoutState = 'PENDING';\n }\n\n this.paymentAuthorized.emit(event);\n }\n\n onErrorHandler(e: IErrorObject): void {\n this.onError.emit(e);\n }\n}\n","<base-card>\n <div class=\"grid grid-cols-3\">\n @if (checkoutState === 'PENDING') {\n <div class=\"bg-[#EFF7FF] px-6 py-8 flex flex-col gap-5 col-span-1 rounded-l-xl\">\n <p class=\"text-heading-text text-body-xs font-semibold\">Pay with</p>\n <base-radio-group\n [options]=\"filteredPaymentTypeOptions\"\n (selectedChange)=\"paymentTypeHandler($event)\"\n ></base-radio-group>\n </div>\n }\n\n <div [class]=\"checkoutState === 'SUCCESS' ? 'col-span-3' : 'col-span-2'\">\n @if (checkoutState === 'PENDING') {\n <div class=\"flex items-center justify-between px-12 py-8\">\n @if (options?.imageUrl) {\n <base-image\n [src]=\"options?.imageUrl ?? ''\"\n alt=\"Merchant Logo\"\n [width]=\"52\"\n [height]=\"52\"\n class=\"rounded-lg\"\n ></base-image>\n } @else {\n <div\n class=\"bg-heading-text rounded flex flex-col justify-center\"\n style=\"width: 52px; height: 52px\"\n >\n <p class=\"text-white text-center text-body-2xs font-medium\">Logo</p>\n </div>\n }\n\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-body-2xs font-regular text-sub-copy text-right\">\n {{ paymentObject.merchantName }}\n </p>\n <p class=\"text-body-2xs font-regular text-sub-copy text-right\">\n Pay:\n <span class=\"text-orange-500 font-extrabold\">{{ formatAmountHandler }}</span>\n </p>\n </div>\n </div>\n\n <div class=\"overflow-y-scroll px-10 pb-10 pt-2\">\n @if (paymentType === 'CARD') {\n <pay-by-card\n [environment]=\"environment\"\n [secretKey]=\"secretKey\"\n [paymentObject]=\"paymentObject\"\n (paymentAuthorized)=\"setSuccess($event)\"\n (onError)=\"onErrorHandler($event)\"\n ></pay-by-card>\n } @else if (paymentType === 'BANK_TRANSFER') {\n <pay-by-transfer\n [environment]=\"environment\"\n [secretKey]=\"secretKey\"\n [paymentObject]=\"paymentObject\"\n (paymentAuthorized)=\"setSuccess($event)\"\n (onError)=\"onErrorHandler($event)\"\n ></pay-by-transfer>\n } @else {\n <pay-by-stable-coin\n [environment]=\"environment\"\n [secretKey]=\"secretKey\"\n [paymentObject]=\"paymentObject\"\n (paymentAuthorized)=\"setSuccess($event)\"\n (onError)=\"onErrorHandler($event)\"\n ></pay-by-stable-coin>\n }\n </div>\n } @else if (checkoutState === 'SUCCESS') {\n <base-success\n [amount]=\"paymentObject.amount\"\n [currency]=\"paymentObject.currency\"\n [redirectUrl]=\"paymentObject.redirectUrl ?? ''\"\n [successObject]=\"successObject\"\n ></base-success>\n }\n </div>\n </div>\n</base-card>\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport {\n checkObjectTruthy,\n CheckoutService,\n IApiResponse,\n IPaymentObject,\n IconLoaderComponent,\n IErrorObject,\n} from '@miden-npm/angular';\nimport { finalize, tap } from 'rxjs';\n\ninterface IIframeStyle {\n width?: string;\n height?: string;\n border?: string;\n borderRadius?: string;\n overflow?: string;\n}\n\n@Component({\n selector: 'bzp-checkout-iframe',\n standalone: true,\n templateUrl: './checkout-iframe.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [IconLoaderComponent, CommonModule],\n})\nexport class CheckoutIframeComponent implements AfterViewInit {\n constructor(\n private renderer: Renderer2,\n private cdr: ChangeDetectorRef,\n private checkout: CheckoutService,\n ) {}\n\n errorMessage: string = '';\n loading: boolean = false;\n launchUrl: string = '';\n iframe: any;\n\n @Input() secretKey: string = '';\n @Input() url: string = '';\n @Input() style: IIframeStyle = {\n width: '100%',\n height: '100vh',\n border: '0',\n borderRadius: '6px',\n overflow: 'hidden',\n };\n @Input() environment: 'sandbox' | 'prod' = 'sandbox';\n @Input() paymentObject: IPaymentObject = {\n merchantName: '',\n amount: 0,\n currency: '',\n email: '',\n phoneNumber: '',\n narration: '',\n redirectUrl: 'https://sandbox-merchant.buzapay.com/account/three-ds-status',\n };\n @ViewChild('container', { static: false }) container?: ElementRef<HTMLDivElement>;\n @Output() onError = new EventEmitter<IErrorObject>();\n\n get blockStyle() {\n return {\n ...(this.style || {}),\n };\n }\n\n launchIframe(url: string): void {\n const host = this.container?.nativeElement;\n if (!host) return; // guard: container not in DOM yet\n this.iframe = this.renderer.createElement('iframe');\n this.renderer.setAttribute(this.iframe, 'src', url);\n this.renderer.setStyle(this.iframe, 'width', this.style.width);\n this.renderer.setStyle(this.iframe, 'height', this.style.height);\n this.renderer.setStyle(this.iframe, 'border', this.style.border);\n this.renderer.setStyle(this.iframe, 'borderRadius', this.style.borderRadius);\n this.renderer.setStyle(this.iframe, 'overflow', this.style.overflow);\n this.renderer.appendChild(host, this.iframe);\n }\n\n async generatePaymentLinkHandler(): Promise<void | string> {\n if (this.url) {\n this.launchIframe(this.url);\n return;\n }\n\n if (!this.secretKey) {\n return (this.errorMessage = 'Secret key is required.');\n }\n\n if (!checkObjectTruthy<IPaymentObject>(this.paymentObject)) {\n return (this.errorMessage = 'Kindly ensure you are passing all the required data.');\n }\n\n this.loading = true;\n this.cdr.markForCheck();\n this.checkout\n .createPaymentLink(this.paymentObject, this.environment, this.secretKey)\n .pipe(\n tap((res: IApiResponse<any>) => {\n if (res?.isSuccessful) {\n this.launchUrl = res.launchUrl ?? '';\n this.errorMessage = 'Payment link created successfully';\n if (this.launchUrl) {\n this.launchIframe(`${this.launchUrl}&merchantId=${btoa(this.secretKey)}`);\n }\n } else {\n this.errorMessage = 'Failed to create payment link';\n this.onError.emit({ errorMessage: this.errorMessage });\n }\n }),\n finalize(() => {\n this.loading = false;\n this.cdr.markForCheck();\n }),\n )\n .subscribe({\n error: (err: any) => {\n this.onError.emit({ errorMessage: this.errorMessage });\n },\n });\n }\n\n async ngAfterViewInit(): Promise<void> {\n await this.generatePaymentLinkHandler();\n }\n}\n","<div class=\"relative\" [ngStyle]=\"blockStyle\">\n <div #container class=\"w-full h-full\"></div>\n\n @if (loading) {\n <div class=\"absolute inset-0 grid place-items-center bg-white/60\">\n <icon-loader></icon-loader>\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport {\n ButtonComponent,\n checkObjectTruthy,\n CheckoutService,\n IApiResponse,\n IPaymentObject,\n IErrorObject,\n InputErrorComponent,\n} from '@miden-npm/angular';\nimport { CheckoutIframeComponent } from '../checkout-iframe/checkout-iframe.component';\nimport { finalize, tap } from 'rxjs';\n\n@Component({\n selector: 'bzp-checkout-button',\n standalone: true,\n templateUrl: './checkout-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ButtonComponent, InputErrorComponent, InputErrorComponent, CheckoutIframeComponent],\n})\nexport class CheckoutButtonComponent {\n constructor(\n private checkout: CheckoutService,\n private cdr: ChangeDetectorRef,\n ) {}\n\n errorMessage: string = '';\n loading: boolean = false;\n launchUrl: string = '';\n urlLaunchUrl: string = '';\n\n @Input() secretKey: string = '';\n @Input() timeout: number = 30000;\n @Input() environment: 'sandbox' | 'prod' = 'sandbox';\n @Input() mode: 'redirect' | 'iframe' = 'redirect';\n @Input() paymentObject: IPaymentObject = {\n merchantName: '',\n amount: 0,\n currency: '',\n email: '',\n phoneNumber: '',\n narration: '',\n redirectUrl: 'https://sandbox-merchant.buzapay.com/account/three-ds-status',\n };\n @Output() onError = new EventEmitter<IErrorObject>();\n\n async generatePaymentLinkHandler(): Promise<void | string> {\n if (!this.secretKey) {\n return (this.errorMessage = 'Secret key is required.');\n }\n\n if (!checkObjectTruthy<IPaymentObject>(this.paymentObject)) {\n return (this.errorMessage = 'Kindly ensure you are passing all the required data.');\n }\n\n this.loading = true;\n this.cdr.markForCheck();\n this.checkout\n .createPaymentLink(this.paymentObject, this.environment, this.secretKey)\n .pipe(\n tap((res: IApiResponse<any>) => {\n if (res?.isSuccessful) {\n this.launchUrl = res.launchUrl ?? '';\n this.urlLaunchUrl = `${res.launchUrl}&merchantId=${btoa(this.secretKey)}`;\n this.errorMessage = 'Payment link created successfully';\n if (this.mode === 'redirect' && this.launchUrl) {\n window.open(this.launchUrl, '_blank', 'noopener,noreferrer');\n }\n } else {\n this.errorMessage = 'Failed to create payment link';\n this.onError.emit({ errorMessage: this.errorMessage });\n }\n }),\n finalize(() => {\n this.loading = false;\n this.cdr.markForCheck();\n }),\n )\n .subscribe({\n error: (err: any) => {\n this.onError.emit({ errorMessage: this.errorMessage });\n },\n });\n }\n}\n","@if (urlLaunchUrl && mode === 'iframe') {\n <bzp-checkout-iframe\n [url]=\"urlLaunchUrl\"\n [secretKey]=\"secretKey\"\n [environment]=\"environment\"\n ></bzp-checkout-iframe>\n} @else {\n <base-button\n label=\"Pay\"\n type=\"primary\"\n customClass=\"w-full\"\n [loading]=\"loading\"\n (onClick)=\"generatePaymentLinkHandler()\"\n ></base-button>\n <base-input-error [errorMessage]=\"errorMessage\"></base-input-error>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2"],"mappings":"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"}
|
|
@@ -378,7 +378,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
|
|
|
378
378
|
}] } });
|
|
379
379
|
|
|
380
380
|
const getBaseUrl = (mode) => {
|
|
381
|
-
return mode === 'sandbox' ? 'https://sandbox-api.
|
|
381
|
+
return mode === 'sandbox' ? 'https://sandbox-api.buzapay.com/payment-gateway-api' : '';
|
|
382
382
|
};
|
|
383
383
|
|
|
384
384
|
const restrictToNumericKeys = (event) => {
|
|
@@ -1171,8 +1171,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
|
|
|
1171
1171
|
type: Input
|
|
1172
1172
|
}] } });
|
|
1173
1173
|
|
|
1174
|
-
;
|
|
1175
|
-
|
|
1176
1174
|
class CheckoutService {
|
|
1177
1175
|
http;
|
|
1178
1176
|
constructor(http) {
|