PaySecure Pinless Web Services 2023:07:03:07

<back to all web services

WICSubstitutionRequest

The following routes are available for this service:
POST/WICSubstitution
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 WICSubstitution() = 
        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 WICSubstitutionRequest() = 
        [<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

F# WICSubstitutionRequest DTOs

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

HTTP + JSV

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

POST /WICSubstitution HTTP/1.1 
Host: api.paysecure.acculynk.net 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	Credentials: 
	{
		MerchantId: String,
		UserName: String,
		Password: String,
		Version: String
	},
	Amount: 0,
	DiscountAmount: 0,
	TranId: String,
	ReferenceKey: String,
	CurrencyCode: String,
	DeliveryAddress: 
	{
		Address: String,
		City: String,
		State: String,
		Zip: String,
		Country: String,
		Email: String,
		IPAddress: String,
		TelephoneNumber: String,
		TelephoneType: D,
		DeliveryMethod: 0,
		FirstName: String,
		MiddleName: String,
		LastName: String
	},
	MerchantDetails: 
	{
		Name: String,
		Address: String,
		City: String,
		State: String,
		Zip: String,
		Country: String,
		CustomerServiceNumber: String,
		MCC: String,
		FNSnum: String,
		Email: String,
		DataElements: 
		{
			RefundSettlementTypeDetails: 0,
			SendRecurringPOSEntryModeFeature: False,
			UseOrgPOSCode: False
		}
	},
	WICProducts: 
	[
		{
			ProductCodeInd: PLU,
			ProductCode: String,
			ItemPrice: 0,
			ItemQuantity: 0,
			ActionCode: Approved,
			OriginalItemPrice: 0,
			OriginalItemQuantity: 0
		}
	],
	Custom1: String,
	Custom2: String,
	Custom3: String,
	Custom4: String,
	Custom5: String,
	SignatureHash: String,
	ExtendedData: 
	{
		Track2DataForEMVTransaction: String,
		SenderInfo: 
		{
			ReferenceNumber: String,
			AccountNumber: String,
			Name: String,
			Address: String,
			City: String,
			State: String,
			Country: String,
			DateOfBirth: String,
			Zip: String,
			PhoneNumber: String,
			FundingSource: DepositAccount
		},
		CashbackAmount: 0,
		Network: Default,
		ReceiverInfo: 
		{
			ReferenceNumber: String,
			AccountNumber: String,
			Name: String,
			Address: String,
			City: String,
			State: String,
			Country: String,
			Zip: String,
			PhoneNumber: String
		},
		BillPayGroup: Default,
		WalletData: 
		{
			Type: String,
			EncryptedData: String,
			ApplicationDataHash: String,
			EphemeralPublicKey: String,
			PublicKeyHash: String,
			TransactionId: String,
			Signature: String,
			Version: String,
			ApplicationData: String,
			MerchantIdentifier: String,
			SpecialPayment: String,
			DigitalWalletIndicator: Default
		},
		SecureData: 
		{
			CAVV: String,
			SecureTransactionId: String
		},
		Level2Data: 
		{
			TaxDetails: Default,
			MerchantReferenceNumber: String,
			MerchantTaxId: String,
			OrderNumber: String,
			TaxAmount: 0,
			DestinationPostalCode: String,
			ProductDescription: String
		},
		PaymentFacilitatorData: 
		{
			PaymentFacilitatorIndicator: String,
			PFPhoneNumber: String,
			SubMerchID: String,
			SellerID: String
		},
		TokenData: 
		{
			TokenType: Default,
			TokenCryptogramData1: String,
			TokenCryptogramData2: String
		},
		OTPTranId: String,
		CurrentShipment: 0,
		TotalShipments: 0,
		IsTokenRequested: False,
		CardonFileIndicator: 
		{
			CardonFile: Default,
			StoredCredentialIndicator: Default,
			TransactionInitiate: Default,
			ScheduleIndicator: Default,
			NetworkTransactionId: String
		},
		CardAccountUpdater: Default,
		RetryAttemptCount: 0,
		TotalAuthAmount: 0,
		SignatureHashVersion: String,
		OrderTypeDetail: Default,
		BillPayGroupIndicator: 
		{
			MITTotalPaymentCount: String,
			MITAmountType: String,
			MITAmount: String,
			MITUniqueID: String,
			MITFrequency: String,
			MITValidationFlag: String,
			MITValidationReference: String,
			MITSequenceIndicator: String
		},
		ChargeTypeDetail: Default,
		SAFEligible: Default
	}
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	ApprovalCode: String,
	TranId: String,
	ErrorMessage: String,
	ErrorCode: String,
	ApprovedAmount: 0,
	DiscountAmount: 0,
	Network: String,
	EarliestBenefitExpirationDate: String,
	WICBalances: 
	[
		{
			WICCategory: String,
			WICSubcategory: String,
			WICQuantity: 0
		}
	],
	WICProducts: 
	[
		{
			ProductCodeInd: PLU,
			ProductCode: String,
			ItemPrice: 0,
			ItemQuantity: 0,
			ActionCode: Approved,
			OriginalItemPrice: 0,
			OriginalItemQuantity: 0
		}
	],
	ResponseCode: String,
	LocalDateTime: String,
	Token: String,
	ExtendedData: 
	{
		CardAccountUpdater: 
		{
			CardDataType: CardNumber,
			CardNumberInfo: String,
			ExpiryDate: String,
			Status: String,
			ErrorCode: String,
			CardToken: String
		},
		ProductId: String,
		NetworkResponseCode: String,
		NetworkTransactionId: String,
		CHEmailAddrResult: String
	},
	Timestamps: 
	{
		AppLayer: 
		{
			InTime: 0001-01-01,
			OutTime: 0001-01-01
		},
		ParentLookup: 
		{
			InTime: 0001-01-01,
			OutTime: 0001-01-01
		},
		RetryLookup: 
		{
			InTime: 0001-01-01,
			OutTime: 0001-01-01
		},
		GetCardData: 
		{
			InTime: 0001-01-01,
			OutTime: 0001-01-01
		},
		CardTokenize: 
		{
			InTime: 0001-01-01,
			OutTime: 0001-01-01
		},
		CardEncrypt: 
		{
			InTime: 0001-01-01,
			OutTime: 0001-01-01
		},
		DBInsert: 
		{
			InTime: 0001-01-01,
			OutTime: 0001-01-01
		},
		BackendProcess: 
		{
			InTime: 0001-01-01,
			OutTime: 0001-01-01
		},
		DBUpdate: 
		{
			InTime: 0001-01-01,
			OutTime: 0001-01-01
		},
		ParentUpdate: 
		{
			InTime: 0001-01-01,
			OutTime: 0001-01-01
		},
		Network: 
		{
			InTime: 0001-01-01,
			OutTime: 0001-01-01
		}
	}
}