mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-29 16:28:12 +00:00
57 lines
2.2 KiB
TypeScript
57 lines
2.2 KiB
TypeScript
import { IsString, IsEnum, IsOptional } from 'class-validator';
|
|
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
|
import { PaymentIntentStatus } from '@prisma/client';
|
|
|
|
export enum PaymentMethodTypeEnum {
|
|
TELEBIRR = 'TELEBIRR', // Ethiopia
|
|
CBE_BIRR = 'CBE_BIRR', // Ethiopia
|
|
EBIRR = 'EBIRR', // Ethiopia
|
|
WAAFI = 'WAAFI', // Djibouti
|
|
CARD = 'CARD', // International
|
|
WALLET = 'WALLET' // Internal
|
|
}
|
|
|
|
export class InitiatePaymentDto {
|
|
@ApiProperty({ example: 'booking-uuid' }) @IsString() bookingId: string;
|
|
@ApiProperty({
|
|
enum: PaymentMethodTypeEnum,
|
|
description: 'Payment method: TELEBIRR/CBE_BIRR/EBIRR (Ethiopia), WAAFI (Djibouti), CARD (International), WALLET (Internal)',
|
|
example: 'TELEBIRR'
|
|
}) @IsEnum(PaymentMethodTypeEnum) method: PaymentMethodTypeEnum;
|
|
@ApiPropertyOptional({ description: 'Saved payment method ID (optional)' }) @IsOptional() @IsString() paymentMethodId?: string;
|
|
}
|
|
|
|
export class RefundDto {
|
|
@ApiProperty() @IsString() bookingId: string;
|
|
@ApiPropertyOptional() @IsOptional() @IsString() reason?: string;
|
|
}
|
|
|
|
export class AddPaymentMethodDto {
|
|
@ApiProperty() @IsString() userId: string;
|
|
@ApiProperty({ enum: PaymentMethodTypeEnum }) @IsEnum(PaymentMethodTypeEnum) type: PaymentMethodTypeEnum;
|
|
@ApiProperty() @IsString() displayName: string;
|
|
@ApiPropertyOptional() @IsOptional() @IsString() maskedHint?: string;
|
|
}
|
|
|
|
export class ClientActionDto {
|
|
@ApiProperty({ enum: ['REDIRECT'] }) type: 'REDIRECT';
|
|
@ApiProperty() url: string;
|
|
}
|
|
|
|
export class InitiateResponseDto {
|
|
@ApiProperty() intentId: string;
|
|
@ApiProperty({ enum: PaymentIntentStatus }) status: PaymentIntentStatus;
|
|
@ApiPropertyOptional({ type: ClientActionDto }) clientAction?: ClientActionDto;
|
|
@ApiPropertyOptional() merchantOrderId?: string;
|
|
}
|
|
|
|
export class IntentStatusDto {
|
|
@ApiProperty() intentId: string;
|
|
@ApiProperty({ enum: PaymentIntentStatus }) status: PaymentIntentStatus;
|
|
@ApiPropertyOptional({ type: ClientActionDto }) clientAction?: ClientActionDto;
|
|
@ApiPropertyOptional() merchantOrderId?: string;
|
|
@ApiPropertyOptional() paidAt?: string;
|
|
@ApiPropertyOptional() failureCode?: string;
|
|
@ApiPropertyOptional() failureMessage?: string;
|
|
}
|