POST | /WICSale |
---|
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using Paysecure.ServiceModel;
using Paysecure.ServiceModel.Types;
namespace Paysecure.ServiceModel
{
public partial class Avs
{
public virtual string Address { get; set; }
public virtual string City { get; set; }
public virtual string State { get; set; }
public virtual string Zip { get; set; }
public virtual string Country { get; set; }
public virtual string Email { get; set; }
public virtual string IPAddress { get; set; }
public virtual string TelephoneNumber { get; set; }
public virtual TelephoneType TelephoneType { get; set; }
public virtual int DeliveryMethod { get; set; }
public virtual string FirstName { get; set; }
public virtual string MiddleName { get; set; }
public virtual string LastName { get; set; }
}
public partial class MerchantDescriptor
: MerchantDescriptorBase
{
public virtual string Name { get; set; }
public virtual string Address { get; set; }
public virtual string City { get; set; }
public virtual string State { get; set; }
public virtual string Zip { get; set; }
public virtual string Country { get; set; }
public virtual string CustomerServiceNumber { get; set; }
public virtual string MCC { get; set; }
public virtual string FNSnum { get; set; }
public virtual string Email { get; set; }
}
public partial class MerchantDescriptorBase
{
public virtual MerchantDataElements DataElements { get; set; }
}
public enum TelephoneType
{
D,
H,
N,
W,
}
[DataContract]
public partial class WICSale
: PaysecureVersion
{
public WICSale()
{
WICBalances = new List<WICBalance>{};
WICProducts = new List<WICProduct>{};
}
[DataMember]
public virtual string ApprovalCode { get; set; }
[DataMember]
public virtual string TranId { get; set; }
[DataMember]
public virtual string ErrorMessage { get; set; }
[DataMember]
public virtual string ErrorCode { get; set; }
[DataMember]
public virtual int ApprovedAmount { get; set; }
[DataMember]
public virtual int DiscountAmount { get; set; }
[DataMember]
public virtual string Network { get; set; }
[DataMember]
public virtual string EarliestBenefitExpirationDate { get; set; }
[DataMember]
public virtual List<WICBalance> WICBalances { get; set; }
[DataMember]
public virtual List<WICProduct> WICProducts { get; set; }
[DataMember]
public virtual string ResponseCode { get; set; }
}
[DataContract]
public partial class WICSaleRequest
{
public WICSaleRequest()
{
WICProducts = new List<WICProduct>{};
}
[DataMember]
public virtual RequestorCredentials Credentials { get; set; }
[DataMember]
public virtual int Amount { get; set; }
[DataMember]
public virtual int DiscountAmount { get; set; }
[DataMember]
public virtual string TranId { get; set; }
[DataMember]
public virtual string ReferenceKey { get; set; }
[DataMember]
public virtual string CurrencyCode { get; set; }
[DataMember]
public virtual Avs DeliveryAddress { get; set; }
[DataMember]
public virtual MerchantDescriptor MerchantDetails { get; set; }
[DataMember]
public virtual List<WICProduct> WICProducts { get; set; }
[DataMember]
public virtual string Custom1 { get; set; }
[DataMember]
public virtual string Custom2 { get; set; }
[DataMember]
public virtual string Custom3 { get; set; }
[DataMember]
public virtual string Custom4 { get; set; }
[DataMember]
public virtual string Custom5 { get; set; }
[DataMember]
public virtual string SignatureHash { get; set; }
[DataMember]
public virtual ExtendedData ExtendedData { get; set; }
}
}
namespace Paysecure.ServiceModel.Types
{
public enum BillPayGroup
{
Default,
Single,
Recurring,
Installment,
Deferred,
}
public partial class BillPayGroupIndicator
{
public virtual string MITTotalPaymentCount { get; set; }
public virtual string MITAmountType { get; set; }
public virtual string MITAmount { get; set; }
public virtual string MITUniqueID { get; set; }
public virtual string MITFrequency { get; set; }
public virtual string MITValidationFlag { get; set; }
public virtual string MITValidationReference { get; set; }
public virtual string MITSequenceIndicator { get; set; }
}
public partial class CardAccountUpdaterDescriptor
{
public virtual CardInfoType CardDataType { get; set; }
public virtual string CardNumberInfo { get; set; }
public virtual string ExpiryDate { get; set; }
public virtual string Status { get; set; }
public virtual string ErrorCode { get; set; }
public virtual string CardToken { get; set; }
}
public enum CardAccountUpdaterInfo
{
Default,
Supported,
NotSupported,
}
public enum CardInfoType
{
CardNumber,
Token,
Track,
EMV,
Encrypted,
DPAN,
ApplePay,
GooglePay,
SamsungPay,
CPToken,
EncryptedEnhanced,
EncryptedJWE,
}
public partial class CardonFileIndicatorDescriptor
{
public virtual CardonFileInfo CardonFile { get; set; }
public virtual StoredCredentialIndicatorInfo StoredCredentialIndicator { get; set; }
public virtual TransactionInitiateInfo TransactionInitiate { get; set; }
public virtual ScheduleIndicatorInfo ScheduleIndicator { get; set; }
public virtual string NetworkTransactionId { get; set; }
}
public enum CardonFileInfo
{
Default,
Supported,
NotSupported,
}
public enum ChargeTypeInfo
{
Default,
PartialShipment,
Delayed,
NoShow,
Resubmission,
}
public enum DigitalWalletInfo
{
Default,
Staged,
Passthrough,
}
[DataContract]
public partial class ExtendedData
{
[DataMember]
public virtual string Track2DataForEMVTransaction { get; set; }
[DataMember]
public virtual SenderInfo SenderInfo { get; set; }
[DataMember]
public virtual int CashbackAmount { get; set; }
[DataMember]
public virtual NetworkName Network { get; set; }
[DataMember]
public virtual ReceiverInfo ReceiverInfo { get; set; }
[DataMember]
public virtual BillPayGroup BillPayGroup { get; set; }
[DataMember]
public virtual WalletDescriptor WalletData { get; set; }
[DataMember]
public virtual SecureDescriptor SecureData { get; set; }
[DataMember]
public virtual Level2Descriptor Level2Data { get; set; }
[DataMember]
public virtual PaymentFacilitatorDescriptor PaymentFacilitatorData { get; set; }
[DataMember]
public virtual TokenDescriptor TokenData { get; set; }
[DataMember]
public virtual string OTPTranId { get; set; }
[DataMember]
public virtual int CurrentShipment { get; set; }
[DataMember]
public virtual int TotalShipments { get; set; }
[DataMember]
public virtual bool IsTokenRequested { get; set; }
[DataMember]
public virtual CardonFileIndicatorDescriptor CardonFileIndicator { get; set; }
[DataMember]
public virtual CardAccountUpdaterInfo CardAccountUpdater { get; set; }
[DataMember]
public virtual int RetryAttemptCount { get; set; }
[DataMember]
public virtual int TotalAuthAmount { get; set; }
[DataMember]
public virtual string SignatureHashVersion { get; set; }
[DataMember]
public virtual OrderTypeInfo OrderTypeDetail { get; set; }
[DataMember]
public virtual BillPayGroupIndicator BillPayGroupIndicator { get; set; }
[DataMember]
public virtual ChargeTypeInfo ChargeTypeDetail { get; set; }
[DataMember]
public virtual SAFEligibleFlag SAFEligible { get; set; }
}
[DataContract]
public partial class ExtendedResponse
{
[DataMember(EmitDefaultValue=false)]
public virtual CardAccountUpdaterDescriptor CardAccountUpdater { get; set; }
[DataMember(EmitDefaultValue=false)]
public virtual string ProductId { get; set; }
[DataMember(EmitDefaultValue=false)]
public virtual string NetworkResponseCode { get; set; }
[DataMember(EmitDefaultValue=false)]
public virtual string NetworkTransactionId { get; set; }
[DataMember(EmitDefaultValue=false)]
public virtual string CHEmailAddrResult { get; set; }
}
public enum FundingSourceType
{
DepositAccount,
Credit,
Debit,
Prepaid,
}
[DataContract]
public partial class InOutTimes
{
}
public partial class Level2Descriptor
{
public virtual TaxIndicator TaxDetails { get; set; }
public virtual string MerchantReferenceNumber { get; set; }
public virtual string MerchantTaxId { get; set; }
public virtual string OrderNumber { get; set; }
public virtual int TaxAmount { get; set; }
public virtual string DestinationPostalCode { get; set; }
public virtual string ProductDescription { get; set; }
}
public partial class MerchantDataElements
{
public virtual int RefundSettlementTypeDetails { get; set; }
public virtual bool SendRecurringPOSEntryModeFeature { get; set; }
public virtual bool UseOrgPOSCode { get; set; }
}
public enum NetworkName
{
Default,
NYCE,
CU24,
XCEL,
STAR,
PULS,
SHZM,
VISA,
MAST,
DISC,
AMEX,
ALIP,
UPIN,
STAC,
STNE,
MAES,
INTL,
}
public enum OrderTypeInfo
{
Default,
Standing,
Subscription,
}
public partial class PaymentFacilitatorDescriptor
{
public virtual string PaymentFacilitatorIndicator { get; set; }
public virtual string PFPhoneNumber { get; set; }
public virtual string SubMerchID { get; set; }
public virtual string SellerID { get; set; }
}
[DataContract]
public partial class PaysecureResponseInternal
{
[DataMember(EmitDefaultValue=false)]
public virtual RequestTimestamps Timestamps { get; set; }
}
[DataContract]
public partial class PaysecureVersion
: PaysecureResponseInternal
{
[DataMember(EmitDefaultValue=false)]
public virtual string LocalDateTime { get; set; }
[DataMember(EmitDefaultValue=false)]
public virtual string Token { get; set; }
[DataMember(EmitDefaultValue=false)]
public virtual ExtendedResponse ExtendedData { get; set; }
}
public partial class ReceiverInfo
{
public virtual string ReferenceNumber { get; set; }
public virtual string AccountNumber { get; set; }
///<summary>
///Name Format FirstName{Space}LastName. For Example :- Alvaro Morata
///</summary>
public virtual string Name { get; set; }
public virtual string Address { get; set; }
public virtual string City { get; set; }
public virtual string State { get; set; }
public virtual string Country { get; set; }
public virtual string Zip { get; set; }
public virtual string PhoneNumber { get; set; }
}
public partial class RequestorCredentials
{
[Required]
public virtual string MerchantId { get; set; }
[Required]
public virtual string UserName { get; set; }
[Required]
public virtual string Password { get; set; }
[Required]
public virtual string Version { get; set; }
}
[DataContract]
public partial class RequestTimestamps
{
[DataMember(EmitDefaultValue=false)]
public virtual InOutTimes AppLayer { get; set; }
[DataMember(EmitDefaultValue=false)]
public virtual InOutTimes ParentLookup { get; set; }
[DataMember(EmitDefaultValue=false)]
public virtual InOutTimes RetryLookup { get; set; }
[DataMember(EmitDefaultValue=false)]
public virtual InOutTimes GetCardData { get; set; }
[DataMember(EmitDefaultValue=false)]
public virtual InOutTimes CardTokenize { get; set; }
[DataMember(EmitDefaultValue=false)]
public virtual InOutTimes CardEncrypt { get; set; }
[DataMember(EmitDefaultValue=false)]
public virtual InOutTimes DBInsert { get; set; }
[DataMember(EmitDefaultValue=false)]
public virtual InOutTimes BackendProcess { get; set; }
[DataMember(EmitDefaultValue=false)]
public virtual InOutTimes DBUpdate { get; set; }
[DataMember(EmitDefaultValue=false)]
public virtual InOutTimes ParentUpdate { get; set; }
[DataMember(EmitDefaultValue=false)]
public virtual InOutTimes Network { get; set; }
}
public enum SAFEligibleFlag
{
Default,
True,
False,
}
public enum ScheduleIndicatorInfo
{
Default,
Scheduled,
Unscheduled,
}
public partial class SecureDescriptor
{
public virtual string CAVV { get; set; }
public virtual string SecureTransactionId { get; set; }
}
public partial class SenderInfo
{
public virtual string ReferenceNumber { get; set; }
public virtual string AccountNumber { get; set; }
///<summary>
///Name Format FirstName{Space}LastName. For Example :- Alvaro Morata
///</summary>
public virtual string Name { get; set; }
public virtual string Address { get; set; }
public virtual string City { get; set; }
public virtual string State { get; set; }
public virtual string Country { get; set; }
///<summary>
///DateOfBirth Format MMDDYYYY. For Example :- 05051960
///</summary>
public virtual string DateOfBirth { get; set; }
public virtual string Zip { get; set; }
public virtual string PhoneNumber { get; set; }
public virtual FundingSourceType FundingSource { get; set; }
}
public enum StoredCredentialIndicatorInfo
{
Default,
Initial,
Subsequent,
}
public enum TaxIndicator
{
Default,
NoTaxInfoProvided,
TaxInfoProvided,
TaxExemptItem,
}
public partial class TokenDescriptor
{
public virtual TokenTypes TokenType { get; set; }
public virtual string TokenCryptogramData1 { get; set; }
public virtual string TokenCryptogramData2 { get; set; }
}
public enum TokenTypes
{
Default,
UCAF,
DSRP,
UCAFDSRP,
VisaVerified,
DigitalWallet,
VisaVerifiedDigitalWallet,
}
public enum TransactionInitiateInfo
{
Default,
Merchant,
Terminal,
Customer,
}
public partial class WalletDescriptor
{
public virtual string Type { get; set; }
public virtual string EncryptedData { get; set; }
public virtual string ApplicationDataHash { get; set; }
public virtual string EphemeralPublicKey { get; set; }
public virtual string PublicKeyHash { get; set; }
public virtual string TransactionId { get; set; }
public virtual string Signature { get; set; }
public virtual string Version { get; set; }
public virtual string ApplicationData { get; set; }
public virtual string MerchantIdentifier { get; set; }
public virtual string SpecialPayment { get; set; }
public virtual DigitalWalletInfo DigitalWalletIndicator { get; set; }
}
public enum WICActionCode
{
Approved,
CategoryNotPrescribed,
SubcategoryNotPrescribed,
InsufficientUnits,
ProduceCodeNotSubscribed,
ApprovedLowerPrice,
}
public partial class WICBalance
{
public virtual string WICCategory { get; set; }
public virtual string WICSubcategory { get; set; }
public virtual int WICQuantity { get; set; }
}
public partial class WICProduct
{
public virtual WICProductCodeInd ProductCodeInd { get; set; }
public virtual string ProductCode { get; set; }
public virtual int ItemPrice { get; set; }
public virtual int ItemQuantity { get; set; }
public virtual WICActionCode ActionCode { get; set; }
public virtual int OriginalItemPrice { get; set; }
public virtual int OriginalItemQuantity { get; set; }
}
public enum WICProductCodeInd
{
PLU = 1,
UPC = 2,
}
}
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>