import { PayWithCodeService } from '../Services/PayWithCodeService'; import { PayOutPaymentRequestBuilder } from '../RequestDTOs/PayOutPaymentRequest'; import { QueryOrderResultBuilder } from '../RequestDTOs/QueryOrderResultRequest'; import { ErrorResponse } from '../ResponseDTOs/ErrorResponse'; import { PayInCreateOrderResponse } from '../ResponseDTOs/PayInCreateOrderResponseOld'; import { PayOutService } from '../Services/PayOutService'; import { BuildPayload } from '../RequestDTOs/PaymentRequest'; export class PayOutServiceManager { private payOutService: PayOutService; constructor( private appId: string, private countryCode: string, privateKey: string, isTest: boolean ) { this.payOutService = new PayOutService( appId, countryCode, privateKey, isTest ); } async createOrder(createOrderRequestBuilder: PayOutPaymentRequestBuilder) { try { // Create order status const payOutResponse = await this.payOutService.createOrder(createOrderRequestBuilder); console.log("OrderResponse Manager: ", payOutResponse); return payOutResponse; } catch (error) { console.error('Error creating order:', error); } } async fetchOrderStatus(builder: QueryOrderResultBuilder) { try { const fetchOrderStatusResponse = await this.payOutService.fetchOrderStatus(builder); console.log('fetchOrderStatus Response:', fetchOrderStatusResponse); return fetchOrderStatusResponse; } catch (error) { console.error('Error creating order:', error); } } async queryMerchantBalance(builder: BuildPayload) { try { // Query Merchant Balance const queryMerchantBalanceResp = await this.payOutService.queryMerchantBalance2(builder); console.log("fetchOrderStatusResponseCode: ", queryMerchantBalanceResp); return queryMerchantBalanceResp; // Return the original response if needed } catch (error) { console.error('Error fetching order status:', error); throw error; // Rethrow the error to propagate it } } async queryBankList(builder: BuildPayload) { try { const queryBankListResponse = await this.payOutService.queryBankList(builder); console.log('Query Bank List Response:', queryBankListResponse); return queryBankListResponse; } catch (error) { console.error('Error creating order:', error); } } async queryBankAccount(builder: BuildPayload) { try { const queryBankAccountResponse = await this.payOutService.queryBankAccount(builder); console.log('Query Bank List Response:', queryBankAccountResponse); return queryBankAccountResponse; } catch (error) { console.error('Error creating order:', error); } } async queryPalmPayAccount(builder: BuildPayload) { try { const queryBankAccountResponse = await this.payOutService.queryPalmPayAccount(builder); console.log('queryPalmPayAccount Response:', queryBankAccountResponse); return queryBankAccountResponse; } catch (error) { console.error('Error creating order:', error); } } }