import { EPaymentStatus, IOrder } from "../.."; export interface ICreatePayment { amount: number; currency: string; invoiceNumber: string; orderId: string; orderNo: string; } export interface ICreateRefund { notes?: string; orderId: string; sub: string; } export interface IPaymentResult { paymentId: string; paymentStatus: EPaymentStatus; failureReason?: string; checkoutUrl?: string; allowRetry?: boolean; } export interface IPayment { /** * Create initial payment data from topic order created * @param transaction */ createPayment(transaction: IOrder): Promise; /** * Check if payment data already exists * @param orderId * @returns exists = true, not exists = false */ checkPaymentExist(orderId: string): Promise; /** * Check latest status payment on DB * @param orderId * @returns EPaymentStatus */ checkPaymentStatus?(orderId: string): Promise; /** * Create payment request to payment provider * @param paymentData * @param sub */ createPaymentRequest(paymentData: { [key: string]: any; }, sub: string): Promise; /** * Create payment cancellation request to payment provider * @param orderId */ cancelPaymentRequest?(orderId: string): Promise; /** * Process payment notification from payment provider * @param paymentData */ processNotification(paymentData: { [key: string]: any; }): Promise; /** * Sync payment status with latest status from payment provider * @param orderId * @returns EPaymentStatus */ syncPaymentStatus?(orderId: string): Promise; /** * Create refund payment request to payment provider * @param createRefund */ createRefundPayment(createRefund: ICreateRefund): Promise; }