POST | /WICReverse |
---|
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
[<DataContract>]
[<AllowNullLiteral>]
type WICReverse() =
inherit PaysecureVersion()
[<DataMember>]
member val TranId:String = null with get,set
[<DataMember>]
member val ResponseCode: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 EarliestBenefitExpirationDate:String = null with get,set
[<DataMember>]
member val WICBalances:ResizeArray<WICBalance> = new ResizeArray<WICBalance>() 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 OriginalDataType =
| TransactionId = 1
| ReferenceKey = 2
| ExternalId = 3
| InternalTransactionId = 4
[<AllowNullLiteral>]
type OriginalTransaction() =
member val OriginalIdentifierType:OriginalDataType = new OriginalDataType() with get,set
member val OriginalDataIdentifier: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 WICReverseRequest() =
[<DataMember>]
member val Credentials:RequestorCredentials = null with get,set
[<DataMember>]
member val OriginalData:OriginalTransaction = null with get,set
[<DataMember>]
member val ReferenceKey:String = null with get,set
[<DataMember>]
member val Reason:String = null with get,set
[<DataMember>]
member val MerchantDetails:MerchantDescriptor = null 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 .jsv suffix or ?format=jsv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /WICReverse 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
},
OriginalData:
{
OriginalIdentifierType: TransactionId,
OriginalDataIdentifier: String
},
ReferenceKey: String,
Reason: 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
}
},
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 { TranId: String, ResponseCode: String, ErrorMessage: String, ErrorCode: String, EarliestBenefitExpirationDate: String, WICBalances: [ { WICCategory: String, WICSubcategory: String, WICQuantity: 0 } ], 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 } } }