import Foundation
import ServiceStack
public class InitialisePaymentRequest : Codable
{
public var paymentType:PaymentTypeEnum
public var uuid:String
public var referenceNumber:String
public var amount:Double
public var currency:String
public var itemName:String
public var itemDescription:String
public var billingDate:Date
public var frequency:FrequencyEnum
public var cycles:Int
required public init(){}
}
public enum PaymentTypeEnum : Int, Codable
{
case OneTime = 1
case Recurring = 2
}
public enum FrequencyEnum : Int, Codable
{
case Daily = 1
case Weekly = 2
case Monthly = 3
case Quarterly = 4
case Biannually = 5
case Annually = 6
}
public class InitialisePaymentResponse : ResponseBase
{
public var transactionId:String
public var signature:String
public var url:String
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case transactionId
case signature
case url
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
transactionId = try container.decodeIfPresent(String.self, forKey: .transactionId)
signature = try container.decodeIfPresent(String.self, forKey: .signature)
url = try container.decodeIfPresent(String.self, forKey: .url)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if transactionId != nil { try container.encode(transactionId, forKey: .transactionId) }
if signature != nil { try container.encode(signature, forKey: .signature) }
if url != nil { try container.encode(url, forKey: .url) }
}
}
public class ResponseBase : Codable
{
public var status:Bool
public var message:String
public var errors:[String:[String]]
required public init(){}
}
Swift InitialisePaymentRequest DTOs
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 /xml/reply/InitialisePaymentRequest HTTP/1.1
Host: duengageapi.uat.scadsoftware.com
Accept: application/xml
Content-Type: application/xml
Content-Length: length
<InitialisePaymentRequest xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/digitaluapi.ServiceModel">
<Amount>0</Amount>
<BillingDate>0001-01-01T00:00:00</BillingDate>
<CampaignActionsRequestsId>0</CampaignActionsRequestsId>
<Currency>String</Currency>
<Cycles>0</Cycles>
<Frequency>Daily</Frequency>
<ItemDescription>String</ItemDescription>
<ItemName>String</ItemName>
<PaymentType>OneTime</PaymentType>
<ReferenceNumber>String</ReferenceNumber>
<Uuid>00000000-0000-0000-0000-000000000000</Uuid>
</InitialisePaymentRequest>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length
<InitialisePaymentResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/digitaluapi.ServiceModel">
<Errors xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d2p1:KeyValueOfstringArrayOfstringty7Ep6D1>
<d2p1:Key>String</d2p1:Key>
<d2p1:Value>
<d2p1:string>String</d2p1:string>
</d2p1:Value>
</d2p1:KeyValueOfstringArrayOfstringty7Ep6D1>
</Errors>
<Message>String</Message>
<Status>false</Status>
<Signature>String</Signature>
<TransactionId>String</TransactionId>
<Url>String</Url>
</InitialisePaymentResponse>