fix: only check transaction more than 1 day
continuous-integration/drone/tag Build is passing
Details
continuous-integration/drone/tag Build is passing
Details
parent
acf8861823
commit
fe6572a770
|
@ -4,10 +4,23 @@ import { Snap } from 'midtrans-client';
|
||||||
import { MidtransStatus } from '../../domain/entities/midtrans-callback.event';
|
import { MidtransStatus } from '../../domain/entities/midtrans-callback.event';
|
||||||
import { TransactionReadService } from 'src/modules/transaction/transaction/data/services/transaction-read.service';
|
import { TransactionReadService } from 'src/modules/transaction/transaction/data/services/transaction-read.service';
|
||||||
|
|
||||||
|
import * as moment from 'moment';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class MidtransService {
|
export class MidtransService {
|
||||||
constructor(private transaction: TransactionReadService) {}
|
constructor(private transaction: TransactionReadService) {}
|
||||||
|
|
||||||
|
isMoreThan24HoursAgo(dateString) {
|
||||||
|
const date = moment(dateString, 'YYYY-MM-DD', true);
|
||||||
|
if (!date.isValid()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const now = moment();
|
||||||
|
const diffInHours = now.diff(date, 'hours');
|
||||||
|
return diffInHours > 24;
|
||||||
|
}
|
||||||
|
|
||||||
get midtransInstance() {
|
get midtransInstance() {
|
||||||
return new Snap({
|
return new Snap({
|
||||||
isProduction: false,
|
isProduction: false,
|
||||||
|
@ -24,14 +37,17 @@ export class MidtransService {
|
||||||
const pendingIds = await this.transaction.getPendingOrderId();
|
const pendingIds = await this.transaction.getPendingOrderId();
|
||||||
const responses = [];
|
const responses = [];
|
||||||
|
|
||||||
for (const id of pendingIds) {
|
for (const transaction of pendingIds) {
|
||||||
|
const { id, invoice_date } = transaction;
|
||||||
let status;
|
let status;
|
||||||
try {
|
try {
|
||||||
status = await this.getStatus(id);
|
status = await this.getStatus(id);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
status = {
|
status = {
|
||||||
order_id: id,
|
order_id: id,
|
||||||
transaction_status: 'cancel',
|
transaction_status: this.isMoreThan24HoursAgo(invoice_date)
|
||||||
|
? 'cancel'
|
||||||
|
: 'pending',
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
responses.push(status);
|
responses.push(status);
|
||||||
|
|
|
@ -25,9 +25,9 @@ export class TransactionReadService extends BaseReadService<TransactionEntity> {
|
||||||
status: STATUS.PENDING,
|
status: STATUS.PENDING,
|
||||||
payment_type: TransactionPaymentType.MIDTRANS,
|
payment_type: TransactionPaymentType.MIDTRANS,
|
||||||
},
|
},
|
||||||
select: ['id'],
|
select: ['id', 'invoice_date'],
|
||||||
});
|
});
|
||||||
|
|
||||||
return transactions.map(({ id }) => id);
|
return transactions;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue