import { BasePaymentService } from "medusa-interfaces"; import { AbstractPaymentService, TransactionBaseService } from "../interfaces"; import { EntityManager } from "typeorm"; import { PaymentSessionRepository } from "../repositories/payment-session"; import { PaymentRepository } from "../repositories/payment"; import { RefundRepository } from "../repositories/refund"; import { PaymentProviderRepository } from "../repositories/payment-provider"; import { FindConfig, Selector } from "../types/common"; import { Cart, Payment, PaymentProvider, PaymentSession, PaymentSessionStatus, Refund } from "../models"; import { PaymentProviderDataInput } from "../types/payment-collection"; declare type PaymentProviderKey = `pp_${string}` | "systemPaymentProviderService"; declare type InjectedDependencies = { manager: EntityManager; paymentSessionRepository: typeof PaymentSessionRepository; paymentProviderRepository: typeof PaymentProviderRepository; paymentRepository: typeof PaymentRepository; refundRepository: typeof RefundRepository; } & { [key in `${PaymentProviderKey}`]: AbstractPaymentService | typeof BasePaymentService; }; /** * Helps retrieve payment providers */ export default class PaymentProviderService extends TransactionBaseService { protected manager_: EntityManager; protected transactionManager_: EntityManager | undefined; protected readonly container_: InjectedDependencies; protected readonly paymentSessionRepository_: typeof PaymentSessionRepository; protected readonly paymentProviderRepository_: typeof PaymentProviderRepository; protected readonly paymentRepository_: typeof PaymentRepository; protected readonly refundRepository_: typeof RefundRepository; constructor(container: InjectedDependencies); registerInstalledProviders(providerIds: string[]): Promise; list(): Promise; retrievePayment(id: string, relations?: string[]): Promise; listPayments(selector: Selector, config?: FindConfig): Promise; retrieveSession(id: string, relations?: string[]): Promise; /** * Creates a payment session with the given provider. * @param providerId - the id of the provider to create payment with * @param cart - a cart object used to calculate the amount, etc. from * @return the payment session */ createSession(providerId: string, cart: Cart): Promise; createSessionNew(sessionInput: PaymentProviderDataInput): Promise; /** * Refreshes a payment session with the given provider. * This means, that we delete the current one and create a new. * @param paymentSession - the payment session object to * update * @param cart - a cart object used to calculate the amount, etc. from * @return the payment session */ refreshSession(paymentSession: PaymentSession, cart: Cart): Promise; refreshSessionNew(paymentSession: PaymentSession, sessionInput: PaymentProviderDataInput): Promise; /** * Updates an existing payment session. * @param paymentSession - the payment session object to * update * @param cart - the cart object to update for * @return the updated payment session */ updateSession(paymentSession: PaymentSession, cart: Cart): Promise; updateSessionNew(paymentSession: PaymentSession, sessionInput: PaymentProviderDataInput): Promise; deleteSession(paymentSession: PaymentSession): Promise; /** * Finds a provider given an id * @param {string} providerId - the id of the provider to get * @return {PaymentService} the payment provider */ retrieveProvider(providerId: string): TProvider extends AbstractPaymentService ? AbstractPaymentService : typeof BasePaymentService; createPayment(cart: Cart & { payment_session: PaymentSession; }): Promise; createPaymentNew(paymentInput: Omit): Promise; updatePayment(paymentId: string, data: { order_id?: string; swap_id?: string; }): Promise; authorizePayment(paymentSession: PaymentSession, context: Record): Promise; updateSessionData(paymentSession: PaymentSession, data: Record): Promise; cancelPayment(paymentObj: Partial & { id: string; }): Promise; getStatus(payment: Payment): Promise; capturePayment(paymentObj: Partial & { id: string; }): Promise; refundPayment(payObjs: Payment[], amount: number, reason: string, note?: string): Promise; refundFromPayment(payment: Payment, amount: number, reason: string, note?: string): Promise; retrieveRefund(id: string, config?: FindConfig): Promise; } export {};