/* Options: Date: 2024-11-21 07:19:40 SwiftVersion: 5.0 Version: 6.10 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://api.paysecure.acculynk.net //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True IncludeTypes: POSCardlessRefundRequest.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/POSCardlessRefund", "POST") // @DataContract public class POSCardlessRefundRequest : IReturn, Codable { public typealias Return = POSCardlessRefund // @DataMember public var credentials:RequestorCredentials // @DataMember public var referenceKey:String // @DataMember public var originalReferenceKey:String // @DataMember public var amount:Int // @DataMember public var tid:String // @DataMember public var mid:String // @DataMember public var networkRequestData:NetworkRequestData /** * Local Date Format mmddyyyy. For Example:- 01202017 */ // @DataMember public var localDate:String /** * Local Time Format HHmmss. For Example :- 012322 */ // @DataMember public var localTime:String // @DataMember public var merchantDetails:MerchantDescriptor // @DataMember public var custom1:String // @DataMember public var custom2:String // @DataMember public var custom3:String // @DataMember public var custom4:String // @DataMember public var custom5:String // @DataMember public var signatureHash:String // @DataMember public var extendedData:ExtendedData required public init(){} } // @DataContract public class POSCardlessRefund : PaysecureResponseInternal { // @DataMember public var errorMessage:String // @DataMember public var errorCode:String // @DataMember public var tranId:String // @DataMember public var network:String // @DataMember public var responseCode:String // @DataMember public var networkResponseData:NetworkResponseData required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case errorMessage case errorCode case tranId case network case responseCode case networkResponseData } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) errorMessage = try container.decodeIfPresent(String.self, forKey: .errorMessage) errorCode = try container.decodeIfPresent(String.self, forKey: .errorCode) tranId = try container.decodeIfPresent(String.self, forKey: .tranId) network = try container.decodeIfPresent(String.self, forKey: .network) responseCode = try container.decodeIfPresent(String.self, forKey: .responseCode) networkResponseData = try container.decodeIfPresent(NetworkResponseData.self, forKey: .networkResponseData) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if errorMessage != nil { try container.encode(errorMessage, forKey: .errorMessage) } if errorCode != nil { try container.encode(errorCode, forKey: .errorCode) } if tranId != nil { try container.encode(tranId, forKey: .tranId) } if network != nil { try container.encode(network, forKey: .network) } if responseCode != nil { try container.encode(responseCode, forKey: .responseCode) } if networkResponseData != nil { try container.encode(networkResponseData, forKey: .networkResponseData) } } } public class RequestorCredentials : Codable { // @Required() public var merchantId:String? // @Required() public var userName:String? // @Required() public var password:String? // @Required() public var version:String? required public init(){} } public class MerchantDescriptor : MerchantDescriptorBase { public var name:String public var address:String public var city:String public var state:String public var zip:String public var country:String public var customerServiceNumber:String public var mcc:String public var fnSnum:String public var email:String required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case name case address case city case state case zip case country case customerServiceNumber case mcc case fnSnum case email } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) name = try container.decodeIfPresent(String.self, forKey: .name) address = try container.decodeIfPresent(String.self, forKey: .address) city = try container.decodeIfPresent(String.self, forKey: .city) state = try container.decodeIfPresent(String.self, forKey: .state) zip = try container.decodeIfPresent(String.self, forKey: .zip) country = try container.decodeIfPresent(String.self, forKey: .country) customerServiceNumber = try container.decodeIfPresent(String.self, forKey: .customerServiceNumber) mcc = try container.decodeIfPresent(String.self, forKey: .mcc) fnSnum = try container.decodeIfPresent(String.self, forKey: .fnSnum) email = try container.decodeIfPresent(String.self, forKey: .email) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if name != nil { try container.encode(name, forKey: .name) } if address != nil { try container.encode(address, forKey: .address) } if city != nil { try container.encode(city, forKey: .city) } if state != nil { try container.encode(state, forKey: .state) } if zip != nil { try container.encode(zip, forKey: .zip) } if country != nil { try container.encode(country, forKey: .country) } if customerServiceNumber != nil { try container.encode(customerServiceNumber, forKey: .customerServiceNumber) } if mcc != nil { try container.encode(mcc, forKey: .mcc) } if fnSnum != nil { try container.encode(fnSnum, forKey: .fnSnum) } if email != nil { try container.encode(email, forKey: .email) } } } // @DataContract public class ExtendedData : Codable { // @DataMember public var track2DataForEMVTransaction:String // @DataMember public var senderInfo:SenderInfo // @DataMember public var cashbackAmount:Int // @DataMember public var network:NetworkName // @DataMember public var receiverInfo:ReceiverInfo // @DataMember public var billPayGroup:BillPayGroup // @DataMember public var walletData:WalletDescriptor // @DataMember public var secureData:SecureDescriptor // @DataMember public var level2Data:Level2Descriptor // @DataMember public var paymentFacilitatorData:PaymentFacilitatorDescriptor // @DataMember public var tokenData:TokenDescriptor // @DataMember public var otpTranId:String // @DataMember public var currentShipment:Int // @DataMember public var totalShipments:Int // @DataMember public var isTokenRequested:Bool // @DataMember public var cardonFileIndicator:CardonFileIndicatorDescriptor // @DataMember public var cardAccountUpdater:CardAccountUpdaterInfo // @DataMember public var retryAttemptCount:Int // @DataMember public var totalAuthAmount:Int // @DataMember public var signatureHashVersion:String // @DataMember public var orderTypeDetail:OrderTypeInfo // @DataMember public var billPayGroupIndicator:BillPayGroupIndicator // @DataMember public var chargeTypeDetail:ChargeTypeInfo // @DataMember public var safEligible:SAFEligibleFlag required public init(){} } public class NetworkRequestData : Codable { public var aliPayPartnerId:String public var webHookURL:String public var orderTitle:String public var orderDetail:String public var terminalIP:String public var orderNumber:String required public init(){} } // @DataContract public class RequestTimestamps : Codable { // @DataMember(EmitDefaultValue=false) public var appLayer:InOutTimes // @DataMember(EmitDefaultValue=false) public var parentLookup:InOutTimes // @DataMember(EmitDefaultValue=false) public var retryLookup:InOutTimes // @DataMember(EmitDefaultValue=false) public var getCardData:InOutTimes // @DataMember(EmitDefaultValue=false) public var cardTokenize:InOutTimes // @DataMember(EmitDefaultValue=false) public var cardEncrypt:InOutTimes // @DataMember(EmitDefaultValue=false) public var dbInsert:InOutTimes // @DataMember(EmitDefaultValue=false) public var backendProcess:InOutTimes // @DataMember(EmitDefaultValue=false) public var dbUpdate:InOutTimes // @DataMember(EmitDefaultValue=false) public var parentUpdate:InOutTimes // @DataMember(EmitDefaultValue=false) public var network:InOutTimes required public init(){} } // @DataContract public class PaysecureResponseInternal : Codable { // @DataMember(EmitDefaultValue=false) public var timestamps:RequestTimestamps required public init(){} } public class NetworkResponseData : Codable { public var aliPayTransId:String public var aliPayTransactionTime:String public var responseCode:String public var weChatPayTransId:String public var weChatPayTransactionTime:String public var weChatPayOpenId:String required public init(){} } public class MerchantDataElements : Codable { public var refundSettlementTypeDetails:Int public var sendRecurringPOSEntryModeFeature:Bool public var useOrgPOSCode:Bool required public init(){} } public class MerchantDescriptorBase : Codable { public var dataElements:MerchantDataElements required public init(){} } public class SenderInfo : Codable { public var referenceNumber:String public var accountNumber:String /** * Name Format FirstName{Space}LastName. For Example :- Alvaro Morata */ public var name:String public var address:String public var city:String public var state:String public var country:String /** * DateOfBirth Format MMDDYYYY. For Example :- 05051960 */ public var dateOfBirth:String public var zip:String public var phoneNumber:String public var fundingSource:FundingSourceType required public init(){} } public enum NetworkName : String, Codable { case Default case NYCE case CU24 case XCEL case STAR case PULS case SHZM case VISA case MAST case DISC case AMEX case ALIP case UPIN case STAC case STNE case MAES case INTL } public class ReceiverInfo : Codable { public var referenceNumber:String public var accountNumber:String /** * Name Format FirstName{Space}LastName. For Example :- Alvaro Morata */ public var name:String public var address:String public var city:String public var state:String public var country:String public var zip:String public var phoneNumber:String required public init(){} } public enum BillPayGroup : String, Codable { case Default case Single case Recurring case Installment case Deferred } public class WalletDescriptor : Codable { public var type:String public var encryptedData:String public var applicationDataHash:String public var ephemeralPublicKey:String public var publicKeyHash:String public var transactionId:String public var signature:String public var version:String public var applicationData:String public var merchantIdentifier:String public var specialPayment:String public var digitalWalletIndicator:DigitalWalletInfo required public init(){} } public class SecureDescriptor : Codable { public var cavv:String public var secureTransactionId:String required public init(){} } public class Level2Descriptor : Codable { public var taxDetails:TaxIndicator public var merchantReferenceNumber:String public var merchantTaxId:String public var orderNumber:String public var taxAmount:Int public var destinationPostalCode:String public var productDescription:String required public init(){} } public class PaymentFacilitatorDescriptor : Codable { public var paymentFacilitatorIndicator:String public var pfPhoneNumber:String public var subMerchID:String public var sellerID:String required public init(){} } public class TokenDescriptor : Codable { public var tokenType:TokenTypes public var tokenCryptogramData1:String public var tokenCryptogramData2:String required public init(){} } public class CardonFileIndicatorDescriptor : Codable { public var cardonFile:CardonFileInfo public var storedCredentialIndicator:StoredCredentialIndicatorInfo public var transactionInitiate:TransactionInitiateInfo public var scheduleIndicator:ScheduleIndicatorInfo public var networkTransactionId:String required public init(){} } public enum CardAccountUpdaterInfo : String, Codable { case Default case Supported case NotSupported } public enum OrderTypeInfo : String, Codable { case Default case Standing case Subscription } public class BillPayGroupIndicator : Codable { public var mitTotalPaymentCount:String public var mitAmountType:String public var mitAmount:String public var mitUniqueID:String public var mitFrequency:String public var mitValidationFlag:String public var mitValidationReference:String public var mitSequenceIndicator:String required public init(){} } public enum ChargeTypeInfo : String, Codable { case Default case PartialShipment case Delayed case NoShow case Resubmission } public enum SAFEligibleFlag : String, Codable { case Default case True case False } // @DataContract public class InOutTimes : Codable { required public init(){} } public enum FundingSourceType : String, Codable { case DepositAccount case Credit case Debit case Prepaid } public enum DigitalWalletInfo : String, Codable { case Default case Staged case Passthrough } public enum TaxIndicator : String, Codable { case Default case NoTaxInfoProvided case TaxInfoProvided case TaxExemptItem } public enum TokenTypes : String, Codable { case Default case UCAF case DSRP case UCAFDSRP case VisaVerified case DigitalWallet case VisaVerifiedDigitalWallet } public enum CardonFileInfo : String, Codable { case Default case Supported case NotSupported } public enum StoredCredentialIndicatorInfo : String, Codable { case Default case Initial case Subsequent } public enum TransactionInitiateInfo : String, Codable { case Default case Merchant case Terminal case Customer } public enum ScheduleIndicatorInfo : String, Codable { case Default case Scheduled case Unscheduled }