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