AddCardRequest.fromModels constructor
AddCardRequest.fromModels({
- required PaymentRequest request,
- required CardData input,
Implementation
factory AddCardRequest.fromModels({
required PaymentRequest request,
required CardData input,
}) {
final order = request.orderDetails.first;
final expiryYear = input.expiryYear.length == 2
? '20${input.expiryYear}'
: input.expiryYear;
final expiry = '${input.expiryMonth}/$expiryYear';
return AddCardRequest(
data: AddCardRequestData(
action: 'AUTH_REVERSAL',
requestClass: 'ECOM',
captureMethod: 'MANUAL',
type: 'CARD',
customerDetails: AddCardCustomerDetails(
mCustomerId: request.customerDetails.mCustomerId,
name: request.customerDetails.name,
email: input.email ?? request.customerDetails.email,
mobile: input.mobile ?? request.customerDetails.mobile,
// API expects digits only (no leading "+").
code: (input.countryCode ?? request.customerDetails.code)
.replaceAll('+', '')
.trim(),
),
billingDetails: AddCardBillingDetails(
addressLine1: request.billingDetails.addressLine1,
addressLine2: request.billingDetails.addressLine2,
city: request.billingDetails.city,
province: request.billingDetails.province,
country: request.billingDetails.country,
pin: request.billingDetails.pin,
),
orderDetails: AddCardOrderDetails(
mOrderId: order.mOrderId,
currency: order.currency,
description: order.description,
amount: order.amount,
),
cardDetails: AddCardCardDetails(
paymentToken: _nonEmptyPaymentToken(input.paymentToken),
cardHolderName: input.cardholderName,
cardNumber: input.cardNumber ?? '',
cvv: input.cvv,
expiry: expiry,
),
shippingDetails: AddCardShippingDetails(
shippingName: request.shippingDetails.shippingName,
shippingEmail: request.shippingDetails.shippingEmail,
shippingCode: request.shippingDetails.shippingCode,
shippingMobile: request.shippingDetails.shippingMobile,
addressLine1: request.shippingDetails.addressLine1,
addressLine2: request.shippingDetails.addressLine2,
city: request.shippingDetails.city,
province: request.shippingDetails.province,
country: request.shippingDetails.country,
pin: request.shippingDetails.pin,
shippingCurrency: request.shippingDetails.shippingCurrency,
shippingAmount: request.shippingDetails.shippingAmount,
),
parameters: payOrcNormalizedFiveSlots(request.parameters),
customData: payOrcNormalizedFiveSlots(request.customData),
urls: request.urls != null && request.urls!.webhookUrl.trim().isNotEmpty
? {'webhook_url': request.urls!.webhookUrl.trim()}
: null,
),
);
}