updates
This commit is contained in:
@@ -4,7 +4,7 @@ import apiClient from './apiClient';
|
||||
export interface PaymentData {
|
||||
booking_id: number;
|
||||
amount: number;
|
||||
payment_method: 'cash' | 'bank_transfer' | 'stripe';
|
||||
payment_method: 'cash' | 'bank_transfer' | 'stripe' | 'paypal';
|
||||
transaction_id?: string;
|
||||
notes?: string;
|
||||
}
|
||||
@@ -13,7 +13,7 @@ export interface Payment {
|
||||
id: number;
|
||||
booking_id: number;
|
||||
amount: number;
|
||||
payment_method: 'cash' | 'bank_transfer' | 'credit_card' | 'debit_card' | 'e_wallet' | 'stripe';
|
||||
payment_method: 'cash' | 'bank_transfer' | 'credit_card' | 'debit_card' | 'e_wallet' | 'stripe' | 'paypal';
|
||||
payment_type: 'full' | 'deposit' | 'remaining';
|
||||
deposit_percentage?: number;
|
||||
payment_status: 'pending' | 'completed' | 'failed' | 'refunded';
|
||||
@@ -22,6 +22,14 @@ export interface Payment {
|
||||
notes?: string;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
booking?: {
|
||||
id: number;
|
||||
booking_number: string;
|
||||
user?: {
|
||||
name: string;
|
||||
email?: string;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
export interface BankInfo {
|
||||
@@ -284,6 +292,79 @@ export const confirmStripePayment = async (
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Create PayPal order
|
||||
* POST /api/payments/paypal/create-order
|
||||
*/
|
||||
export const createPayPalOrder = async (
|
||||
bookingId: number,
|
||||
amount: number,
|
||||
currency: string = 'USD',
|
||||
returnUrl?: string,
|
||||
cancelUrl?: string
|
||||
): Promise<{
|
||||
success: boolean;
|
||||
data: {
|
||||
order_id: string;
|
||||
approval_url: string;
|
||||
status: string;
|
||||
};
|
||||
message?: string;
|
||||
}> => {
|
||||
const response = await apiClient.post(
|
||||
'/payments/paypal/create-order',
|
||||
{
|
||||
booking_id: bookingId,
|
||||
amount,
|
||||
currency,
|
||||
return_url: returnUrl,
|
||||
cancel_url: cancelUrl,
|
||||
}
|
||||
);
|
||||
// Map backend response format (status: "success") to frontend format (success: true)
|
||||
const data = response.data;
|
||||
return {
|
||||
success: data.status === "success" || data.success === true,
|
||||
data: data.data || {},
|
||||
message: data.message,
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Capture PayPal payment
|
||||
* POST /api/payments/paypal/capture
|
||||
*/
|
||||
export const capturePayPalPayment = async (
|
||||
orderId: string,
|
||||
bookingId: number
|
||||
): Promise<{
|
||||
success: boolean;
|
||||
data: {
|
||||
payment: Payment;
|
||||
booking: {
|
||||
id: number;
|
||||
booking_number: string;
|
||||
status: string;
|
||||
};
|
||||
};
|
||||
message?: string;
|
||||
}> => {
|
||||
const response = await apiClient.post(
|
||||
'/payments/paypal/capture',
|
||||
{
|
||||
order_id: orderId,
|
||||
booking_id: bookingId,
|
||||
}
|
||||
);
|
||||
// Map backend response format (status: "success") to frontend format (success: true)
|
||||
const data = response.data;
|
||||
return {
|
||||
success: data.status === "success" || data.success === true,
|
||||
data: data.data || {},
|
||||
message: data.message,
|
||||
};
|
||||
};
|
||||
|
||||
export default {
|
||||
createPayment,
|
||||
getPayments,
|
||||
@@ -295,4 +376,6 @@ export default {
|
||||
getPaymentsByBookingId,
|
||||
createStripePaymentIntent,
|
||||
confirmStripePayment,
|
||||
createPayPalOrder,
|
||||
capturePayPalPayment,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user