@paypal/react-paypal-js
Version:
React components for the PayPal JS SDK
38 lines (37 loc) • 2.13 kB
TypeScript
import type { BasePaymentSessionReturn, PayPalSubscriptionPresentationModeOptions, PayPalSubscriptionSessionOptions } from "../types";
export type UsePayPalSubscriptionPaymentSessionProps = PayPalSubscriptionSessionOptions & PayPalSubscriptionPresentationModeOptions & {
createSubscription: () => Promise<{
subscriptionId: string;
}>;
};
/**
* Hook for managing PayPal subscription payment sessions.
*
* This hook creates and manages a PayPal subscription payment session, supporting multiple presentation modes
* including popup and modal. It handles session lifecycle and provides methods to start, cancel, and destroy the session.
*
* @param props - Configuration options including presentation mode and callbacks
* @param props.createSubscription - Function that returns a promise resolving to an object with subscriptionId
* @param props.presentationMode - How the subscription experience is presented: 'popup', 'modal', 'auto', or 'payment-handler'
* @param props.fullPageOverlay - Whether to show a full-page overlay during the subscription flow
* @returns Object with: `error` (any session error), `isPending` (SDK loading), `handleClick` (starts session), `handleCancel` (cancels session), `handleDestroy` (cleanup)
*
* @example
* function SubscriptionCheckoutButton() {
* const { error, isPending, handleClick, handleCancel } = usePayPalSubscriptionPaymentSession({
* presentationMode: 'popup',
* createSubscription: async () => ({ subscriptionId: 'SUB-123' }),
* onApprove: (data) => console.log('Subscription approved:', data),
* onCancel: () => console.log('Subscription cancelled'),
* onError: (err) => console.error('Subscription error:', err),
* });
*
* if (isPending) return null;
* if (error) return <div>Error: {error.message}</div>;
*
* return (
* <paypal-button onClick={handleClick} onCancel={handleCancel} />
* );
* }
*/
export declare function usePayPalSubscriptionPaymentSession({ presentationMode, fullPageOverlay, createSubscription, ...callbacks }: UsePayPalSubscriptionPaymentSessionProps): BasePaymentSessionReturn;