pos-be/src/modules/configuration/midtrans/data/services/midtrans.service.ts

32 lines
1.0 KiB
TypeScript

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<any> {
return await this.midtransInstance.transaction.status(orderId);
}
async changeStatus(orderId: string, action: MidtransStatus): Promise<any> {
return await this.midtransInstance.transaction[action](orderId);
}
async create(body): Promise<any> {
const data = mappingMidtransTransaction(body);
return await this.midtransInstance.createTransaction(data);
}
}