@liberquack/utils
Version:
Quack utilities
54 lines (53 loc) • 3.67 kB
TypeScript
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 {};