import { Injectable } from '@nestjs/common'; import { EventBus } from '@nestjs/cqrs'; import { mappingMidtransTransaction } from '../../domain/usecases/helpers/mapping-transaction.helper'; import { Snap } from 'midtrans-client'; import { MidtransStatus } from '../../domain/entities/midtrans-callback.event'; @Injectable() export class MidtransService { constructor(private eventBus: EventBus) {} get midtransInstance() { return new Snap({ isProduction: false, serverKey: process.env.MIDTRANS_SERVER_KEY, clientKey: process.env.MIDTRANS_CLIENT_KEY, }); } async getStatus(orderId: string): Promise { return await this.midtransInstance.transaction.status(orderId); } async changeStatus(orderId: string, action: MidtransStatus): Promise { return await this.midtransInstance.transaction[action](orderId); } async create(body): Promise { const data = mappingMidtransTransaction(body); return await this.midtransInstance.createTransaction(data); } }