import { PaymentRequest,BuildPayload } from './PaymentRequest'; export class CreateVirtualAccountRequest extends PaymentRequest { virtualAccountName?: string; identityType?: string; licenseNumber?: string; email?: string; customerName?: string; constructor( paymentRequest: PaymentRequest, virtualAccountName?: string, identityType?: string, licenseNumber?: string, email?: string, customerName?: string, ) { super(paymentRequest.requestTime, paymentRequest.version, paymentRequest.nonceStr); this.virtualAccountName = virtualAccountName; this.identityType = identityType; this.licenseNumber = licenseNumber; this.email = email; this.customerName = customerName; } public toJSON(): object { return { requestTime: this.requestTime, version: this.version, nonceStr: this.nonceStr, virtualAccountName: this.virtualAccountName, identityType: this.identityType, licenseNumber: this.licenseNumber, email: this.email, customerName: this.customerName, }; } } export class CreateVirtualAccountRequestBuilder extends BuildPayload { private virtualAccountName?: string; private identityType?: string; private licenseNumber?: string; private email?: string; private customerName?: string; constructor(requestTime: number, version: string, nonceStr: string) { super(requestTime, version, nonceStr); } public setVirtualAccountName(virtualAccountName: string): CreateVirtualAccountRequestBuilder { this.virtualAccountName = virtualAccountName; return this; } public setIdentityType(identityType: string): CreateVirtualAccountRequestBuilder { this.identityType = identityType; return this; } public setLicenseNumber(licenseNumber: string): CreateVirtualAccountRequestBuilder { this.licenseNumber = licenseNumber; return this; } public setEmail(email: string): CreateVirtualAccountRequestBuilder { this.email = email; return this; } public setCustomerName(customerName: string): CreateVirtualAccountRequestBuilder { this.customerName = customerName; return this; } public build(): CreateVirtualAccountRequest { return new CreateVirtualAccountRequest( super.build(), this.virtualAccountName, this.identityType, this.licenseNumber, this.email, this.customerName ); } }