Fixed more to redirections
This commit is contained in:
parent
c405d22fbd
commit
4f90aeff3c
@ -45,3 +45,11 @@ export interface IPaymentRequest {
|
|||||||
export interface IPaymentResponse {
|
export interface IPaymentResponse {
|
||||||
payment_url: string; // URL where customer needs to continue with payment flow
|
payment_url: string; // URL where customer needs to continue with payment flow
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type TCashierResultStatus = 'success' | 'cancel' | 'error';
|
||||||
|
|
||||||
|
export interface ICashierResultMessage {
|
||||||
|
type: 'CASHIER_RESULT';
|
||||||
|
status: TCashierResultStatus;
|
||||||
|
message?: string;
|
||||||
|
}
|
||||||
|
|||||||
@ -1,5 +1,8 @@
|
|||||||
|
import { useEffect } from 'react';
|
||||||
import { useNavigate, useSearchParams } from 'react-router-dom';
|
import { useNavigate, useSearchParams } from 'react-router-dom';
|
||||||
import Status from '@/components/Status/Status';
|
import Status from '@/components/Status/Status';
|
||||||
|
import { postMessageToParent } from '@/utils/parentMessage';
|
||||||
|
import type { TCashierResultStatus } from '@/features/cashier/types';
|
||||||
import './PaymentStatus.scss';
|
import './PaymentStatus.scss';
|
||||||
|
|
||||||
function PaymentStatus() {
|
function PaymentStatus() {
|
||||||
@ -8,13 +11,21 @@ function PaymentStatus() {
|
|||||||
|
|
||||||
// Get status from URL query params
|
// Get status from URL query params
|
||||||
const statusParam = searchParams.get('status');
|
const statusParam = searchParams.get('status');
|
||||||
const status: 'success' | 'cancel' | 'error' =
|
const status: TCashierResultStatus =
|
||||||
statusParam === 'success' || statusParam === 'cancel' || statusParam === 'error'
|
statusParam === 'success' || statusParam === 'cancel' || statusParam === 'error'
|
||||||
? statusParam
|
? statusParam
|
||||||
: 'error'; // Default to error if invalid or missing
|
: 'error'; // Default to error if invalid or missing
|
||||||
|
|
||||||
// Get message from URL params or use default
|
// Get message from URL params or use default
|
||||||
const message = searchParams.get('message') || getDefaultMessage(status);
|
const message = getDefaultMessage(status);
|
||||||
|
|
||||||
|
// Notify parent window about the payment result
|
||||||
|
useEffect(() => {
|
||||||
|
postMessageToParent({
|
||||||
|
type: 'CASHIER_RESULT',
|
||||||
|
status,
|
||||||
|
});
|
||||||
|
}, [status]);
|
||||||
|
|
||||||
const handleAction = () => {
|
const handleAction = () => {
|
||||||
navigate('/');
|
navigate('/');
|
||||||
@ -38,7 +49,7 @@ function PaymentStatus() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getDefaultMessage(type: 'success' | 'cancel' | 'error'): string {
|
function getDefaultMessage(type: TCashierResultStatus): string {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'success':
|
case 'success':
|
||||||
return 'Payment completed successfully!';
|
return 'Payment completed successfully!';
|
||||||
|
|||||||
15
src/utils/parentMessage.ts
Normal file
15
src/utils/parentMessage.ts
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
import type { ICashierResultMessage } from '@/features/cashier/types';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Posts a message to the parent window (useful for iframe integrations)
|
||||||
|
* @param message - The message object to send
|
||||||
|
* @param targetOrigin - The target origin for the message (defaults to '*' for flexibility)
|
||||||
|
*/
|
||||||
|
export function postMessageToParent(
|
||||||
|
message: ICashierResultMessage,
|
||||||
|
targetOrigin: string = '*'
|
||||||
|
): void {
|
||||||
|
if (window.parent && window.parent !== window) {
|
||||||
|
window.parent.postMessage(message, targetOrigin);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user