PaySecure Pinless Web Services 2023:07:03:07

<back to all web services

WICReturnRequest

The following routes are available for this service:
POST/WICReturn
import 'package:servicestack/servicestack.dart';

// @DataContract
class InOutTimes implements IConvertible
{
    InOutTimes();
    InOutTimes.fromJson(Map<String, dynamic> json) : super();
    fromMap(Map<String, dynamic> json) {
        return this;
    }

    Map<String, dynamic> toJson() => {};
    getTypeName() => "InOutTimes";
    TypeContext? context = _ctx;
}

// @DataContract
class RequestTimestamps implements IConvertible
{
    // @DataMember(EmitDefaultValue=false)
    InOutTimes? AppLayer;

    // @DataMember(EmitDefaultValue=false)
    InOutTimes? ParentLookup;

    // @DataMember(EmitDefaultValue=false)
    InOutTimes? RetryLookup;

    // @DataMember(EmitDefaultValue=false)
    InOutTimes? GetCardData;

    // @DataMember(EmitDefaultValue=false)
    InOutTimes? CardTokenize;

    // @DataMember(EmitDefaultValue=false)
    InOutTimes? CardEncrypt;

    // @DataMember(EmitDefaultValue=false)
    InOutTimes? DBInsert;

    // @DataMember(EmitDefaultValue=false)
    InOutTimes? BackendProcess;

    // @DataMember(EmitDefaultValue=false)
    InOutTimes? DBUpdate;

    // @DataMember(EmitDefaultValue=false)
    InOutTimes? ParentUpdate;

    // @DataMember(EmitDefaultValue=false)
    InOutTimes? Network;

    RequestTimestamps({this.AppLayer,this.ParentLookup,this.RetryLookup,this.GetCardData,this.CardTokenize,this.CardEncrypt,this.DBInsert,this.BackendProcess,this.DBUpdate,this.ParentUpdate,this.Network});
    RequestTimestamps.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        AppLayer = JsonConverters.fromJson(json['AppLayer'],'InOutTimes',context!);
        ParentLookup = JsonConverters.fromJson(json['ParentLookup'],'InOutTimes',context!);
        RetryLookup = JsonConverters.fromJson(json['RetryLookup'],'InOutTimes',context!);
        GetCardData = JsonConverters.fromJson(json['GetCardData'],'InOutTimes',context!);
        CardTokenize = JsonConverters.fromJson(json['CardTokenize'],'InOutTimes',context!);
        CardEncrypt = JsonConverters.fromJson(json['CardEncrypt'],'InOutTimes',context!);
        DBInsert = JsonConverters.fromJson(json['DBInsert'],'InOutTimes',context!);
        BackendProcess = JsonConverters.fromJson(json['BackendProcess'],'InOutTimes',context!);
        DBUpdate = JsonConverters.fromJson(json['DBUpdate'],'InOutTimes',context!);
        ParentUpdate = JsonConverters.fromJson(json['ParentUpdate'],'InOutTimes',context!);
        Network = JsonConverters.fromJson(json['Network'],'InOutTimes',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'AppLayer': JsonConverters.toJson(AppLayer,'InOutTimes',context!),
        'ParentLookup': JsonConverters.toJson(ParentLookup,'InOutTimes',context!),
        'RetryLookup': JsonConverters.toJson(RetryLookup,'InOutTimes',context!),
        'GetCardData': JsonConverters.toJson(GetCardData,'InOutTimes',context!),
        'CardTokenize': JsonConverters.toJson(CardTokenize,'InOutTimes',context!),
        'CardEncrypt': JsonConverters.toJson(CardEncrypt,'InOutTimes',context!),
        'DBInsert': JsonConverters.toJson(DBInsert,'InOutTimes',context!),
        'BackendProcess': JsonConverters.toJson(BackendProcess,'InOutTimes',context!),
        'DBUpdate': JsonConverters.toJson(DBUpdate,'InOutTimes',context!),
        'ParentUpdate': JsonConverters.toJson(ParentUpdate,'InOutTimes',context!),
        'Network': JsonConverters.toJson(Network,'InOutTimes',context!)
    };

    getTypeName() => "RequestTimestamps";
    TypeContext? context = _ctx;
}

// @DataContract
class PaysecureResponseInternal implements IConvertible
{
    // @DataMember(EmitDefaultValue=false)
    RequestTimestamps? Timestamps;

    PaysecureResponseInternal({this.Timestamps});
    PaysecureResponseInternal.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Timestamps = JsonConverters.fromJson(json['Timestamps'],'RequestTimestamps',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Timestamps': JsonConverters.toJson(Timestamps,'RequestTimestamps',context!)
    };

    getTypeName() => "PaysecureResponseInternal";
    TypeContext? context = _ctx;
}

enum CardInfoType
{
    CardNumber,
    Token,
    Track,
    EMV,
    Encrypted,
    DPAN,
    ApplePay,
    GooglePay,
    SamsungPay,
    CPToken,
    EncryptedEnhanced,
    EncryptedJWE,
}

class CardAccountUpdaterDescriptor implements IConvertible
{
    CardInfoType? CardDataType;
    String? CardNumberInfo;
    String? ExpiryDate;
    String? Status;
    String? ErrorCode;
    String? CardToken;

    CardAccountUpdaterDescriptor({this.CardDataType,this.CardNumberInfo,this.ExpiryDate,this.Status,this.ErrorCode,this.CardToken});
    CardAccountUpdaterDescriptor.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        CardDataType = JsonConverters.fromJson(json['CardDataType'],'CardInfoType',context!);
        CardNumberInfo = json['CardNumberInfo'];
        ExpiryDate = json['ExpiryDate'];
        Status = json['Status'];
        ErrorCode = json['ErrorCode'];
        CardToken = json['CardToken'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'CardDataType': JsonConverters.toJson(CardDataType,'CardInfoType',context!),
        'CardNumberInfo': CardNumberInfo,
        'ExpiryDate': ExpiryDate,
        'Status': Status,
        'ErrorCode': ErrorCode,
        'CardToken': CardToken
    };

    getTypeName() => "CardAccountUpdaterDescriptor";
    TypeContext? context = _ctx;
}

// @DataContract
class ExtendedResponse implements IConvertible
{
    // @DataMember(EmitDefaultValue=false)
    CardAccountUpdaterDescriptor? CardAccountUpdater;

    // @DataMember(EmitDefaultValue=false)
    String? ProductId;

    // @DataMember(EmitDefaultValue=false)
    String? NetworkResponseCode;

    // @DataMember(EmitDefaultValue=false)
    String? NetworkTransactionId;

    // @DataMember(EmitDefaultValue=false)
    String? CHEmailAddrResult;

    ExtendedResponse({this.CardAccountUpdater,this.ProductId,this.NetworkResponseCode,this.NetworkTransactionId,this.CHEmailAddrResult});
    ExtendedResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        CardAccountUpdater = JsonConverters.fromJson(json['CardAccountUpdater'],'CardAccountUpdaterDescriptor',context!);
        ProductId = json['ProductId'];
        NetworkResponseCode = json['NetworkResponseCode'];
        NetworkTransactionId = json['NetworkTransactionId'];
        CHEmailAddrResult = json['CHEmailAddrResult'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'CardAccountUpdater': JsonConverters.toJson(CardAccountUpdater,'CardAccountUpdaterDescriptor',context!),
        'ProductId': ProductId,
        'NetworkResponseCode': NetworkResponseCode,
        'NetworkTransactionId': NetworkTransactionId,
        'CHEmailAddrResult': CHEmailAddrResult
    };

    getTypeName() => "ExtendedResponse";
    TypeContext? context = _ctx;
}

// @DataContract
class PaysecureVersion extends PaysecureResponseInternal implements IConvertible
{
    // @DataMember(EmitDefaultValue=false)
    String? LocalDateTime;

    // @DataMember(EmitDefaultValue=false)
    String? Token;

    // @DataMember(EmitDefaultValue=false)
    ExtendedResponse? ExtendedData;

    PaysecureVersion({this.LocalDateTime,this.Token,this.ExtendedData});
    PaysecureVersion.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        LocalDateTime = json['LocalDateTime'];
        Token = json['Token'];
        ExtendedData = JsonConverters.fromJson(json['ExtendedData'],'ExtendedResponse',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'LocalDateTime': LocalDateTime,
        'Token': Token,
        'ExtendedData': JsonConverters.toJson(ExtendedData,'ExtendedResponse',context!)
    });

    getTypeName() => "PaysecureVersion";
    TypeContext? context = _ctx;
}

class WICBalance implements IConvertible
{
    String? WICCategory;
    String? WICSubcategory;
    int? WICQuantity;

    WICBalance({this.WICCategory,this.WICSubcategory,this.WICQuantity});
    WICBalance.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        WICCategory = json['WICCategory'];
        WICSubcategory = json['WICSubcategory'];
        WICQuantity = json['WICQuantity'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'WICCategory': WICCategory,
        'WICSubcategory': WICSubcategory,
        'WICQuantity': WICQuantity
    };

    getTypeName() => "WICBalance";
    TypeContext? context = _ctx;
}

enum WICProductCodeInd
{
    PLU,
    UPC,
}

enum WICActionCode
{
    Approved,
    CategoryNotPrescribed,
    SubcategoryNotPrescribed,
    InsufficientUnits,
    ProduceCodeNotSubscribed,
    ApprovedLowerPrice,
}

class WICProduct implements IConvertible
{
    WICProductCodeInd? ProductCodeInd;
    String? ProductCode;
    int? ItemPrice;
    int? ItemQuantity;
    WICActionCode? ActionCode;
    int? OriginalItemPrice;
    int? OriginalItemQuantity;

    WICProduct({this.ProductCodeInd,this.ProductCode,this.ItemPrice,this.ItemQuantity,this.ActionCode,this.OriginalItemPrice,this.OriginalItemQuantity});
    WICProduct.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ProductCodeInd = JsonConverters.fromJson(json['ProductCodeInd'],'WICProductCodeInd',context!);
        ProductCode = json['ProductCode'];
        ItemPrice = json['ItemPrice'];
        ItemQuantity = json['ItemQuantity'];
        ActionCode = JsonConverters.fromJson(json['ActionCode'],'WICActionCode',context!);
        OriginalItemPrice = json['OriginalItemPrice'];
        OriginalItemQuantity = json['OriginalItemQuantity'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ProductCodeInd': JsonConverters.toJson(ProductCodeInd,'WICProductCodeInd',context!),
        'ProductCode': ProductCode,
        'ItemPrice': ItemPrice,
        'ItemQuantity': ItemQuantity,
        'ActionCode': JsonConverters.toJson(ActionCode,'WICActionCode',context!),
        'OriginalItemPrice': OriginalItemPrice,
        'OriginalItemQuantity': OriginalItemQuantity
    };

    getTypeName() => "WICProduct";
    TypeContext? context = _ctx;
}

// @DataContract
class WICReturn extends PaysecureVersion implements IConvertible
{
    // @DataMember
    String? TranId;

    // @DataMember
    String? ApprovalCode;

    // @DataMember
    String? ResponseCode;

    // @DataMember
    int? ApprovedAmount;

    // @DataMember
    int? DiscountAmount;

    // @DataMember
    String? Network;

    // @DataMember
    String? EarliestBenefitExpirationDate;

    // @DataMember
    List<WICBalance>? WICBalances;

    // @DataMember
    List<WICProduct>? WICProducts;

    // @DataMember
    String? ErrorMessage;

    // @DataMember
    String? ErrorCode;

    WICReturn({this.TranId,this.ApprovalCode,this.ResponseCode,this.ApprovedAmount,this.DiscountAmount,this.Network,this.EarliestBenefitExpirationDate,this.WICBalances,this.WICProducts,this.ErrorMessage,this.ErrorCode});
    WICReturn.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        TranId = json['TranId'];
        ApprovalCode = json['ApprovalCode'];
        ResponseCode = json['ResponseCode'];
        ApprovedAmount = json['ApprovedAmount'];
        DiscountAmount = json['DiscountAmount'];
        Network = json['Network'];
        EarliestBenefitExpirationDate = json['EarliestBenefitExpirationDate'];
        WICBalances = JsonConverters.fromJson(json['WICBalances'],'List<WICBalance>',context!);
        WICProducts = JsonConverters.fromJson(json['WICProducts'],'List<WICProduct>',context!);
        ErrorMessage = json['ErrorMessage'];
        ErrorCode = json['ErrorCode'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'TranId': TranId,
        'ApprovalCode': ApprovalCode,
        'ResponseCode': ResponseCode,
        'ApprovedAmount': ApprovedAmount,
        'DiscountAmount': DiscountAmount,
        'Network': Network,
        'EarliestBenefitExpirationDate': EarliestBenefitExpirationDate,
        'WICBalances': JsonConverters.toJson(WICBalances,'List<WICBalance>',context!),
        'WICProducts': JsonConverters.toJson(WICProducts,'List<WICProduct>',context!),
        'ErrorMessage': ErrorMessage,
        'ErrorCode': ErrorCode
    });

    getTypeName() => "WICReturn";
    TypeContext? context = _ctx;
}

class RequestorCredentials implements IConvertible
{
    // @Required()
    String? MerchantId;

    // @Required()
    String? UserName;

    // @Required()
    String? Password;

    // @Required()
    String? Version;

    RequestorCredentials({this.MerchantId,this.UserName,this.Password,this.Version});
    RequestorCredentials.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        MerchantId = json['MerchantId'];
        UserName = json['UserName'];
        Password = json['Password'];
        Version = json['Version'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'MerchantId': MerchantId,
        'UserName': UserName,
        'Password': Password,
        'Version': Version
    };

    getTypeName() => "RequestorCredentials";
    TypeContext? context = _ctx;
}

class MerchantDataElements implements IConvertible
{
    int? RefundSettlementTypeDetails;
    bool? SendRecurringPOSEntryModeFeature;
    bool? UseOrgPOSCode;

    MerchantDataElements({this.RefundSettlementTypeDetails,this.SendRecurringPOSEntryModeFeature,this.UseOrgPOSCode});
    MerchantDataElements.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        RefundSettlementTypeDetails = json['RefundSettlementTypeDetails'];
        SendRecurringPOSEntryModeFeature = json['SendRecurringPOSEntryModeFeature'];
        UseOrgPOSCode = json['UseOrgPOSCode'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'RefundSettlementTypeDetails': RefundSettlementTypeDetails,
        'SendRecurringPOSEntryModeFeature': SendRecurringPOSEntryModeFeature,
        'UseOrgPOSCode': UseOrgPOSCode
    };

    getTypeName() => "MerchantDataElements";
    TypeContext? context = _ctx;
}

abstract class MerchantDescriptorBase
{
    MerchantDataElements? DataElements;

    MerchantDescriptorBase({this.DataElements});
    MerchantDescriptorBase.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        DataElements = JsonConverters.fromJson(json['DataElements'],'MerchantDataElements',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'DataElements': JsonConverters.toJson(DataElements,'MerchantDataElements',context!)
    };

    getTypeName() => "MerchantDescriptorBase";
    TypeContext? context = _ctx;
}

class MerchantDescriptor extends MerchantDescriptorBase implements IConvertible
{
    String? Name;
    String? Address;
    String? City;
    String? State;
    String? Zip;
    String? Country;
    String? CustomerServiceNumber;
    String? MCC;
    String? FNSnum;
    String? Email;

    MerchantDescriptor({this.Name,this.Address,this.City,this.State,this.Zip,this.Country,this.CustomerServiceNumber,this.MCC,this.FNSnum,this.Email});
    MerchantDescriptor.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Name = json['Name'];
        Address = json['Address'];
        City = json['City'];
        State = json['State'];
        Zip = json['Zip'];
        Country = json['Country'];
        CustomerServiceNumber = json['CustomerServiceNumber'];
        MCC = json['MCC'];
        FNSnum = json['FNSnum'];
        Email = json['Email'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Name': Name,
        'Address': Address,
        'City': City,
        'State': State,
        'Zip': Zip,
        'Country': Country,
        'CustomerServiceNumber': CustomerServiceNumber,
        'MCC': MCC,
        'FNSnum': FNSnum,
        'Email': Email
    });

    getTypeName() => "MerchantDescriptor";
    TypeContext? context = _ctx;
}

enum FundingSourceType
{
    DepositAccount,
    Credit,
    Debit,
    Prepaid,
}

class SenderInfo implements IConvertible
{
    String? ReferenceNumber;
    String? AccountNumber;
    /**
    * Name Format FirstName{Space}LastName. For Example :- Alvaro Morata
    */
    String? Name;
    String? Address;
    String? City;
    String? State;
    String? Country;
    /**
    * DateOfBirth Format MMDDYYYY. For Example :- 05051960
    */
    String? DateOfBirth;
    String? Zip;
    String? PhoneNumber;
    FundingSourceType? FundingSource;

    SenderInfo({this.ReferenceNumber,this.AccountNumber,this.Name,this.Address,this.City,this.State,this.Country,this.DateOfBirth,this.Zip,this.PhoneNumber,this.FundingSource});
    SenderInfo.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ReferenceNumber = json['ReferenceNumber'];
        AccountNumber = json['AccountNumber'];
        Name = json['Name'];
        Address = json['Address'];
        City = json['City'];
        State = json['State'];
        Country = json['Country'];
        DateOfBirth = json['DateOfBirth'];
        Zip = json['Zip'];
        PhoneNumber = json['PhoneNumber'];
        FundingSource = JsonConverters.fromJson(json['FundingSource'],'FundingSourceType',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ReferenceNumber': ReferenceNumber,
        'AccountNumber': AccountNumber,
        'Name': Name,
        'Address': Address,
        'City': City,
        'State': State,
        'Country': Country,
        'DateOfBirth': DateOfBirth,
        'Zip': Zip,
        'PhoneNumber': PhoneNumber,
        'FundingSource': JsonConverters.toJson(FundingSource,'FundingSourceType',context!)
    };

    getTypeName() => "SenderInfo";
    TypeContext? context = _ctx;
}

enum NetworkName
{
    Default,
    NYCE,
    CU24,
    XCEL,
    STAR,
    PULS,
    SHZM,
    VISA,
    MAST,
    DISC,
    AMEX,
    ALIP,
    UPIN,
    STAC,
    STNE,
    MAES,
    INTL,
}

class ReceiverInfo implements IConvertible
{
    String? ReferenceNumber;
    String? AccountNumber;
    /**
    * Name Format FirstName{Space}LastName. For Example :- Alvaro Morata
    */
    String? Name;
    String? Address;
    String? City;
    String? State;
    String? Country;
    String? Zip;
    String? PhoneNumber;

    ReceiverInfo({this.ReferenceNumber,this.AccountNumber,this.Name,this.Address,this.City,this.State,this.Country,this.Zip,this.PhoneNumber});
    ReceiverInfo.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ReferenceNumber = json['ReferenceNumber'];
        AccountNumber = json['AccountNumber'];
        Name = json['Name'];
        Address = json['Address'];
        City = json['City'];
        State = json['State'];
        Country = json['Country'];
        Zip = json['Zip'];
        PhoneNumber = json['PhoneNumber'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ReferenceNumber': ReferenceNumber,
        'AccountNumber': AccountNumber,
        'Name': Name,
        'Address': Address,
        'City': City,
        'State': State,
        'Country': Country,
        'Zip': Zip,
        'PhoneNumber': PhoneNumber
    };

    getTypeName() => "ReceiverInfo";
    TypeContext? context = _ctx;
}

enum BillPayGroup
{
    Default,
    Single,
    Recurring,
    Installment,
    Deferred,
}

enum DigitalWalletInfo
{
    Default,
    Staged,
    Passthrough,
}

class WalletDescriptor implements IConvertible
{
    String? Type;
    String? EncryptedData;
    String? ApplicationDataHash;
    String? EphemeralPublicKey;
    String? PublicKeyHash;
    String? TransactionId;
    String? Signature;
    String? Version;
    String? ApplicationData;
    String? MerchantIdentifier;
    String? SpecialPayment;
    DigitalWalletInfo? DigitalWalletIndicator;

    WalletDescriptor({this.Type,this.EncryptedData,this.ApplicationDataHash,this.EphemeralPublicKey,this.PublicKeyHash,this.TransactionId,this.Signature,this.Version,this.ApplicationData,this.MerchantIdentifier,this.SpecialPayment,this.DigitalWalletIndicator});
    WalletDescriptor.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Type = json['Type'];
        EncryptedData = json['EncryptedData'];
        ApplicationDataHash = json['ApplicationDataHash'];
        EphemeralPublicKey = json['EphemeralPublicKey'];
        PublicKeyHash = json['PublicKeyHash'];
        TransactionId = json['TransactionId'];
        Signature = json['Signature'];
        Version = json['Version'];
        ApplicationData = json['ApplicationData'];
        MerchantIdentifier = json['MerchantIdentifier'];
        SpecialPayment = json['SpecialPayment'];
        DigitalWalletIndicator = JsonConverters.fromJson(json['DigitalWalletIndicator'],'DigitalWalletInfo',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Type': Type,
        'EncryptedData': EncryptedData,
        'ApplicationDataHash': ApplicationDataHash,
        'EphemeralPublicKey': EphemeralPublicKey,
        'PublicKeyHash': PublicKeyHash,
        'TransactionId': TransactionId,
        'Signature': Signature,
        'Version': Version,
        'ApplicationData': ApplicationData,
        'MerchantIdentifier': MerchantIdentifier,
        'SpecialPayment': SpecialPayment,
        'DigitalWalletIndicator': JsonConverters.toJson(DigitalWalletIndicator,'DigitalWalletInfo',context!)
    };

    getTypeName() => "WalletDescriptor";
    TypeContext? context = _ctx;
}

class SecureDescriptor implements IConvertible
{
    String? CAVV;
    String? SecureTransactionId;

    SecureDescriptor({this.CAVV,this.SecureTransactionId});
    SecureDescriptor.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        CAVV = json['CAVV'];
        SecureTransactionId = json['SecureTransactionId'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'CAVV': CAVV,
        'SecureTransactionId': SecureTransactionId
    };

    getTypeName() => "SecureDescriptor";
    TypeContext? context = _ctx;
}

enum TaxIndicator
{
    Default,
    NoTaxInfoProvided,
    TaxInfoProvided,
    TaxExemptItem,
}

class Level2Descriptor implements IConvertible
{
    TaxIndicator? TaxDetails;
    String? MerchantReferenceNumber;
    String? MerchantTaxId;
    String? OrderNumber;
    int? TaxAmount;
    String? DestinationPostalCode;
    String? ProductDescription;

    Level2Descriptor({this.TaxDetails,this.MerchantReferenceNumber,this.MerchantTaxId,this.OrderNumber,this.TaxAmount,this.DestinationPostalCode,this.ProductDescription});
    Level2Descriptor.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        TaxDetails = JsonConverters.fromJson(json['TaxDetails'],'TaxIndicator',context!);
        MerchantReferenceNumber = json['MerchantReferenceNumber'];
        MerchantTaxId = json['MerchantTaxId'];
        OrderNumber = json['OrderNumber'];
        TaxAmount = json['TaxAmount'];
        DestinationPostalCode = json['DestinationPostalCode'];
        ProductDescription = json['ProductDescription'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'TaxDetails': JsonConverters.toJson(TaxDetails,'TaxIndicator',context!),
        'MerchantReferenceNumber': MerchantReferenceNumber,
        'MerchantTaxId': MerchantTaxId,
        'OrderNumber': OrderNumber,
        'TaxAmount': TaxAmount,
        'DestinationPostalCode': DestinationPostalCode,
        'ProductDescription': ProductDescription
    };

    getTypeName() => "Level2Descriptor";
    TypeContext? context = _ctx;
}

class PaymentFacilitatorDescriptor implements IConvertible
{
    String? PaymentFacilitatorIndicator;
    String? PFPhoneNumber;
    String? SubMerchID;
    String? SellerID;

    PaymentFacilitatorDescriptor({this.PaymentFacilitatorIndicator,this.PFPhoneNumber,this.SubMerchID,this.SellerID});
    PaymentFacilitatorDescriptor.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        PaymentFacilitatorIndicator = json['PaymentFacilitatorIndicator'];
        PFPhoneNumber = json['PFPhoneNumber'];
        SubMerchID = json['SubMerchID'];
        SellerID = json['SellerID'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'PaymentFacilitatorIndicator': PaymentFacilitatorIndicator,
        'PFPhoneNumber': PFPhoneNumber,
        'SubMerchID': SubMerchID,
        'SellerID': SellerID
    };

    getTypeName() => "PaymentFacilitatorDescriptor";
    TypeContext? context = _ctx;
}

enum TokenTypes
{
    Default,
    UCAF,
    DSRP,
    UCAFDSRP,
    VisaVerified,
    DigitalWallet,
    VisaVerifiedDigitalWallet,
}

class TokenDescriptor implements IConvertible
{
    TokenTypes? TokenType;
    String? TokenCryptogramData1;
    String? TokenCryptogramData2;

    TokenDescriptor({this.TokenType,this.TokenCryptogramData1,this.TokenCryptogramData2});
    TokenDescriptor.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        TokenType = JsonConverters.fromJson(json['TokenType'],'TokenTypes',context!);
        TokenCryptogramData1 = json['TokenCryptogramData1'];
        TokenCryptogramData2 = json['TokenCryptogramData2'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'TokenType': JsonConverters.toJson(TokenType,'TokenTypes',context!),
        'TokenCryptogramData1': TokenCryptogramData1,
        'TokenCryptogramData2': TokenCryptogramData2
    };

    getTypeName() => "TokenDescriptor";
    TypeContext? context = _ctx;
}

enum CardonFileInfo
{
    Default,
    Supported,
    NotSupported,
}

enum StoredCredentialIndicatorInfo
{
    Default,
    Initial,
    Subsequent,
}

enum TransactionInitiateInfo
{
    Default,
    Merchant,
    Terminal,
    Customer,
}

enum ScheduleIndicatorInfo
{
    Default,
    Scheduled,
    Unscheduled,
}

class CardonFileIndicatorDescriptor implements IConvertible
{
    CardonFileInfo? CardonFile;
    StoredCredentialIndicatorInfo? StoredCredentialIndicator;
    TransactionInitiateInfo? TransactionInitiate;
    ScheduleIndicatorInfo? ScheduleIndicator;
    String? NetworkTransactionId;

    CardonFileIndicatorDescriptor({this.CardonFile,this.StoredCredentialIndicator,this.TransactionInitiate,this.ScheduleIndicator,this.NetworkTransactionId});
    CardonFileIndicatorDescriptor.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        CardonFile = JsonConverters.fromJson(json['CardonFile'],'CardonFileInfo',context!);
        StoredCredentialIndicator = JsonConverters.fromJson(json['StoredCredentialIndicator'],'StoredCredentialIndicatorInfo',context!);
        TransactionInitiate = JsonConverters.fromJson(json['TransactionInitiate'],'TransactionInitiateInfo',context!);
        ScheduleIndicator = JsonConverters.fromJson(json['ScheduleIndicator'],'ScheduleIndicatorInfo',context!);
        NetworkTransactionId = json['NetworkTransactionId'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'CardonFile': JsonConverters.toJson(CardonFile,'CardonFileInfo',context!),
        'StoredCredentialIndicator': JsonConverters.toJson(StoredCredentialIndicator,'StoredCredentialIndicatorInfo',context!),
        'TransactionInitiate': JsonConverters.toJson(TransactionInitiate,'TransactionInitiateInfo',context!),
        'ScheduleIndicator': JsonConverters.toJson(ScheduleIndicator,'ScheduleIndicatorInfo',context!),
        'NetworkTransactionId': NetworkTransactionId
    };

    getTypeName() => "CardonFileIndicatorDescriptor";
    TypeContext? context = _ctx;
}

enum CardAccountUpdaterInfo
{
    Default,
    Supported,
    NotSupported,
}

enum OrderTypeInfo
{
    Default,
    Standing,
    Subscription,
}

class BillPayGroupIndicator implements IConvertible
{
    String? MITTotalPaymentCount;
    String? MITAmountType;
    String? MITAmount;
    String? MITUniqueID;
    String? MITFrequency;
    String? MITValidationFlag;
    String? MITValidationReference;
    String? MITSequenceIndicator;

    BillPayGroupIndicator({this.MITTotalPaymentCount,this.MITAmountType,this.MITAmount,this.MITUniqueID,this.MITFrequency,this.MITValidationFlag,this.MITValidationReference,this.MITSequenceIndicator});
    BillPayGroupIndicator.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        MITTotalPaymentCount = json['MITTotalPaymentCount'];
        MITAmountType = json['MITAmountType'];
        MITAmount = json['MITAmount'];
        MITUniqueID = json['MITUniqueID'];
        MITFrequency = json['MITFrequency'];
        MITValidationFlag = json['MITValidationFlag'];
        MITValidationReference = json['MITValidationReference'];
        MITSequenceIndicator = json['MITSequenceIndicator'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'MITTotalPaymentCount': MITTotalPaymentCount,
        'MITAmountType': MITAmountType,
        'MITAmount': MITAmount,
        'MITUniqueID': MITUniqueID,
        'MITFrequency': MITFrequency,
        'MITValidationFlag': MITValidationFlag,
        'MITValidationReference': MITValidationReference,
        'MITSequenceIndicator': MITSequenceIndicator
    };

    getTypeName() => "BillPayGroupIndicator";
    TypeContext? context = _ctx;
}

enum ChargeTypeInfo
{
    Default,
    PartialShipment,
    Delayed,
    NoShow,
    Resubmission,
}

enum SAFEligibleFlag
{
    Default,
    True,
    False,
}

// @DataContract
class ExtendedData implements IConvertible
{
    // @DataMember
    String? Track2DataForEMVTransaction;

    // @DataMember
    SenderInfo? SenderInfo;

    // @DataMember
    int? CashbackAmount;

    // @DataMember
    NetworkName? Network;

    // @DataMember
    ReceiverInfo? ReceiverInfo;

    // @DataMember
    BillPayGroup? BillPayGroup;

    // @DataMember
    WalletDescriptor? WalletData;

    // @DataMember
    SecureDescriptor? SecureData;

    // @DataMember
    Level2Descriptor? Level2Data;

    // @DataMember
    PaymentFacilitatorDescriptor? PaymentFacilitatorData;

    // @DataMember
    TokenDescriptor? TokenData;

    // @DataMember
    String? OTPTranId;

    // @DataMember
    int? CurrentShipment;

    // @DataMember
    int? TotalShipments;

    // @DataMember
    bool? IsTokenRequested;

    // @DataMember
    CardonFileIndicatorDescriptor? CardonFileIndicator;

    // @DataMember
    CardAccountUpdaterInfo? CardAccountUpdater;

    // @DataMember
    int? RetryAttemptCount;

    // @DataMember
    int? TotalAuthAmount;

    // @DataMember
    String? SignatureHashVersion;

    // @DataMember
    OrderTypeInfo? OrderTypeDetail;

    // @DataMember
    BillPayGroupIndicator? BillPayGroupIndicator;

    // @DataMember
    ChargeTypeInfo? ChargeTypeDetail;

    // @DataMember
    SAFEligibleFlag? SAFEligible;

    ExtendedData({this.Track2DataForEMVTransaction,this.SenderInfo,this.CashbackAmount,this.Network,this.ReceiverInfo,this.BillPayGroup,this.WalletData,this.SecureData,this.Level2Data,this.PaymentFacilitatorData,this.TokenData,this.OTPTranId,this.CurrentShipment,this.TotalShipments,this.IsTokenRequested,this.CardonFileIndicator,this.CardAccountUpdater,this.RetryAttemptCount,this.TotalAuthAmount,this.SignatureHashVersion,this.OrderTypeDetail,this.BillPayGroupIndicator,this.ChargeTypeDetail,this.SAFEligible});
    ExtendedData.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Track2DataForEMVTransaction = json['Track2DataForEMVTransaction'];
        SenderInfo = JsonConverters.fromJson(json['SenderInfo'],'SenderInfo',context!);
        CashbackAmount = json['CashbackAmount'];
        Network = JsonConverters.fromJson(json['Network'],'NetworkName',context!);
        ReceiverInfo = JsonConverters.fromJson(json['ReceiverInfo'],'ReceiverInfo',context!);
        BillPayGroup = JsonConverters.fromJson(json['BillPayGroup'],'BillPayGroup',context!);
        WalletData = JsonConverters.fromJson(json['WalletData'],'WalletDescriptor',context!);
        SecureData = JsonConverters.fromJson(json['SecureData'],'SecureDescriptor',context!);
        Level2Data = JsonConverters.fromJson(json['Level2Data'],'Level2Descriptor',context!);
        PaymentFacilitatorData = JsonConverters.fromJson(json['PaymentFacilitatorData'],'PaymentFacilitatorDescriptor',context!);
        TokenData = JsonConverters.fromJson(json['TokenData'],'TokenDescriptor',context!);
        OTPTranId = json['OTPTranId'];
        CurrentShipment = json['CurrentShipment'];
        TotalShipments = json['TotalShipments'];
        IsTokenRequested = json['IsTokenRequested'];
        CardonFileIndicator = JsonConverters.fromJson(json['CardonFileIndicator'],'CardonFileIndicatorDescriptor',context!);
        CardAccountUpdater = JsonConverters.fromJson(json['CardAccountUpdater'],'CardAccountUpdaterInfo',context!);
        RetryAttemptCount = json['RetryAttemptCount'];
        TotalAuthAmount = json['TotalAuthAmount'];
        SignatureHashVersion = json['SignatureHashVersion'];
        OrderTypeDetail = JsonConverters.fromJson(json['OrderTypeDetail'],'OrderTypeInfo',context!);
        BillPayGroupIndicator = JsonConverters.fromJson(json['BillPayGroupIndicator'],'BillPayGroupIndicator',context!);
        ChargeTypeDetail = JsonConverters.fromJson(json['ChargeTypeDetail'],'ChargeTypeInfo',context!);
        SAFEligible = JsonConverters.fromJson(json['SAFEligible'],'SAFEligibleFlag',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Track2DataForEMVTransaction': Track2DataForEMVTransaction,
        'SenderInfo': JsonConverters.toJson(SenderInfo,'SenderInfo',context!),
        'CashbackAmount': CashbackAmount,
        'Network': JsonConverters.toJson(Network,'NetworkName',context!),
        'ReceiverInfo': JsonConverters.toJson(ReceiverInfo,'ReceiverInfo',context!),
        'BillPayGroup': JsonConverters.toJson(BillPayGroup,'BillPayGroup',context!),
        'WalletData': JsonConverters.toJson(WalletData,'WalletDescriptor',context!),
        'SecureData': JsonConverters.toJson(SecureData,'SecureDescriptor',context!),
        'Level2Data': JsonConverters.toJson(Level2Data,'Level2Descriptor',context!),
        'PaymentFacilitatorData': JsonConverters.toJson(PaymentFacilitatorData,'PaymentFacilitatorDescriptor',context!),
        'TokenData': JsonConverters.toJson(TokenData,'TokenDescriptor',context!),
        'OTPTranId': OTPTranId,
        'CurrentShipment': CurrentShipment,
        'TotalShipments': TotalShipments,
        'IsTokenRequested': IsTokenRequested,
        'CardonFileIndicator': JsonConverters.toJson(CardonFileIndicator,'CardonFileIndicatorDescriptor',context!),
        'CardAccountUpdater': JsonConverters.toJson(CardAccountUpdater,'CardAccountUpdaterInfo',context!),
        'RetryAttemptCount': RetryAttemptCount,
        'TotalAuthAmount': TotalAuthAmount,
        'SignatureHashVersion': SignatureHashVersion,
        'OrderTypeDetail': JsonConverters.toJson(OrderTypeDetail,'OrderTypeInfo',context!),
        'BillPayGroupIndicator': JsonConverters.toJson(BillPayGroupIndicator,'BillPayGroupIndicator',context!),
        'ChargeTypeDetail': JsonConverters.toJson(ChargeTypeDetail,'ChargeTypeInfo',context!),
        'SAFEligible': JsonConverters.toJson(SAFEligible,'SAFEligibleFlag',context!)
    };

    getTypeName() => "ExtendedData";
    TypeContext? context = _ctx;
}

// @DataContract
class WICReturnRequest implements IConvertible
{
    // @DataMember
    RequestorCredentials? Credentials;

    // @DataMember
    String? TranId;

    // @DataMember
    int? Amount;

    // @DataMember
    int? DiscountAmount;

    // @DataMember
    String? ReferenceKey;

    // @DataMember
    String? CurrencyCode;

    // @DataMember
    MerchantDescriptor? MerchantDetails;

    // @DataMember
    List<WICProduct>? WICProducts;

    // @DataMember
    String? Custom1;

    // @DataMember
    String? Custom2;

    // @DataMember
    String? Custom3;

    // @DataMember
    String? Custom4;

    // @DataMember
    String? Custom5;

    // @DataMember
    String? SignatureHash;

    // @DataMember
    ExtendedData? ExtendedData;

    WICReturnRequest({this.Credentials,this.TranId,this.Amount,this.DiscountAmount,this.ReferenceKey,this.CurrencyCode,this.MerchantDetails,this.WICProducts,this.Custom1,this.Custom2,this.Custom3,this.Custom4,this.Custom5,this.SignatureHash,this.ExtendedData});
    WICReturnRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Credentials = JsonConverters.fromJson(json['Credentials'],'RequestorCredentials',context!);
        TranId = json['TranId'];
        Amount = json['Amount'];
        DiscountAmount = json['DiscountAmount'];
        ReferenceKey = json['ReferenceKey'];
        CurrencyCode = json['CurrencyCode'];
        MerchantDetails = JsonConverters.fromJson(json['MerchantDetails'],'MerchantDescriptor',context!);
        WICProducts = JsonConverters.fromJson(json['WICProducts'],'List<WICProduct>',context!);
        Custom1 = json['Custom1'];
        Custom2 = json['Custom2'];
        Custom3 = json['Custom3'];
        Custom4 = json['Custom4'];
        Custom5 = json['Custom5'];
        SignatureHash = json['SignatureHash'];
        ExtendedData = JsonConverters.fromJson(json['ExtendedData'],'ExtendedData',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Credentials': JsonConverters.toJson(Credentials,'RequestorCredentials',context!),
        'TranId': TranId,
        'Amount': Amount,
        'DiscountAmount': DiscountAmount,
        'ReferenceKey': ReferenceKey,
        'CurrencyCode': CurrencyCode,
        'MerchantDetails': JsonConverters.toJson(MerchantDetails,'MerchantDescriptor',context!),
        'WICProducts': JsonConverters.toJson(WICProducts,'List<WICProduct>',context!),
        'Custom1': Custom1,
        'Custom2': Custom2,
        'Custom3': Custom3,
        'Custom4': Custom4,
        'Custom5': Custom5,
        'SignatureHash': SignatureHash,
        'ExtendedData': JsonConverters.toJson(ExtendedData,'ExtendedData',context!)
    };

    getTypeName() => "WICReturnRequest";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'api.paysecure.acculynk.net', types: <String, TypeInfo> {
    'InOutTimes': TypeInfo(TypeOf.Class, create:() => InOutTimes()),
    'RequestTimestamps': TypeInfo(TypeOf.Class, create:() => RequestTimestamps()),
    'PaysecureResponseInternal': TypeInfo(TypeOf.Class, create:() => PaysecureResponseInternal()),
    'CardInfoType': TypeInfo(TypeOf.Enum, enumValues:CardInfoType.values),
    'CardAccountUpdaterDescriptor': TypeInfo(TypeOf.Class, create:() => CardAccountUpdaterDescriptor()),
    'ExtendedResponse': TypeInfo(TypeOf.Class, create:() => ExtendedResponse()),
    'PaysecureVersion': TypeInfo(TypeOf.Class, create:() => PaysecureVersion()),
    'WICBalance': TypeInfo(TypeOf.Class, create:() => WICBalance()),
    'WICProductCodeInd': TypeInfo(TypeOf.Enum, enumValues:WICProductCodeInd.values),
    'WICActionCode': TypeInfo(TypeOf.Enum, enumValues:WICActionCode.values),
    'WICProduct': TypeInfo(TypeOf.Class, create:() => WICProduct()),
    'WICReturn': TypeInfo(TypeOf.Class, create:() => WICReturn()),
    'List<WICBalance>': TypeInfo(TypeOf.Class, create:() => <WICBalance>[]),
    'List<WICProduct>': TypeInfo(TypeOf.Class, create:() => <WICProduct>[]),
    'RequestorCredentials': TypeInfo(TypeOf.Class, create:() => RequestorCredentials()),
    'MerchantDataElements': TypeInfo(TypeOf.Class, create:() => MerchantDataElements()),
    'MerchantDescriptorBase': TypeInfo(TypeOf.AbstractClass),
    'MerchantDescriptor': TypeInfo(TypeOf.Class, create:() => MerchantDescriptor()),
    'FundingSourceType': TypeInfo(TypeOf.Enum, enumValues:FundingSourceType.values),
    'SenderInfo': TypeInfo(TypeOf.Class, create:() => SenderInfo()),
    'NetworkName': TypeInfo(TypeOf.Enum, enumValues:NetworkName.values),
    'ReceiverInfo': TypeInfo(TypeOf.Class, create:() => ReceiverInfo()),
    'BillPayGroup': TypeInfo(TypeOf.Enum, enumValues:BillPayGroup.values),
    'DigitalWalletInfo': TypeInfo(TypeOf.Enum, enumValues:DigitalWalletInfo.values),
    'WalletDescriptor': TypeInfo(TypeOf.Class, create:() => WalletDescriptor()),
    'SecureDescriptor': TypeInfo(TypeOf.Class, create:() => SecureDescriptor()),
    'TaxIndicator': TypeInfo(TypeOf.Enum, enumValues:TaxIndicator.values),
    'Level2Descriptor': TypeInfo(TypeOf.Class, create:() => Level2Descriptor()),
    'PaymentFacilitatorDescriptor': TypeInfo(TypeOf.Class, create:() => PaymentFacilitatorDescriptor()),
    'TokenTypes': TypeInfo(TypeOf.Enum, enumValues:TokenTypes.values),
    'TokenDescriptor': TypeInfo(TypeOf.Class, create:() => TokenDescriptor()),
    'CardonFileInfo': TypeInfo(TypeOf.Enum, enumValues:CardonFileInfo.values),
    'StoredCredentialIndicatorInfo': TypeInfo(TypeOf.Enum, enumValues:StoredCredentialIndicatorInfo.values),
    'TransactionInitiateInfo': TypeInfo(TypeOf.Enum, enumValues:TransactionInitiateInfo.values),
    'ScheduleIndicatorInfo': TypeInfo(TypeOf.Enum, enumValues:ScheduleIndicatorInfo.values),
    'CardonFileIndicatorDescriptor': TypeInfo(TypeOf.Class, create:() => CardonFileIndicatorDescriptor()),
    'CardAccountUpdaterInfo': TypeInfo(TypeOf.Enum, enumValues:CardAccountUpdaterInfo.values),
    'OrderTypeInfo': TypeInfo(TypeOf.Enum, enumValues:OrderTypeInfo.values),
    'BillPayGroupIndicator': TypeInfo(TypeOf.Class, create:() => BillPayGroupIndicator()),
    'ChargeTypeInfo': TypeInfo(TypeOf.Enum, enumValues:ChargeTypeInfo.values),
    'SAFEligibleFlag': TypeInfo(TypeOf.Enum, enumValues:SAFEligibleFlag.values),
    'ExtendedData': TypeInfo(TypeOf.Class, create:() => ExtendedData()),
    'WICReturnRequest': TypeInfo(TypeOf.Class, create:() => WICReturnRequest()),
});

Dart WICReturnRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml

HTTP + XML

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /WICReturn HTTP/1.1 
Host: api.paysecure.acculynk.net 
Accept: application/xml
Content-Type: application/xml
Content-Length: length

<WICReturnRequest xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.servicestack.net/types">
  <Amount>0</Amount>
  <Credentials>
    <MerchantId>String</MerchantId>
    <Password>String</Password>
    <UserName>String</UserName>
    <Version>String</Version>
  </Credentials>
  <CurrencyCode>String</CurrencyCode>
  <Custom1>String</Custom1>
  <Custom2>String</Custom2>
  <Custom3>String</Custom3>
  <Custom4>String</Custom4>
  <Custom5>String</Custom5>
  <DiscountAmount>0</DiscountAmount>
  <ExtendedData>
    <BillPayGroup>Default</BillPayGroup>
    <BillPayGroupIndicator>
      <MITAmount>String</MITAmount>
      <MITAmountType>String</MITAmountType>
      <MITFrequency>String</MITFrequency>
      <MITSequenceIndicator>String</MITSequenceIndicator>
      <MITTotalPaymentCount>String</MITTotalPaymentCount>
      <MITUniqueID>String</MITUniqueID>
      <MITValidationFlag>String</MITValidationFlag>
      <MITValidationReference>String</MITValidationReference>
    </BillPayGroupIndicator>
    <CardAccountUpdater>Default</CardAccountUpdater>
    <CardonFileIndicator>
      <CardonFile>Default</CardonFile>
      <NetworkTransactionId>String</NetworkTransactionId>
      <ScheduleIndicator>Default</ScheduleIndicator>
      <StoredCredentialIndicator>Default</StoredCredentialIndicator>
      <TransactionInitiate>Default</TransactionInitiate>
    </CardonFileIndicator>
    <CashbackAmount>0</CashbackAmount>
    <ChargeTypeDetail>Default</ChargeTypeDetail>
    <CurrentShipment>0</CurrentShipment>
    <IsTokenRequested>false</IsTokenRequested>
    <Level2Data>
      <DestinationPostalCode>String</DestinationPostalCode>
      <MerchantReferenceNumber>String</MerchantReferenceNumber>
      <MerchantTaxId>String</MerchantTaxId>
      <OrderNumber>String</OrderNumber>
      <ProductDescription>String</ProductDescription>
      <TaxAmount>0</TaxAmount>
      <TaxDetails>Default</TaxDetails>
    </Level2Data>
    <Network>Default</Network>
    <OTPTranId>String</OTPTranId>
    <OrderTypeDetail>Default</OrderTypeDetail>
    <PaymentFacilitatorData>
      <PFPhoneNumber>String</PFPhoneNumber>
      <PaymentFacilitatorIndicator>String</PaymentFacilitatorIndicator>
      <SellerID>String</SellerID>
      <SubMerchID>String</SubMerchID>
    </PaymentFacilitatorData>
    <ReceiverInfo>
      <AccountNumber>String</AccountNumber>
      <Address>String</Address>
      <City>String</City>
      <Country>String</Country>
      <Name>String</Name>
      <PhoneNumber>String</PhoneNumber>
      <ReferenceNumber>String</ReferenceNumber>
      <State>String</State>
      <Zip>String</Zip>
    </ReceiverInfo>
    <RetryAttemptCount>0</RetryAttemptCount>
    <SAFEligible>Default</SAFEligible>
    <SecureData>
      <CAVV>String</CAVV>
      <SecureTransactionId>String</SecureTransactionId>
    </SecureData>
    <SenderInfo>
      <AccountNumber>String</AccountNumber>
      <Address>String</Address>
      <City>String</City>
      <Country>String</Country>
      <DateOfBirth>String</DateOfBirth>
      <FundingSource>DepositAccount</FundingSource>
      <Name>String</Name>
      <PhoneNumber>String</PhoneNumber>
      <ReferenceNumber>String</ReferenceNumber>
      <State>String</State>
      <Zip>String</Zip>
    </SenderInfo>
    <SignatureHashVersion>String</SignatureHashVersion>
    <TokenData>
      <TokenCryptogramData1>String</TokenCryptogramData1>
      <TokenCryptogramData2>String</TokenCryptogramData2>
      <TokenType>Default</TokenType>
    </TokenData>
    <TotalAuthAmount>0</TotalAuthAmount>
    <TotalShipments>0</TotalShipments>
    <Track2DataForEMVTransaction>String</Track2DataForEMVTransaction>
    <WalletData>
      <ApplicationData>String</ApplicationData>
      <ApplicationDataHash>String</ApplicationDataHash>
      <DigitalWalletIndicator>Default</DigitalWalletIndicator>
      <EncryptedData>String</EncryptedData>
      <EphemeralPublicKey>String</EphemeralPublicKey>
      <MerchantIdentifier>String</MerchantIdentifier>
      <PublicKeyHash>String</PublicKeyHash>
      <Signature>String</Signature>
      <SpecialPayment>String</SpecialPayment>
      <TransactionId>String</TransactionId>
      <Type>String</Type>
      <Version>String</Version>
    </WalletData>
  </ExtendedData>
  <MerchantDetails>
    <DataElements>
      <RefundSettlementTypeDetails>0</RefundSettlementTypeDetails>
      <SendRecurringPOSEntryModeFeature>false</SendRecurringPOSEntryModeFeature>
      <UseOrgPOSCode>false</UseOrgPOSCode>
    </DataElements>
    <Address>String</Address>
    <City>String</City>
    <Country>String</Country>
    <CustomerServiceNumber>String</CustomerServiceNumber>
    <Email>String</Email>
    <FNSnum>String</FNSnum>
    <MCC>String</MCC>
    <Name>String</Name>
    <State>String</State>
    <Zip>String</Zip>
  </MerchantDetails>
  <ReferenceKey>String</ReferenceKey>
  <SignatureHash>String</SignatureHash>
  <TranId>String</TranId>
  <WICProducts>
    <WICProduct>
      <ActionCode>Approved</ActionCode>
      <ItemPrice>0</ItemPrice>
      <ItemQuantity>0</ItemQuantity>
      <OriginalItemPrice>0</OriginalItemPrice>
      <OriginalItemQuantity>0</OriginalItemQuantity>
      <ProductCode>String</ProductCode>
      <ProductCodeInd>PLU</ProductCodeInd>
    </WICProduct>
  </WICProducts>
</WICReturnRequest>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<WICReturn xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.servicestack.net/types">
  <Timestamps>
    <AppLayer>
      <InTime>0001-01-01T00:00:00</InTime>
      <OutTime>0001-01-01T00:00:00</OutTime>
    </AppLayer>
    <BackendProcess>
      <InTime>0001-01-01T00:00:00</InTime>
      <OutTime>0001-01-01T00:00:00</OutTime>
    </BackendProcess>
    <CardEncrypt>
      <InTime>0001-01-01T00:00:00</InTime>
      <OutTime>0001-01-01T00:00:00</OutTime>
    </CardEncrypt>
    <CardTokenize>
      <InTime>0001-01-01T00:00:00</InTime>
      <OutTime>0001-01-01T00:00:00</OutTime>
    </CardTokenize>
    <DBInsert>
      <InTime>0001-01-01T00:00:00</InTime>
      <OutTime>0001-01-01T00:00:00</OutTime>
    </DBInsert>
    <DBUpdate>
      <InTime>0001-01-01T00:00:00</InTime>
      <OutTime>0001-01-01T00:00:00</OutTime>
    </DBUpdate>
    <GetCardData>
      <InTime>0001-01-01T00:00:00</InTime>
      <OutTime>0001-01-01T00:00:00</OutTime>
    </GetCardData>
    <Network>
      <InTime>0001-01-01T00:00:00</InTime>
      <OutTime>0001-01-01T00:00:00</OutTime>
    </Network>
    <ParentLookup>
      <InTime>0001-01-01T00:00:00</InTime>
      <OutTime>0001-01-01T00:00:00</OutTime>
    </ParentLookup>
    <ParentUpdate>
      <InTime>0001-01-01T00:00:00</InTime>
      <OutTime>0001-01-01T00:00:00</OutTime>
    </ParentUpdate>
    <RetryLookup>
      <InTime>0001-01-01T00:00:00</InTime>
      <OutTime>0001-01-01T00:00:00</OutTime>
    </RetryLookup>
  </Timestamps>
  <ExtendedData>
    <CHEmailAddrResult>String</CHEmailAddrResult>
    <CardAccountUpdater>
      <CardDataType>CardNumber</CardDataType>
      <CardNumberInfo>String</CardNumberInfo>
      <CardToken>String</CardToken>
      <ErrorCode>String</ErrorCode>
      <ExpiryDate>String</ExpiryDate>
      <Status>String</Status>
    </CardAccountUpdater>
    <NetworkResponseCode>String</NetworkResponseCode>
    <NetworkTransactionId>String</NetworkTransactionId>
    <ProductId>String</ProductId>
  </ExtendedData>
  <LocalDateTime>String</LocalDateTime>
  <Token>String</Token>
  <ApprovalCode>String</ApprovalCode>
  <ApprovedAmount>0</ApprovedAmount>
  <DiscountAmount>0</DiscountAmount>
  <EarliestBenefitExpirationDate>String</EarliestBenefitExpirationDate>
  <ErrorCode>String</ErrorCode>
  <ErrorMessage>String</ErrorMessage>
  <Network>String</Network>
  <ResponseCode>String</ResponseCode>
  <TranId>String</TranId>
  <WICBalances>
    <WICBalance>
      <WICCategory>String</WICCategory>
      <WICQuantity>0</WICQuantity>
      <WICSubcategory>String</WICSubcategory>
    </WICBalance>
  </WICBalances>
  <WICProducts>
    <WICProduct>
      <ActionCode>Approved</ActionCode>
      <ItemPrice>0</ItemPrice>
      <ItemQuantity>0</ItemQuantity>
      <OriginalItemPrice>0</OriginalItemPrice>
      <OriginalItemQuantity>0</OriginalItemQuantity>
      <ProductCode>String</ProductCode>
      <ProductCodeInd>PLU</ProductCodeInd>
    </WICProduct>
  </WICProducts>
</WICReturn>