Fixed more to redirections
This commit is contained in:
parent
c405d22fbd
commit
4f90aeff3c
@ -45,3 +45,11 @@ export interface IPaymentRequest {
|
||||
export interface IPaymentResponse {
|
||||
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 Status from '@/components/Status/Status';
|
||||
import { postMessageToParent } from '@/utils/parentMessage';
|
||||
import type { TCashierResultStatus } from '@/features/cashier/types';
|
||||
import './PaymentStatus.scss';
|
||||
|
||||
function PaymentStatus() {
|
||||
@ -8,13 +11,21 @@ function PaymentStatus() {
|
||||
|
||||
// Get status from URL query params
|
||||
const statusParam = searchParams.get('status');
|
||||
const status: 'success' | 'cancel' | 'error' =
|
||||
const status: TCashierResultStatus =
|
||||
statusParam === 'success' || statusParam === 'cancel' || statusParam === 'error'
|
||||
? statusParam
|
||||
: 'error'; // Default to error if invalid or missing
|
||||
|
||||
// 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 = () => {
|
||||
navigate('/');
|
||||
@ -38,7 +49,7 @@ function PaymentStatus() {
|
||||
);
|
||||
}
|
||||
|
||||
function getDefaultMessage(type: 'success' | 'cancel' | 'error'): string {
|
||||
function getDefaultMessage(type: TCashierResultStatus): string {
|
||||
switch (type) {
|
||||
case 'success':
|
||||
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