mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-11-26 08:34:55 +00:00
159 lines
3.3 KiB
TypeScript
159 lines
3.3 KiB
TypeScript
import { ApiProperty } from '@nestjs/swagger';
|
|
import { Expose, Type } from 'class-transformer';
|
|
import { IsNumber, IsString, Min, ValidateNested } from 'class-validator';
|
|
|
|
export class CardAcceptorLocationDto {
|
|
@Expose()
|
|
@IsString()
|
|
@ApiProperty()
|
|
merchantId!: string;
|
|
|
|
@Expose()
|
|
@IsString()
|
|
@ApiProperty()
|
|
merchantName!: string;
|
|
|
|
@Expose()
|
|
@IsString()
|
|
@ApiProperty()
|
|
merchantCountry!: string;
|
|
|
|
@Expose()
|
|
@IsString()
|
|
@ApiProperty()
|
|
merchantCity!: string;
|
|
|
|
@Expose()
|
|
@IsString()
|
|
@ApiProperty()
|
|
mcc!: string;
|
|
}
|
|
|
|
export class CardTransactionWebhookRequest {
|
|
@Expose({ name: 'InstId' })
|
|
@IsString()
|
|
@ApiProperty({ name: 'InstId', example: '1100' })
|
|
instId!: string;
|
|
|
|
@Expose()
|
|
@IsString()
|
|
@ApiProperty({ example: '30829' })
|
|
cardId!: string;
|
|
|
|
@Expose()
|
|
@IsString()
|
|
@ApiProperty({ example: '1234567890123456' })
|
|
transactionId!: string;
|
|
|
|
@Expose()
|
|
@IsString()
|
|
@ApiProperty({ example: '277012*****3456' })
|
|
cardMaskedNumber!: string;
|
|
|
|
@Expose()
|
|
@IsString()
|
|
@ApiProperty({ example: '1234567890123456' })
|
|
accountNumber!: string;
|
|
|
|
@Expose({ name: 'Date' })
|
|
@IsString()
|
|
@ApiProperty({ name: 'Date', example: '20241112' })
|
|
date!: string;
|
|
|
|
@Expose({ name: 'Time' })
|
|
@IsString()
|
|
@ApiProperty({ name: 'Time', example: '125250' })
|
|
time!: string;
|
|
|
|
@Expose()
|
|
@Type(() => Number)
|
|
@IsNumber()
|
|
@ApiProperty({ example: '132' })
|
|
otb!: number;
|
|
|
|
@Expose()
|
|
@IsString()
|
|
@ApiProperty({ example: '0' })
|
|
transactionCode!: string;
|
|
|
|
@Expose()
|
|
@IsString()
|
|
@ApiProperty({ example: '1' })
|
|
messageClass!: string;
|
|
|
|
@Expose({ name: 'RRN' })
|
|
@IsString()
|
|
@ApiProperty({ name: 'RRN', example: '431712003306' })
|
|
rrn!: string;
|
|
|
|
@Expose()
|
|
@IsString()
|
|
@ApiProperty({ example: '3306' })
|
|
stan!: string;
|
|
|
|
@Expose()
|
|
@ValidateNested()
|
|
@Type(() => CardAcceptorLocationDto)
|
|
@ApiProperty({ type: CardAcceptorLocationDto })
|
|
cardAcceptorLocation!: CardAcceptorLocationDto;
|
|
|
|
@Type(() => Number)
|
|
@IsNumber()
|
|
@Min(0, { message: 'amount must be zero or a positive number' })
|
|
@ApiProperty({ example: '100.5' })
|
|
transactionAmount!: number;
|
|
|
|
@IsString()
|
|
@ApiProperty({ example: '682' })
|
|
transactionCurrency!: string;
|
|
|
|
@Type(() => Number)
|
|
@IsNumber()
|
|
@Min(0, { message: 'amount must be zero or a positive number' })
|
|
@ApiProperty({ example: '100.5' })
|
|
billingAmount!: number;
|
|
|
|
@IsString()
|
|
@ApiProperty({ example: '682' })
|
|
billingCurrency!: string;
|
|
|
|
@Type(() => Number)
|
|
@IsNumber()
|
|
@Min(0, { message: 'amount must be zero or a positive number' })
|
|
@ApiProperty({ example: '100.5' })
|
|
settlementAmount!: number;
|
|
|
|
@IsString()
|
|
@ApiProperty({ example: '682' })
|
|
settlementCurrency!: string;
|
|
|
|
@Expose()
|
|
@Type(() => Number)
|
|
@IsNumber()
|
|
@Min(0, { message: 'amount must be zero or a positive number' })
|
|
@ApiProperty({ example: '20' })
|
|
fees!: number;
|
|
|
|
@Expose()
|
|
@Type(() => Number)
|
|
@IsNumber()
|
|
@Min(0, { message: 'amount must be zero or a positive number' })
|
|
@ApiProperty({ example: '4.5' })
|
|
vatOnFees!: number;
|
|
|
|
@Expose()
|
|
@IsString()
|
|
@ApiProperty({ example: '9' })
|
|
posEntryMode!: string;
|
|
|
|
@Expose()
|
|
@IsString()
|
|
@ApiProperty({ example: '036657' })
|
|
authIdResponse!: string;
|
|
|
|
@Expose({ name: 'POSCDIM' })
|
|
@IsString()
|
|
@ApiProperty({ name: 'POSCDIM', example: '9' })
|
|
posCdim!: string;
|
|
}
|