feat: add change status midtrans
parent
e9c819987e
commit
f5425ccfb1
|
@ -2,6 +2,7 @@ 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 {
|
||||
|
@ -19,8 +20,8 @@ export class MidtransService {
|
|||
return await this.midtransInstance.transaction.status(orderId);
|
||||
}
|
||||
|
||||
async cancelOrder(orderId: string): Promise<any> {
|
||||
return await this.midtransInstance.transaction.cancel(orderId);
|
||||
async changeStatus(orderId: string, action: MidtransStatus): Promise<any> {
|
||||
return await this.midtransInstance.transaction[action](orderId);
|
||||
}
|
||||
|
||||
async create(body): Promise<any> {
|
||||
|
|
|
@ -6,3 +6,10 @@ export interface IEventMidtrans {
|
|||
id: string;
|
||||
data: any;
|
||||
}
|
||||
|
||||
export enum MidtransStatus {
|
||||
approve = 'approve',
|
||||
deny = 'deny',
|
||||
cancel = 'cancel',
|
||||
expire = 'expire',
|
||||
}
|
||||
|
|
|
@ -1,9 +1,21 @@
|
|||
import { Body, Controller, Get, Injectable, Param, Post } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import {
|
||||
Body,
|
||||
Controller,
|
||||
Get,
|
||||
Injectable,
|
||||
Param,
|
||||
Post,
|
||||
Query,
|
||||
UnprocessableEntityException,
|
||||
} from '@nestjs/common';
|
||||
import { ApiQuery, ApiTags } from '@nestjs/swagger';
|
||||
import { Public } from 'src/core/guards';
|
||||
import { MidtransService } from '../data/services/midtrans.service';
|
||||
import { EventBus } from '@nestjs/cqrs';
|
||||
import { MidtransCallbackEvent } from '../domain/entities/midtrans-callback.event';
|
||||
import {
|
||||
MidtransCallbackEvent,
|
||||
MidtransStatus,
|
||||
} from '../domain/entities/midtrans-callback.event';
|
||||
import { MidtransDto } from './dto/midtrans.dto';
|
||||
|
||||
@ApiTags(`midtrans`)
|
||||
|
@ -34,14 +46,20 @@ export class MidtransController {
|
|||
}
|
||||
}
|
||||
|
||||
@Get(':id/cancel')
|
||||
async cancel(@Param('id') id: string) {
|
||||
@Get(':id/change-status')
|
||||
@ApiQuery({ name: 'status', enum: MidtransStatus })
|
||||
async cancel(
|
||||
@Param('id') id: string,
|
||||
@Query('status') status = MidtransStatus.cancel,
|
||||
) {
|
||||
try {
|
||||
const data = await this.dataService.cancelOrder(id);
|
||||
return data;
|
||||
return await this.dataService.changeStatus(id, status);
|
||||
} catch (error) {
|
||||
console.log(error.message);
|
||||
throw new Error('Gagal update status transaksi');
|
||||
const data =
|
||||
error.ApiResponse?.status_message ??
|
||||
error.message ??
|
||||
'Gagal update status transaksi';
|
||||
throw new UnprocessableEntityException(data);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue