POST | /OrderBoarding |
---|
import Foundation
import ServiceStack
public class OrderBoardingRequest : Codable
{
// @ApiMember(IsRequired=true)
public var correlationId:String?
// @ApiMember(IsRequired=true)
public var orderJson:Order?
public var onboardingRequestId:String?
public var localEnterpriseId:String?
public var audience:String?
required public init(){}
}
public class Order : Codable
{
public var meta:OrderMeta?
public var payload:OrderPayload?
required public init(){}
}
public class OrderMeta : Codable
{
public var sourceSystem:String?
public var sourceSystemIdentifier:String?
public var csr:String?
public var ultimateParentId:String?
public var orderType:String?
public var customerType:String?
public var partner:Partner?
public var sellerCode:String?
public var sellerEmail:String?
public var specialInstructions:String?
public var contact:AuthorisedSigner?
public var offerDetails:String?
public var dateContractAccepted:Date?
public var worldpayBusinessFinanceInterest:Bool?
public var sar:Bool?
public var hasSupportingFiles:Bool?
required public init(){}
}
public class Partner : Codable
{
public var partnerName:String?
public var partnerId:String?
required public init(){}
}
public class AuthorisedSigner : Contact
{
public var dateOfBirth:Date?
public var countryCode:String?
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case dateOfBirth
case countryCode
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
dateOfBirth = try container.decodeIfPresent(Date.self, forKey: .dateOfBirth)
countryCode = try container.decodeIfPresent(String.self, forKey: .countryCode)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if dateOfBirth != nil { try container.encode(dateOfBirth, forKey: .dateOfBirth) }
if countryCode != nil { try container.encode(countryCode, forKey: .countryCode) }
}
}
public class Contact : Person
{
public var idpGuid:String?
public var telephoneNumber:String?
public var altTelephoneNumber:String?
public var email:String?
public var position:String?
public var preferredContactMethod:String?
public var preferredContactBestTime:String?
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case idpGuid
case telephoneNumber
case altTelephoneNumber
case email
case position
case preferredContactMethod
case preferredContactBestTime
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
idpGuid = try container.decodeIfPresent(String.self, forKey: .idpGuid)
telephoneNumber = try container.decodeIfPresent(String.self, forKey: .telephoneNumber)
altTelephoneNumber = try container.decodeIfPresent(String.self, forKey: .altTelephoneNumber)
email = try container.decodeIfPresent(String.self, forKey: .email)
position = try container.decodeIfPresent(String.self, forKey: .position)
preferredContactMethod = try container.decodeIfPresent(String.self, forKey: .preferredContactMethod)
preferredContactBestTime = try container.decodeIfPresent(String.self, forKey: .preferredContactBestTime)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if idpGuid != nil { try container.encode(idpGuid, forKey: .idpGuid) }
if telephoneNumber != nil { try container.encode(telephoneNumber, forKey: .telephoneNumber) }
if altTelephoneNumber != nil { try container.encode(altTelephoneNumber, forKey: .altTelephoneNumber) }
if email != nil { try container.encode(email, forKey: .email) }
if position != nil { try container.encode(position, forKey: .position) }
if preferredContactMethod != nil { try container.encode(preferredContactMethod, forKey: .preferredContactMethod) }
if preferredContactBestTime != nil { try container.encode(preferredContactBestTime, forKey: .preferredContactBestTime) }
}
}
public class Person : Codable
{
public var title:String?
public var firstName:String?
public var middleName:String?
public var lastName:String?
required public init(){}
}
public class OrderPayload : Codable
{
public var partyId:String?
public var parentPartyId:String?
public var legalName:String?
public var tradingName:String?
public var addresses:[MerchantAddress] = []
public var tradingContact:Contact?
public var invoiceContact:InvoiceContact?
public var settlementBankAccount:BankAccount?
public var chargesBankAccount:BankAccount?
public var directDebitCorrespondenceEmail:String?
public var websiteAddress:String?
public var companyType:String?
public var companyTypeOther:String?
public var companyRegistrationNumber:String?
public var charityNumber:String?
public var merchantCategories:[MerchantCategory] = []
public var vatNumber:String?
public var dateStartedTrading:Date?
public var anticipatedGoLiveDate:Date?
public var countryOfIncorporation:String?
public var regionOfIncorporation:String?
public var financials:Financials?
public var newToCards:Bool?
public var tradeAssociation:TradeAssociation?
public var principals:[Principal] = []
public var goodsAndServices:GoodsAndServices?
public var accessibilityOptions:AccessibilityOptions?
public var clearingDetails:ClearingDetails?
public var acquiring:Acquiring?
public var subscriptions:[Subscription] = []
public var children:[OrderPayload] = []
required public init(){}
}
public class MerchantAddress : Address
{
public var addressType:String?
public var isCommercial:Bool?
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case addressType
case isCommercial
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
addressType = try container.decodeIfPresent(String.self, forKey: .addressType)
isCommercial = try container.decodeIfPresent(Bool.self, forKey: .isCommercial)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if addressType != nil { try container.encode(addressType, forKey: .addressType) }
if isCommercial != nil { try container.encode(isCommercial, forKey: .isCommercial) }
}
}
public class Address : Codable
{
public var address1:String?
public var address2:String?
public var address3:String?
public var postcode:String?
public var city:String?
public var state:String?
public var countryCode:String?
required public init(){}
}
public class InvoiceContact : Person
{
public var email:String?
public var position:String?
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case email
case position
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
email = try container.decodeIfPresent(String.self, forKey: .email)
position = try container.decodeIfPresent(String.self, forKey: .position)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if email != nil { try container.encode(email, forKey: .email) }
if position != nil { try container.encode(position, forKey: .position) }
}
}
public class BankAccount : Codable
{
public var sortCode:String?
public var accountNumber:String?
public var bankName:String?
public var bankAccountName:String?
public var swiftCode:String?
public var internationalBankAccountNumber:String?
required public init(){}
}
public class MerchantCategory : Codable
{
public var merchantCategoryCode:String?
public var merchantCategoryDescription:String?
public var descriptionOfGoodsAndServices:String?
required public init(){}
}
public class Financials : Codable
{
public var annual:Double?
public var cardPercentage:Double?
public var creditCardPercentage:Double?
public var averageTransactionValue:Double?
public var cardNotPresentPercentage:Double?
required public init(){}
}
public class TradeAssociation : Codable
{
public var groupName:String?
public var memberNumber:String?
required public init(){}
}
public class Principal : Codable
{
public var title:String?
public var firstName:String?
public var middleName:String?
public var lastName:String?
public var dateOfBirth:Date?
public var nationality:String?
public var homeAddresses:[PrincipalAddress] = []
public var ownershipPercentage:Double?
public var position:PositionType?
public var isFinancialController:Bool?
required public init(){}
}
public class PrincipalAddress : Address
{
public var startDate:Date?
public var endDate:Date?
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case startDate
case endDate
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
startDate = try container.decodeIfPresent(Date.self, forKey: .startDate)
endDate = try container.decodeIfPresent(Date.self, forKey: .endDate)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if startDate != nil { try container.encode(startDate, forKey: .startDate) }
if endDate != nil { try container.encode(endDate, forKey: .endDate) }
}
}
public class Address : Codable
{
public var address1:String?
public var address2:String?
public var address3:String?
public var postcode:String?
public var city:String?
public var state:String?
public var countrycode:String?
required public init(){}
}
public enum PositionType : Int, Codable
{
case SoleTrader = 0
case Partner = 1
case Director = 2
case CompanySecretary = 3
case ChiefFinancialOfficer = 4
case Chairman = 5
case DesignatedBoardMember = 7
case Settlor = 8
case Treasurer = 9
case Trustee = 10
case ChiefExecutive = 11
case AuthorisedPersonWithConsent = 12
case NonExecutiveDirector = 13
case ContactPerson = 14
case Shareholder = 15
}
public class GoodsAndServices : Codable
{
public var goodsProvidedByThirdParty:Bool?
public var deposits:Deposits?
public var warrantiesAndGuarantees:WarrantiesAndGuarantees?
public var prepayments:Prepayments?
public var membershipsSubscriptionAndInsurancePremiums:MembershipsSubscriptionAndInsurancePremiums?
public var stockHeldAtAnotherAddressLocation:Address?
required public init(){}
}
public class Deposits : Codable
{
public var perOfSalesWhereInitialDepositTaken:Int?
public var sizePerTotalValue:Int?
public var avgTimeBeforeDeliveryDepositTaken:Int?
public var avgTimeBeforeDeliveryBalanceTaken:Int?
required public init(){}
}
public class WarrantiesAndGuarantees : Codable
{
public var percCardTurnover:Int?
public var avgLengthInMonths:Int?
public var percGoodsReturned:Int?
public var thirdPartyProviders:String?
required public init(){}
}
public class Prepayments : Codable
{
public var percGoodsWherePaymentTakenPriorToDelivery:Int?
public var avgDaysPaymentTakenInAdvance:Int?
required public init(){}
}
public class MembershipsSubscriptionAndInsurancePremiums : Codable
{
public var percCardTurnover:Int?
public var avgLengthInMonths:Int?
public var membershipCost:Double?
required public init(){}
}
public class AccessibilityOptions : Codable
{
public var audiotapeRequired:Bool?
public var largePrintRequired:Bool?
public var uncontractedBrailleGrade1Required:Bool?
public var uncontractedBrailleGrade2Required:Bool?
public var nextGenerationTextRequired:Bool?
required public init(){}
}
public class ClearingDetails : Codable
{
public var merchantUrl:String?
public var telephone:String?
public var email:String?
required public init(){}
}
public class Acquiring : Codable
{
public var settlementPeriod:Int?
public var fundingMode:String?
public var rates:Rates?
public var tradingCurrencies:[TradingCurrency] = []
required public init(){}
}
public class Rates : Codable
{
public var cardCharges:[CardCharge] = []
public var premiumTransactionCharges:[PremiumTransactionCharge] = []
public var additionalTariffs:[AdditionalTariff] = []
required public init(){}
}
public class CardCharge : Codable
{
public var cardType:CardType?
public var purchase:RateChargePair?
public var refund:RateChargePair?
required public init(){}
}
public enum CardType : String, Codable
{
case VisaDebit
case VisaCredit
case VisaCommercial
case MastercardDebit
case MastercardCredit
case MastercardCommercial
case MastercardWorldSignia
case JcbCredit
case JcbDebit
case JcbCommercial
case DinersDiscoverCredit
case DinersDiscoverDebit
case DinersDiscoverCommercial
case Amex
case ChinaUnionPayCredit
case ChinaUnionPayDebit
case ChinaUnionPayCommercial
case VisaBusinessDebit
case MastercardBusiness
}
public class RateChargePair : Codable
{
public var percent:Double?
public var cost:Double?
required public init(){}
}
public class PremiumTransactionCharge : Codable
{
public var type:PremiumTransactionChargeType?
public var creditCard:RateChargePair?
public var debitCard:RateChargePair?
required public init(){}
}
public enum PremiumTransactionChargeType : String, Codable
{
case Magstripe
case CnpMoto
case Paper
case PanKeyEntry
case SecureEcom
case NonSecureEcom
case InterRegional
case IntraRegional
case NonAuth
}
public class AdditionalTariff : Codable
{
public var type:String?
public var cost:Double?
required public init(){}
}
public class TradingCurrency : Codable
{
public var transactionCurrencies:[CurrencyCodeType] = []
public var settlementCurrency:CurrencyCodeType?
public var settlementBankSwift:String?
public var settlementBankIban:String?
required public init(){}
}
public enum CurrencyCodeType : String, Codable
{
case GBP
case EUR
case USD
case AED
case AFN
case ALL
case AMD
case ANG
case AOA
case ARS
case AUD
case AWG
case AZN
case BAM
case BBD
case BDT
case BGN
case BHD
case BIF
case BMD
case BND
case BOB
case BRL
case BSD
case BTN
case BWP
case BYR
case BZD
case CAD
case CDF
case CHF
case CLP
case CNY
case COP
case COU
case CRC
case CUC
case CUP
case CVE
case CZK
case DJF
case DKK
case DOP
case DZD
case EEK
case EGP
case ERN
case ETB
case FJD
case FKP
case GEL
case GHS
case GIP
case GMD
case GNF
case GTQ
case GYD
case HKD
case HNL
case HRK
case HTG
case HUF
case IDR
case ILS
case INR
case IQD
case IRR
case ISK
case JMD
case JOD
case JPY
case KES
case KGS
case KHR
case KMF
case KPW
case KRW
case KWD
case KYD
case KZT
case LAK
case LBP
case LKR
case LRD
case LSL
case LTL
case LVL
case LYD
case MAD
case MDL
case MGA
case MKD
case MMK
case MNT
case MOP
case MRO
case MUR
case MVR
case MWK
case MXN
case MYR
case MZN
case NAD
case NGN
case NIO
case NOK
case NPR
case NZD
case OMR
case PAB
case PEN
case PGK
case PHP
case PKR
case PLN
case PYG
case QAR
case RON
case RSD
case RUB
case RWF
case SAR
case SBD
case SCR
case SDG
case SEK
case SGD
case SHP
case SLL
case SOS
case SRD
case STD
case SYP
case SZL
case THB
case TJS
case TMT
case TND
case TOP
case TRY
case TTD
case TWD
case TZS
case UAH
case UGX
case UYU
case UZS
case VEF
case VND
case VUV
case WST
case YER
case ZAR
case ZMK
case ZWL
}
public class Subscription : Codable
{
public var proposition:String?
public var pricingPackage:String?
public var term:Int?
public var renewalLength:Int?
public var acquiring:Acquiring?
public var products:[Product] = []
required public init(){}
}
public class Product : Codable
{
public var name:String?
public var type:String?
public var variant:String?
public var quantity:Int?
public var relatedFees:[ProductFee] = []
public var options:[ProductOption] = []
required public init(){}
}
public class ProductFee : Codable
{
public var type:ProductFeeType?
public var cost:Double?
required public init(){}
}
public enum ProductFeeType : String, Codable
{
case HireCost
case TransactionCost
case ServiceFee
case ManagedServiceSetup
case ManagedServiceMonthly
}
public class ProductOption : Codable
{
public var type:String?
public var value:String?
required public init(){}
}
public class InitiateBoardingResponse : Codable
{
public var applicationGuid:String?
public var csr:Int?
public var applicationQueueGuid:String?
public var queueStatus:ApplicationQueueStatus?
public var boardingStatus:ApplicationBoardingStatus?
public var errorMessages:[String] = []
required public init(){}
}
// @DataContract
public enum ApplicationQueueStatus : Int, Codable
{
case Queued = 0
case StandardisedXML = 20
case ReadyToDistribute = 40
case AwaitingDistributeResponse = 60
case ReadyToAutoboard = 80
case ThrottleCheckPassed = 100
case EligibilityCheckPassed = 300
case SentToAutoboardService = 400
case AutoboardingSuspended = 450
case SuccessfullyBoarded = 500
case QueueError = 1000
case ThrottleCheckError = 1100
case XMLStandardisationError = 1200
case EligibilityCheckError = 1300
case AutoboardingError = 1400
case IneligibleThrottleLimit = 2100
case IneligibleApplication = 2300
}
// @DataContract
public enum ApplicationBoardingStatus : Int, Codable
{
case PENDING = 0
case IN_PROGRESS = 5
case FAILED = 9
case COMPLETED = 10
}
Swift OrderBoardingRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .json suffix or ?format=json
To embed the response in a jsonp callback, append ?callback=myCallback
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /OrderBoarding HTTP/1.1
Host: abservice-test.worldpay.com
Accept: application/json
Content-Type: application/json
Content-Length: length
{"correlationId":"00000000000000000000000000000000","orderJson":{"meta":{"sourceSystem":"String","sourceSystemIdentifier":"String","csr":"String","ultimateParentId":"String","orderType":"String","customerType":"String","partner":{"partnerName":"String","partnerId":"String"},"sellerCode":"String","sellerEmail":"String","specialInstructions":"String","contact":{"dateOfBirth":"\/Date(-62135596800000-0000)\/","countryCode":"String","idpGuid":"00000000000000000000000000000000","telephoneNumber":"String","altTelephoneNumber":"String","email":"String","position":"String","preferredContactMethod":"String","preferredContactBestTime":"String","title":"String","firstName":"String","middleName":"String","lastName":"String"},"offerDetails":"String","dateContractAccepted":"\/Date(-62135596800000-0000)\/","worldpayBusinessFinanceInterest":false,"sar":false,"hasSupportingFiles":false},"payload":{"partyId":"String","parentPartyId":"String","legalName":"String","tradingName":"String","tradingContact":{"idpGuid":"00000000000000000000000000000000","telephoneNumber":"String","altTelephoneNumber":"String","email":"String","position":"String","preferredContactMethod":"String","preferredContactBestTime":"String","title":"String","firstName":"String","middleName":"String","lastName":"String"},"invoiceContact":{"email":"String","position":"String","title":"String","firstName":"String","middleName":"String","lastName":"String"},"settlementBankAccount":{"sortCode":"String","accountNumber":"String","bankName":"String","bankAccountName":"String","swiftCode":"String","internationalBankAccountNumber":"String"},"chargesBankAccount":{"sortCode":"String","accountNumber":"String","bankName":"String","bankAccountName":"String","swiftCode":"String","internationalBankAccountNumber":"String"},"directDebitCorrespondenceEmail":"String","websiteAddress":"String","companyType":"String","companyTypeOther":"String","companyRegistrationNumber":"String","charityNumber":"String","vatNumber":"String","dateStartedTrading":"\/Date(-62135596800000-0000)\/","anticipatedGoLiveDate":"\/Date(-62135596800000-0000)\/","countryOfIncorporation":"String","regionOfIncorporation":"String","financials":{"annual":0,"cardPercentage":0,"creditCardPercentage":0,"averageTransactionValue":0,"cardNotPresentPercentage":0},"newToCards":false,"tradeAssociation":{"groupName":"String","memberNumber":"String"},"goodsAndServices":{"goodsProvidedByThirdParty":false,"deposits":{"perOfSalesWhereInitialDepositTaken":0,"sizePerTotalValue":0,"avgTimeBeforeDeliveryDepositTaken":0,"avgTimeBeforeDeliveryBalanceTaken":0},"warrantiesAndGuarantees":{"percCardTurnover":0,"avgLengthInMonths":0,"percGoodsReturned":0,"thirdPartyProviders":"String"},"prepayments":{"percGoodsWherePaymentTakenPriorToDelivery":0,"avgDaysPaymentTakenInAdvance":0},"membershipsSubscriptionAndInsurancePremiums":{"percCardTurnover":0,"avgLengthInMonths":0,"membershipCost":0},"stockHeldAtAnotherAddressLocation":{"address1":"String","address2":"String","address3":"String","postcode":"String","city":"String","state":"String","countryCode":"String"}},"accessibilityOptions":{"audiotapeRequired":false,"largePrintRequired":false,"uncontractedBrailleGrade1Required":false,"uncontractedBrailleGrade2Required":false,"nextGenerationTextRequired":false},"clearingDetails":{"merchantUrl":"String","telephone":"String","email":"String"},"acquiring":{"settlementPeriod":0,"fundingMode":"String","rates":{}}}},"onboardingRequestId":"00000000000000000000000000000000","localEnterpriseId":"00000000000000000000000000000000","audience":"String"}
HTTP/1.1 200 OK Content-Type: application/json Content-Length: length {"applicationGuid":"00000000000000000000000000000000","csr":0,"applicationQueueGuid":"00000000000000000000000000000000","queueStatus":"Queued","boardingStatus":"PENDING","errorMessages":["String"]}