diff --git a/dashboard/src/components/billing/PayPalButtons.tsx b/dashboard/src/components/billing/PayPalButtons.tsx index d05e817..ff3b785 100644 --- a/dashboard/src/components/billing/PayPalButtons.tsx +++ b/dashboard/src/components/billing/PayPalButtons.tsx @@ -16,6 +16,26 @@ type PayPalButtonsComponent = ReturnType['Buttons'] type PayPalButtonsRenderOptions = Parameters['Buttons']>[0] +type PayPalOrderActions = { + order: { + create: (config: { + purchase_units: Array<{ + description: string + invoice_id?: string + custom_id?: string + amount: { currency_code: string; value: string } + }> + }) => Promise | string + capture: () => Promise> + } +} + +type PayPalSubscriptionActions = { + subscription: { + create: (config: { plan_id: string; custom_id?: string }) => Promise | string + } +} + type PayPalPayGoButtonProps = { clientId?: string currency?: string @@ -144,7 +164,7 @@ export function PayPalPayGoButton({ shape: 'rect', label: 'pay', }, - createOrder: (_, actions) => { + createOrder: (_data: Record, actions: PayPalOrderActions) => { return actions.order.create({ purchase_units: [ { @@ -159,7 +179,7 @@ export function PayPalPayGoButton({ ], }) }, - onApprove: (data, actions) => { + onApprove: (data: { orderID?: string }, actions: Partial) => { if (actions.order) { return actions.order.capture().then((details) => { onApprove?.(data.orderID ?? 'unknown', details as unknown as Record) @@ -201,13 +221,16 @@ export function PayPalSubscriptionButton({ shape: 'rect', label: 'subscribe', }, - createSubscription: (_, actions) => { + createSubscription: (_data: Record, actions: PayPalSubscriptionActions) => { return actions.subscription.create({ plan_id: planId, custom_id: productSlug, }) }, - onApprove: (data, _actions) => { + onApprove: ( + data: { subscriptionID?: string; orderID?: string }, + _actions: unknown, + ) => { onApprove?.(data.subscriptionID ?? data.orderID ?? 'unknown', data as unknown as Record) }, }