POST | /WICSale |
---|
namespace Paysecure.ServiceModel
open System
open System.Collections
open System.Collections.Generic
open System.Runtime.Serialization
open ServiceStack
open ServiceStack.DataAnnotations
[<DataContract>]
[<AllowNullLiteral>]
type InOutTimes() =
class end
[<DataContract>]
[<AllowNullLiteral>]
type RequestTimestamps() =
[<DataMember(EmitDefaultValue=false)>]
member val AppLayer:InOutTimes = null with get,set
[<DataMember(EmitDefaultValue=false)>]
member val ParentLookup:InOutTimes = null with get,set
[<DataMember(EmitDefaultValue=false)>]
member val RetryLookup:InOutTimes = null with get,set
[<DataMember(EmitDefaultValue=false)>]
member val GetCardData:InOutTimes = null with get,set
[<DataMember(EmitDefaultValue=false)>]
member val CardTokenize:InOutTimes = null with get,set
[<DataMember(EmitDefaultValue=false)>]
member val CardEncrypt:InOutTimes = null with get,set
[<DataMember(EmitDefaultValue=false)>]
member val DBInsert:InOutTimes = null with get,set
[<DataMember(EmitDefaultValue=false)>]
member val BackendProcess:InOutTimes = null with get,set
[<DataMember(EmitDefaultValue=false)>]
member val DBUpdate:InOutTimes = null with get,set
[<DataMember(EmitDefaultValue=false)>]
member val ParentUpdate:InOutTimes = null with get,set
[<DataMember(EmitDefaultValue=false)>]
member val Network:InOutTimes = null with get,set
[<DataContract>]
[<AllowNullLiteral>]
type PaysecureResponseInternal() =
[<DataMember(EmitDefaultValue=false)>]
member val Timestamps:RequestTimestamps = null with get,set
type CardInfoType =
| CardNumber = 0
| Token = 1
| Track = 2
| EMV = 3
| Encrypted = 4
| DPAN = 5
| ApplePay = 6
| GooglePay = 7
| SamsungPay = 8
| CPToken = 9
| EncryptedEnhanced = 10
| EncryptedJWE = 11
[<AllowNullLiteral>]
type CardAccountUpdaterDescriptor() =
member val CardDataType:CardInfoType = new CardInfoType() with get,set
member val CardNumberInfo:String = null with get,set
member val ExpiryDate:String = null with get,set
member val Status:String = null with get,set
member val ErrorCode:String = null with get,set
member val CardToken:String = null with get,set
[<DataContract>]
[<AllowNullLiteral>]
type ExtendedResponse() =
[<DataMember(EmitDefaultValue=false)>]
member val CardAccountUpdater:CardAccountUpdaterDescriptor = null with get,set
[<DataMember(EmitDefaultValue=false)>]
member val ProductId:String = null with get,set
[<DataMember(EmitDefaultValue=false)>]
member val NetworkResponseCode:String = null with get,set
[<DataMember(EmitDefaultValue=false)>]
member val NetworkTransactionId:String = null with get,set
[<DataMember(EmitDefaultValue=false)>]
member val CHEmailAddrResult:String = null with get,set
[<DataContract>]
[<AllowNullLiteral>]
type PaysecureVersion() =
inherit PaysecureResponseInternal()
[<DataMember(EmitDefaultValue=false)>]
member val LocalDateTime:String = null with get,set
[<DataMember(EmitDefaultValue=false)>]
member val Token:String = null with get,set
[<DataMember(EmitDefaultValue=false)>]
member val ExtendedData:ExtendedResponse = null with get,set
[<AllowNullLiteral>]
type WICBalance() =
member val WICCategory:String = null with get,set
member val WICSubcategory:String = null with get,set
member val WICQuantity:Int32 = new Int32() with get,set
type WICProductCodeInd =
| PLU = 1
| UPC = 2
type WICActionCode =
| Approved = 0
| CategoryNotPrescribed = 1
| SubcategoryNotPrescribed = 2
| InsufficientUnits = 3
| ProduceCodeNotSubscribed = 4
| ApprovedLowerPrice = 5
[<AllowNullLiteral>]
type WICProduct() =
member val ProductCodeInd:WICProductCodeInd = new WICProductCodeInd() with get,set
member val ProductCode:String = null with get,set
member val ItemPrice:Int32 = new Int32() with get,set
member val ItemQuantity:Int32 = new Int32() with get,set
member val ActionCode:WICActionCode = new WICActionCode() with get,set
member val OriginalItemPrice:Int32 = new Int32() with get,set
member val OriginalItemQuantity:Int32 = new Int32() with get,set
[<DataContract>]
[<AllowNullLiteral>]
type WICSale() =
inherit PaysecureVersion()
[<DataMember>]
member val ApprovalCode:String = null with get,set
[<DataMember>]
member val TranId:String = null with get,set
[<DataMember>]
member val ErrorMessage:String = null with get,set
[<DataMember>]
member val ErrorCode:String = null with get,set
[<DataMember>]
member val ApprovedAmount:Int32 = new Int32() with get,set
[<DataMember>]
member val DiscountAmount:Int32 = new Int32() with get,set
[<DataMember>]
member val Network:String = null with get,set
[<DataMember>]
member val EarliestBenefitExpirationDate:String = null with get,set
[<DataMember>]
member val WICBalances:ResizeArray<WICBalance> = new ResizeArray<WICBalance>() with get,set
[<DataMember>]
member val WICProducts:ResizeArray<WICProduct> = new ResizeArray<WICProduct>() with get,set
[<DataMember>]
member val ResponseCode:String = null with get,set
[<AllowNullLiteral>]
type RequestorCredentials() =
[<Required>]
member val MerchantId:String = null with get,set
[<Required>]
member val UserName:String = null with get,set
[<Required>]
member val Password:String = null with get,set
[<Required>]
member val Version:String = null with get,set
type TelephoneType =
| D = 0
| H = 1
| N = 2
| W = 3
[<AllowNullLiteral>]
type Avs() =
member val Address:String = null with get,set
member val City:String = null with get,set
member val State:String = null with get,set
member val Zip:String = null with get,set
member val Country:String = null with get,set
member val Email:String = null with get,set
member val IPAddress:String = null with get,set
member val TelephoneNumber:String = null with get,set
member val TelephoneType:TelephoneType = new TelephoneType() with get,set
member val DeliveryMethod:Int32 = new Int32() with get,set
member val FirstName:String = null with get,set
member val MiddleName:String = null with get,set
member val LastName:String = null with get,set
[<AllowNullLiteral>]
type MerchantDataElements() =
member val RefundSettlementTypeDetails:Int32 = new Int32() with get,set
member val SendRecurringPOSEntryModeFeature:Boolean = new Boolean() with get,set
member val UseOrgPOSCode:Boolean = new Boolean() with get,set
[<AllowNullLiteral>]
type MerchantDescriptorBase() =
member val DataElements:MerchantDataElements = null with get,set
[<AllowNullLiteral>]
type MerchantDescriptor() =
inherit MerchantDescriptorBase()
member val Name:String = null with get,set
member val Address:String = null with get,set
member val City:String = null with get,set
member val State:String = null with get,set
member val Zip:String = null with get,set
member val Country:String = null with get,set
member val CustomerServiceNumber:String = null with get,set
member val MCC:String = null with get,set
member val FNSnum:String = null with get,set
member val Email:String = null with get,set
type FundingSourceType =
| DepositAccount = 0
| Credit = 1
| Debit = 2
| Prepaid = 3
[<AllowNullLiteral>]
type SenderInfo() =
member val ReferenceNumber:String = null with get,set
member val AccountNumber:String = null with get,set
///<summary>
///Name Format FirstName{Space}LastName. For Example :- Alvaro Morata
///</summary>
member val Name:String = null with get,set
member val Address:String = null with get,set
member val City:String = null with get,set
member val State:String = null with get,set
member val Country:String = null with get,set
///<summary>
///DateOfBirth Format MMDDYYYY. For Example :- 05051960
///</summary>
member val DateOfBirth:String = null with get,set
member val Zip:String = null with get,set
member val PhoneNumber:String = null with get,set
member val FundingSource:FundingSourceType = new FundingSourceType() with get,set
type NetworkName =
| Default = 0
| NYCE = 1
| CU24 = 2
| XCEL = 3
| STAR = 4
| PULS = 5
| SHZM = 6
| VISA = 7
| MAST = 8
| DISC = 9
| AMEX = 10
| ALIP = 11
| UPIN = 12
| STAC = 13
| STNE = 14
| MAES = 15
| INTL = 16
[<AllowNullLiteral>]
type ReceiverInfo() =
member val ReferenceNumber:String = null with get,set
member val AccountNumber:String = null with get,set
///<summary>
///Name Format FirstName{Space}LastName. For Example :- Alvaro Morata
///</summary>
member val Name:String = null with get,set
member val Address:String = null with get,set
member val City:String = null with get,set
member val State:String = null with get,set
member val Country:String = null with get,set
member val Zip:String = null with get,set
member val PhoneNumber:String = null with get,set
type BillPayGroup =
| Default = 0
| Single = 1
| Recurring = 2
| Installment = 3
| Deferred = 4
type DigitalWalletInfo =
| Default = 0
| Staged = 1
| Passthrough = 2
[<AllowNullLiteral>]
type WalletDescriptor() =
member val Type:String = null with get,set
member val EncryptedData:String = null with get,set
member val ApplicationDataHash:String = null with get,set
member val EphemeralPublicKey:String = null with get,set
member val PublicKeyHash:String = null with get,set
member val TransactionId:String = null with get,set
member val Signature:String = null with get,set
member val Version:String = null with get,set
member val ApplicationData:String = null with get,set
member val MerchantIdentifier:String = null with get,set
member val SpecialPayment:String = null with get,set
member val DigitalWalletIndicator:DigitalWalletInfo = new DigitalWalletInfo() with get,set
[<AllowNullLiteral>]
type SecureDescriptor() =
member val CAVV:String = null with get,set
member val SecureTransactionId:String = null with get,set
type TaxIndicator =
| Default = 0
| NoTaxInfoProvided = 1
| TaxInfoProvided = 2
| TaxExemptItem = 3
[<AllowNullLiteral>]
type Level2Descriptor() =
member val TaxDetails:TaxIndicator = new TaxIndicator() with get,set
member val MerchantReferenceNumber:String = null with get,set
member val MerchantTaxId:String = null with get,set
member val OrderNumber:String = null with get,set
member val TaxAmount:Int32 = new Int32() with get,set
member val DestinationPostalCode:String = null with get,set
member val ProductDescription:String = null with get,set
[<AllowNullLiteral>]
type PaymentFacilitatorDescriptor() =
member val PaymentFacilitatorIndicator:String = null with get,set
member val PFPhoneNumber:String = null with get,set
member val SubMerchID:String = null with get,set
member val SellerID:String = null with get,set
type TokenTypes =
| Default = 0
| UCAF = 1
| DSRP = 2
| UCAFDSRP = 3
| VisaVerified = 4
| DigitalWallet = 5
| VisaVerifiedDigitalWallet = 6
[<AllowNullLiteral>]
type TokenDescriptor() =
member val TokenType:TokenTypes = new TokenTypes() with get,set
member val TokenCryptogramData1:String = null with get,set
member val TokenCryptogramData2:String = null with get,set
type CardonFileInfo =
| Default = 0
| Supported = 1
| NotSupported = 2
type StoredCredentialIndicatorInfo =
| Default = 0
| Initial = 1
| Subsequent = 2
type TransactionInitiateInfo =
| Default = 0
| Merchant = 1
| Terminal = 2
| Customer = 3
type ScheduleIndicatorInfo =
| Default = 0
| Scheduled = 1
| Unscheduled = 2
[<AllowNullLiteral>]
type CardonFileIndicatorDescriptor() =
member val CardonFile:CardonFileInfo = new CardonFileInfo() with get,set
member val StoredCredentialIndicator:StoredCredentialIndicatorInfo = new StoredCredentialIndicatorInfo() with get,set
member val TransactionInitiate:TransactionInitiateInfo = new TransactionInitiateInfo() with get,set
member val ScheduleIndicator:ScheduleIndicatorInfo = new ScheduleIndicatorInfo() with get,set
member val NetworkTransactionId:String = null with get,set
type CardAccountUpdaterInfo =
| Default = 0
| Supported = 1
| NotSupported = 2
type OrderTypeInfo =
| Default = 0
| Standing = 1
| Subscription = 2
[<AllowNullLiteral>]
type BillPayGroupIndicator() =
member val MITTotalPaymentCount:String = null with get,set
member val MITAmountType:String = null with get,set
member val MITAmount:String = null with get,set
member val MITUniqueID:String = null with get,set
member val MITFrequency:String = null with get,set
member val MITValidationFlag:String = null with get,set
member val MITValidationReference:String = null with get,set
member val MITSequenceIndicator:String = null with get,set
type ChargeTypeInfo =
| Default = 0
| PartialShipment = 1
| Delayed = 2
| NoShow = 3
| Resubmission = 4
type SAFEligibleFlag =
| Default = 0
| True = 1
| False = 2
[<DataContract>]
[<AllowNullLiteral>]
type ExtendedData() =
[<DataMember>]
member val Track2DataForEMVTransaction:String = null with get,set
[<DataMember>]
member val SenderInfo:SenderInfo = null with get,set
[<DataMember>]
member val CashbackAmount:Int32 = new Int32() with get,set
[<DataMember>]
member val Network:NetworkName = new NetworkName() with get,set
[<DataMember>]
member val ReceiverInfo:ReceiverInfo = null with get,set
[<DataMember>]
member val BillPayGroup:BillPayGroup = new BillPayGroup() with get,set
[<DataMember>]
member val WalletData:WalletDescriptor = null with get,set
[<DataMember>]
member val SecureData:SecureDescriptor = null with get,set
[<DataMember>]
member val Level2Data:Level2Descriptor = null with get,set
[<DataMember>]
member val PaymentFacilitatorData:PaymentFacilitatorDescriptor = null with get,set
[<DataMember>]
member val TokenData:TokenDescriptor = null with get,set
[<DataMember>]
member val OTPTranId:String = null with get,set
[<DataMember>]
member val CurrentShipment:Int32 = new Int32() with get,set
[<DataMember>]
member val TotalShipments:Int32 = new Int32() with get,set
[<DataMember>]
member val IsTokenRequested:Boolean = new Boolean() with get,set
[<DataMember>]
member val CardonFileIndicator:CardonFileIndicatorDescriptor = null with get,set
[<DataMember>]
member val CardAccountUpdater:CardAccountUpdaterInfo = new CardAccountUpdaterInfo() with get,set
[<DataMember>]
member val RetryAttemptCount:Int32 = new Int32() with get,set
[<DataMember>]
member val TotalAuthAmount:Int32 = new Int32() with get,set
[<DataMember>]
member val SignatureHashVersion:String = null with get,set
[<DataMember>]
member val OrderTypeDetail:OrderTypeInfo = new OrderTypeInfo() with get,set
[<DataMember>]
member val BillPayGroupIndicator:BillPayGroupIndicator = null with get,set
[<DataMember>]
member val ChargeTypeDetail:ChargeTypeInfo = new ChargeTypeInfo() with get,set
[<DataMember>]
member val SAFEligible:SAFEligibleFlag = new SAFEligibleFlag() with get,set
[<DataContract>]
[<AllowNullLiteral>]
type WICSaleRequest() =
[<DataMember>]
member val Credentials:RequestorCredentials = null with get,set
[<DataMember>]
member val Amount:Int32 = new Int32() with get,set
[<DataMember>]
member val DiscountAmount:Int32 = new Int32() with get,set
[<DataMember>]
member val TranId:String = null with get,set
[<DataMember>]
member val ReferenceKey:String = null with get,set
[<DataMember>]
member val CurrencyCode:String = null with get,set
[<DataMember>]
member val DeliveryAddress:Avs = null with get,set
[<DataMember>]
member val MerchantDetails:MerchantDescriptor = null with get,set
[<DataMember>]
member val WICProducts:ResizeArray<WICProduct> = new ResizeArray<WICProduct>() with get,set
[<DataMember>]
member val Custom1:String = null with get,set
[<DataMember>]
member val Custom2:String = null with get,set
[<DataMember>]
member val Custom3:String = null with get,set
[<DataMember>]
member val Custom4:String = null with get,set
[<DataMember>]
member val Custom5:String = null with get,set
[<DataMember>]
member val SignatureHash:String = null with get,set
[<DataMember>]
member val ExtendedData:ExtendedData = null with get,set
To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /WICSale HTTP/1.1
Host: api.paysecure.acculynk.net
Accept: application/xml
Content-Type: application/xml
Content-Length: length
<WICSaleRequest 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>
<DeliveryAddress>
<Address>String</Address>
<City>String</City>
<Country>String</Country>
<DeliveryMethod>0</DeliveryMethod>
<Email>String</Email>
<FirstName>String</FirstName>
<IPAddress>String</IPAddress>
<LastName>String</LastName>
<MiddleName>String</MiddleName>
<State>String</State>
<TelephoneNumber>String</TelephoneNumber>
<TelephoneType>D</TelephoneType>
<Zip>String</Zip>
</DeliveryAddress>
<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>
</WICSaleRequest>
HTTP/1.1 200 OK Content-Type: application/xml Content-Length: length <WICSale 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> </WICSale>