zibri
    Preparing search index...

    Interface PaymentServiceInterface<Methods, P, _Check>

    Interface for a payment service.

    interface PaymentServiceInterface<
        Methods extends readonly PaymentMethod[],
        P extends readonly AnyPaymentProviderInterface[],
        _Check extends
            Methods[number] extends MethodsCoveredByProviders<P>
                ? unknown
                : "Error: not all payment methods are covered by the provided providers" = Methods[number] extends MethodsCoveredByProviders<
            P,
        >
            ? unknown
            : "Error: not all payment methods are covered by the provided providers",
    > {
        cancelPayment: <M extends PaymentMethod>(
            payment:
                | PaymentForMethod<Methods, M, P>
                | PaymentReservationForMethod<Methods, M, P>,
        ) => void | Promise<void>;
        collectPaymentFromReservation: <M extends PaymentMethod>(
            payment: PaymentReservationForMethod<Methods, M, P>,
        ) => void | Promise<void>;
        confirmPayment: <M extends PaymentMethod>(
            payment: PaymentForMethod<Methods, M, P>,
        ) => void | Promise<void>;
        confirmPaymentReservation: <M extends PaymentMethod>(
            payment: PaymentReservationForMethod<Methods, M, P>,
        ) => void | Promise<void>;
        refundPayment: <M extends PaymentMethod>(
            payment: PaymentForMethod<Methods, M, P>,
        ) => void | Promise<void>;
        startPayment: <M extends PaymentMethod>(
            method: M,
            data: ValidatedPaymentDataForMethod<Methods, M, P>,
        ) =>
            | PaymentForMethod<Methods, M, P>
            | Promise<PaymentForMethod<Methods, M, P>>;
        startPaymentReservation: <M extends PaymentMethod>(
            method: M,
            data: ValidatedPaymentDataForMethod<Methods, M, P>,
        ) =>
            | PaymentReservationForMethod<Methods, M, P>
            | Promise<PaymentReservationForMethod<Methods, M, P>>;
        validatePaymentData: <M extends PaymentMethod>(
            method: M,
            data: PaymentDataForMethod<Methods, M, P>,
        ) =>
            | ValidatedPaymentDataForMethod<Methods, M, P>
            | Promise<ValidatedPaymentDataForMethod<Methods, M, P>>;
    }

    Type Parameters

    • Methods extends readonly PaymentMethod[]
    • P extends readonly AnyPaymentProviderInterface[]
    • _Check extends Methods[number] extends MethodsCoveredByProviders<P>
          ? unknown
          : "Error: not all payment methods are covered by the provided providers" = Methods[number] extends MethodsCoveredByProviders<P>
          ? unknown
          : "Error: not all payment methods are covered by the provided providers"

    Implemented by

    Index

    Properties

    cancelPayment: <M extends PaymentMethod>(
        payment:
            | PaymentForMethod<Methods, M, P>
            | PaymentReservationForMethod<Methods, M, P>,
    ) => void | Promise<void>

    Cancels the given payment. Only works if it has not been paid already.

    collectPaymentFromReservation: <M extends PaymentMethod>(
        payment: PaymentReservationForMethod<Methods, M, P>,
    ) => void | Promise<void>

    Collects a payment of the given reserved payment.

    confirmPayment: <M extends PaymentMethod>(
        payment: PaymentForMethod<Methods, M, P>,
    ) => void | Promise<void>

    Confirms the given payment.

    confirmPaymentReservation: <M extends PaymentMethod>(
        payment: PaymentReservationForMethod<Methods, M, P>,
    ) => void | Promise<void>

    Confirms a payment reservations. This just reserves/freezes the funds, it does NOT move any money yet.

    refundPayment: <M extends PaymentMethod>(
        payment: PaymentForMethod<Methods, M, P>,
    ) => void | Promise<void>

    Refunds the given payment.

    startPayment: <M extends PaymentMethod>(
        method: M,
        data: ValidatedPaymentDataForMethod<Methods, M, P>,
    ) =>
        | PaymentForMethod<Methods, M, P>
        | Promise<PaymentForMethod<Methods, M, P>>

    Starts a payment with the given method and data.

    startPaymentReservation: <M extends PaymentMethod>(
        method: M,
        data: ValidatedPaymentDataForMethod<Methods, M, P>,
    ) =>
        | PaymentReservationForMethod<Methods, M, P>
        | Promise<PaymentReservationForMethod<Methods, M, P>>

    Starts a payment reservation.

    validatePaymentData: <M extends PaymentMethod>(
        method: M,
        data: PaymentDataForMethod<Methods, M, P>,
    ) =>
        | ValidatedPaymentDataForMethod<Methods, M, P>
        | Promise<ValidatedPaymentDataForMethod<Methods, M, P>>

    Validates the given data of the given payment method.