changes
This commit is contained in:
@@ -17,6 +17,8 @@ import { TranslatePipe } from '../../i18n/translate.pipe';
|
||||
import { TranslateService } from '../../i18n/translate.service';
|
||||
import { PAYMENT_POLL_INTERVAL_MS, PAYMENT_MAX_CHECKS, PAYMENT_TIMEOUT_CLOSE_MS, LINK_COPIED_DURATION_MS } from '../../config/constants';
|
||||
|
||||
type PaymentMethod = 'qr' | 'card';
|
||||
|
||||
@Component({
|
||||
selector: 'app-cart',
|
||||
imports: [DecimalPipe, RouterLink, FormsModule, EmptyCartIconComponent, DeliverySelectorComponent, TelegramLoginComponent, LangRoutePipe, TranslatePipe],
|
||||
@@ -51,6 +53,7 @@ export class CartComponent implements OnDestroy {
|
||||
bankPaymentUrl = signal<string>('');
|
||||
bankPaymentFrameUrl = signal<SafeResourceUrl | null>(null);
|
||||
showBankPaymentPopup = signal<boolean>(false);
|
||||
selectedPaymentMethod = signal<PaymentMethod>('qr');
|
||||
paymentId = signal<string>('');
|
||||
linkCopied = signal<boolean>(false);
|
||||
|
||||
@@ -161,7 +164,7 @@ export class CartComponent implements OnDestroy {
|
||||
this.cartService.setSelectedDelivery(itemID, selectedDelivery);
|
||||
}
|
||||
|
||||
checkout(): void {
|
||||
checkout(paymentMethod: PaymentMethod): void {
|
||||
if (!this.allRequiredDeliveriesSelected()) {
|
||||
alert(this.i18n.t('cart.deliveryRequired'));
|
||||
return;
|
||||
@@ -171,11 +174,12 @@ export class CartComponent implements OnDestroy {
|
||||
alert(this.i18n.t('cart.acceptTerms'));
|
||||
return;
|
||||
}
|
||||
this.openPaymentPopup();
|
||||
this.openPaymentPopup(paymentMethod);
|
||||
}
|
||||
|
||||
openPaymentPopup(): void {
|
||||
openPaymentPopup(paymentMethod: PaymentMethod): void {
|
||||
this.showPaymentPopup.set(true);
|
||||
this.selectedPaymentMethod.set(paymentMethod);
|
||||
this.paymentStatus.set('creating');
|
||||
this.paymentId.set('');
|
||||
this.qrCodeUrl.set('');
|
||||
@@ -192,7 +196,7 @@ export class CartComponent implements OnDestroy {
|
||||
this.phoneError.set('');
|
||||
this.emailSubmitting.set(false);
|
||||
this.paidItems = [...this.items()];
|
||||
this.createPayment();
|
||||
this.createPayment(paymentMethod);
|
||||
}
|
||||
|
||||
closePaymentPopup(): void {
|
||||
@@ -219,10 +223,10 @@ export class CartComponent implements OnDestroy {
|
||||
this.bankPaymentFrameUrl.set(null);
|
||||
this.showBankPaymentPopup.set(false);
|
||||
this.linkCopied.set(false);
|
||||
this.createPayment();
|
||||
this.createPayment(this.selectedPaymentMethod());
|
||||
}
|
||||
|
||||
createPayment(): void {
|
||||
createPayment(paymentMethod: PaymentMethod): void {
|
||||
const orderId = this.generateOrderId();
|
||||
const paymentPayload = {
|
||||
amount: Number(this.totalWithDelivery()),
|
||||
@@ -231,6 +235,7 @@ export class CartComponent implements OnDestroy {
|
||||
siteorderID: orderId,
|
||||
redirectUrl: '',
|
||||
telegramUsername: this.getTelegramUsername(),
|
||||
paymentMethod,
|
||||
items: this.buildPaymentItems(),
|
||||
};
|
||||
|
||||
@@ -242,7 +247,7 @@ export class CartComponent implements OnDestroy {
|
||||
const paymentLink = this.apiService.resolvePaymentLink(response);
|
||||
const bankUrl = this.apiService.resolveBankPaymentUrl(response);
|
||||
|
||||
if (!qrId || (!qrUrl && !bankUrl)) {
|
||||
if (!qrId || (paymentMethod === 'qr' && !qrUrl) || (paymentMethod === 'card' && !bankUrl)) {
|
||||
console.error('Payment response missing payment fields:', response);
|
||||
this.setPaymentError();
|
||||
return;
|
||||
@@ -255,6 +260,9 @@ export class CartComponent implements OnDestroy {
|
||||
|
||||
this.paymentStatus.set('waiting');
|
||||
this.startPolling();
|
||||
if (paymentMethod === 'card') {
|
||||
this.openBankPaymentPopup();
|
||||
}
|
||||
},
|
||||
error: (err) => {
|
||||
console.error('Error creating payment:', err);
|
||||
|
||||
Reference in New Issue
Block a user