UNPKG

@liberquack/utils

Version:
54 lines (53 loc) 3.67 kB
import { Stripe } from "stripe"; import { AbstractPaymentServerProvider, PaymentExternalProductData } from "./abstract-payment-server-provider.js"; import { PaymentCalculatedCheckout, PaymentCheckoutExecution, PaymentEnforceProviderBase, PaymentProduct, PaymentUser } from "../types.js"; import { NarrowedStripeCalculatedCheckout, NarrowedStripeCompletedCheckout, PaymentStripeProviderData } from "../payment-stripe-types.js"; import { Intersection } from "utility-types"; export declare type PaymentStripeAccount = PaymentEnforceProviderBase<{ provider: "stripe"; customer: Stripe.Customer; paymentSources: Array<Stripe.Card>; }>; declare type PaymentStripePreCaptureResult = { intentOpts?: Partial<Intersection<Stripe.SetupIntentCreateParams, Stripe.PaymentIntentCreateParams>>; }; declare type PaymentStripeProviderOpts = { customizeIntent: (user: PaymentUser, checkout: NarrowedStripeCalculatedCheckout, card?: Stripe.PaymentMethod.Card) => Promise<PaymentStripePreCaptureResult>; preCaptureCheck?: (user: PaymentUser, checkout: NarrowedStripeCalculatedCheckout, intent: Stripe.SetupIntent | Stripe.PaymentIntent) => Promise<void>; }; export declare class PaymentStripeServerProvider extends AbstractPaymentServerProvider<PaymentStripeProviderData> { opts?: PaymentStripeProviderOpts | undefined; stripe: Stripe; provider: "stripe"; constructor(apiKey: string, opts?: PaymentStripeProviderOpts | undefined); readWebhookCustomer(event: Stripe.Event): Promise<{ id: string; } | { email: string; } | void>; supportsWebhook(event: any): Promise<boolean>; readWebhookCheckout(user: PaymentUser, event: Stripe.Event): Promise<{ providerCheckoutId: string; } | void>; handleWebhook(user: PaymentUser, checkout: NarrowedStripeCompletedCheckout, webhookData: any): Promise<PaymentCheckoutExecution | void>; private retrievePaymentIntent; updateDefaultCard(user: PaymentUser, cardIdentifier: string): Promise<PaymentStripeAccount>; createCard(user: PaymentUser, data: Stripe.Token): Promise<PaymentStripeAccount>; prepareCheckout(step: "calc" | "execution", user: PaymentUser, calculatedCheckout: PaymentCalculatedCheckout, opts?: { paymentMethodId: Stripe.PaymentMethod["id"]; intentOptions?: Partial<Intersection<Stripe.SetupIntentCreateParams, Stripe.PaymentIntentCreateParams>>; }): Promise<NarrowedStripeCalculatedCheckout>; checkout(user: PaymentUser, checkoutObj: NarrowedStripeCalculatedCheckout | NarrowedStripeCompletedCheckout): Promise<PaymentCheckoutExecution>; protected revertSubscriptionCancellation(user: PaymentUser, checkoutObj: NarrowedStripeCalculatedCheckout): Promise<PaymentCheckoutExecution | void>; cancelCheckout(user: PaymentUser, checkoutObj: NarrowedStripeCompletedCheckout): Promise<PaymentCheckoutExecution>; private createSubscription; protected buildCheckoutResult(checkoutObj: NarrowedStripeCalculatedCheckout | NarrowedStripeCompletedCheckout, intent: Stripe.PaymentIntent | Stripe.SetupIntent, subscription: Stripe.Subscription | undefined, providerProducts: PaymentExternalProductData[], products: PaymentProduct[]): NarrowedStripeCompletedCheckout; private ensureStripeProducts; private ensureStripeAccount; private _getStripeAccount; private _createStripeAccount; private getIdFromStringOrObject; get3dsResultFromSetupIntent(intent: Stripe.SetupIntent): Promise<Stripe.SetupAttempt.PaymentMethodDetails.Card.ThreeDSecure>; get3dsResultFromPaymentIntent(intent: Stripe.PaymentIntent): Promise<Stripe.Charge.PaymentMethodDetails.Card.ThreeDSecure>; } export {};