From bcdf656d5dac296a9bd217ec6b4c97e8b48c7416 Mon Sep 17 00:00:00 2001 From: shancheas Date: Thu, 8 Aug 2024 15:34:34 +0700 Subject: [PATCH] fix: midtrans error total != qty * price --- .../midtrans/data/services/midtrans.service.ts | 8 ++++++-- .../usecases/helpers/mapping-transaction.helper.ts | 2 +- .../midtrans/infrastructure/midtrans.controller.ts | 11 +++++++++++ .../usecases/managers/confirm-transaction.manager.ts | 2 ++ 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/modules/configuration/midtrans/data/services/midtrans.service.ts b/src/modules/configuration/midtrans/data/services/midtrans.service.ts index 5a3d658..fbd328c 100644 --- a/src/modules/configuration/midtrans/data/services/midtrans.service.ts +++ b/src/modules/configuration/midtrans/data/services/midtrans.service.ts @@ -1,14 +1,14 @@ import { Injectable } from '@nestjs/common'; import { EventBus } from '@nestjs/cqrs'; import { mappingMidtransTransaction } from '../../domain/usecases/helpers/mapping-transaction.helper'; -const midtransClient = require('midtrans-client'); +import { Snap } from 'midtrans-client'; @Injectable() export class MidtransService { constructor(private eventBus: EventBus) {} get midtransInstance() { - return new midtransClient.Snap({ + return new Snap({ isProduction: false, serverKey: process.env.MIDTRANS_SERVER_KEY, clientKey: process.env.MIDTRANS_CLIENT_KEY, @@ -19,6 +19,10 @@ export class MidtransService { return await this.midtransInstance.transaction.status(orderId); } + async cancelOrder(orderId: string): Promise { + return await this.midtransInstance.transaction.cancel(orderId); + } + async create(body): Promise { const data = mappingMidtransTransaction(body); return await this.midtransInstance.createTransaction(data); diff --git a/src/modules/configuration/midtrans/domain/usecases/helpers/mapping-transaction.helper.ts b/src/modules/configuration/midtrans/domain/usecases/helpers/mapping-transaction.helper.ts index 0e6cb4c..5bcc510 100644 --- a/src/modules/configuration/midtrans/domain/usecases/helpers/mapping-transaction.helper.ts +++ b/src/modules/configuration/midtrans/domain/usecases/helpers/mapping-transaction.helper.ts @@ -2,7 +2,7 @@ export function mappingMidtransTransaction(transaction) { const item_details = transaction.items?.map((item) => { return { quantity: Number(item.qty), - price: Number(item.total_price), + price: Number(item.total_price) / Number(item.qty), name: item.item_name, category: item.item_category_name, }; diff --git a/src/modules/configuration/midtrans/infrastructure/midtrans.controller.ts b/src/modules/configuration/midtrans/infrastructure/midtrans.controller.ts index cd19a56..17df4cf 100644 --- a/src/modules/configuration/midtrans/infrastructure/midtrans.controller.ts +++ b/src/modules/configuration/midtrans/infrastructure/midtrans.controller.ts @@ -34,6 +34,17 @@ export class MidtransController { } } + @Get(':id/cancel') + async cancel(@Param('id') id: string) { + try { + const data = await this.dataService.cancelOrder(id); + return data; + } catch (error) { + console.log(error.message); + throw new Error('Gagal update status transaksi'); + } + } + @Post('callback') async callback(@Body() callback: MidtransDto) { const data = await this.dataService.getStatus(callback?.order_id); diff --git a/src/modules/transaction/transaction/domain/usecases/managers/confirm-transaction.manager.ts b/src/modules/transaction/transaction/domain/usecases/managers/confirm-transaction.manager.ts index 2a8bc73..f122f0e 100644 --- a/src/modules/transaction/transaction/domain/usecases/managers/confirm-transaction.manager.ts +++ b/src/modules/transaction/transaction/domain/usecases/managers/confirm-transaction.manager.ts @@ -14,6 +14,7 @@ import { TransactionChangeStatusEvent } from '../../entities/event/transaction-c import { STATUS } from 'src/core/strings/constants/base.constants'; import { generateInvoiceCodeHelper } from './helpers/generate-invoice-code.helper'; import { TransactionPaymentType } from '../../../constants'; +import { apm } from 'src/core/apm'; @Injectable() export class ConfirmTransactionManager extends BaseUpdateStatusManager { @@ -47,6 +48,7 @@ export class ConfirmTransactionManager extends BaseUpdateStatusManager