POST | /allchecks/submit/order |
---|
import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class StandardOrderResponse:
status: Optional[int] = None
correlation_id: Optional[str] = None
message: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Partner:
partner_name: Optional[str] = None
partner_id: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Person:
title: Optional[str] = None
first_name: Optional[str] = None
middle_name: Optional[str] = None
last_name: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Contact(Person):
idp_guid: Optional[str] = None
telephone_number: Optional[str] = None
alt_telephone_number: Optional[str] = None
email: Optional[str] = None
position: Optional[str] = None
preferred_contact_method: Optional[str] = None
preferred_contact_best_time: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AuthorisedSigner(Contact):
date_of_birth: Optional[datetime.datetime] = None
country_code: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class OrderMeta:
source_system: Optional[str] = None
source_system_identifier: Optional[str] = None
csr: Optional[str] = None
ultimate_parent_id: Optional[str] = None
order_type: Optional[str] = None
customer_type: Optional[str] = None
partner: Optional[Partner] = None
seller_code: Optional[str] = None
seller_email: Optional[str] = None
special_instructions: Optional[str] = None
contact: Optional[AuthorisedSigner] = None
offer_details: Optional[str] = None
date_contract_accepted: Optional[datetime.datetime] = None
worldpay_business_finance_interest: Optional[bool] = None
sar: Optional[bool] = None
has_supporting_files: Optional[bool] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Address:
address1: Optional[str] = None
address2: Optional[str] = None
address3: Optional[str] = None
postcode: Optional[str] = None
city: Optional[str] = None
state: Optional[str] = None
countrycode: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class MerchantAddress(Address):
address_type: Optional[str] = None
is_commercial: Optional[bool] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class InvoiceContact(Person):
email: Optional[str] = None
position: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BankAccount:
sort_code: Optional[str] = None
account_number: Optional[str] = None
bank_name: Optional[str] = None
bank_account_name: Optional[str] = None
swift_code: Optional[str] = None
international_bank_account_number: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class MerchantCategory:
merchant_category_code: Optional[str] = None
merchant_category_description: Optional[str] = None
description_of_goods_and_services: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Financials:
annual: Optional[Decimal] = None
card_percentage: Optional[Decimal] = None
credit_card_percentage: Optional[Decimal] = None
average_transaction_value: Optional[Decimal] = None
card_not_present_percentage: Optional[Decimal] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TradeAssociation:
group_name: Optional[str] = None
member_number: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PrincipalAddress(Address):
start_date: Optional[datetime.datetime] = None
end_date: Optional[datetime.datetime] = None
class PositionType(IntEnum):
SOLE_TRADER = 0
PARTNER = 1
DIRECTOR = 2
COMPANY_SECRETARY = 3
CHIEF_FINANCIAL_OFFICER = 4
CHAIRMAN = 5
DESIGNATED_BOARD_MEMBER = 7
SETTLOR = 8
TREASURER = 9
TRUSTEE = 10
CHIEF_EXECUTIVE = 11
AUTHORISED_PERSON_WITH_CONSENT = 12
NON_EXECUTIVE_DIRECTOR = 13
CONTACT_PERSON = 14
SHAREHOLDER = 15
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Principal:
title: Optional[str] = None
first_name: Optional[str] = None
middle_name: Optional[str] = None
last_name: Optional[str] = None
date_of_birth: Optional[datetime.datetime] = None
nationality: Optional[str] = None
home_addresses: Optional[List[PrincipalAddress]] = None
ownership_percentage: Optional[Decimal] = None
position: Optional[PositionType] = None
is_financial_controller: Optional[bool] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Deposits:
per_of_sales_where_initial_deposit_taken: Optional[int] = None
size_per_total_value: Optional[int] = None
avg_time_before_delivery_deposit_taken: Optional[int] = None
avg_time_before_delivery_balance_taken: Optional[int] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class WarrantiesAndGuarantees:
perc_card_turnover: Optional[int] = None
avg_length_in_months: Optional[int] = None
perc_goods_returned: Optional[int] = None
third_party_providers: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Prepayments:
perc_goods_where_payment_taken_prior_to_delivery: Optional[int] = None
avg_days_payment_taken_in_advance: Optional[int] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class MembershipsSubscriptionAndInsurancePremiums:
perc_card_turnover: Optional[int] = None
avg_length_in_months: Optional[int] = None
membership_cost: Optional[Decimal] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class GoodsAndServices:
goods_provided_by_third_party: Optional[bool] = None
deposits: Optional[Deposits] = None
warranties_and_guarantees: Optional[WarrantiesAndGuarantees] = None
prepayments: Optional[Prepayments] = None
memberships_subscription_and_insurance_premiums: Optional[MembershipsSubscriptionAndInsurancePremiums] = None
stock_held_at_another_address_location: Optional[Address] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AccessibilityOptions:
audiotape_required: Optional[bool] = None
large_print_required: Optional[bool] = None
uncontracted_braille_grade1_required: Optional[bool] = None
uncontracted_braille_grade2_required: Optional[bool] = None
next_generation_text_required: Optional[bool] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ClearingDetails:
merchant_url: Optional[str] = None
telephone: Optional[str] = None
email: Optional[str] = None
class CardType(str, Enum):
VISA_DEBIT = 'VisaDebit'
VISA_CREDIT = 'VisaCredit'
VISA_COMMERCIAL = 'VisaCommercial'
MASTERCARD_DEBIT = 'MastercardDebit'
MASTERCARD_CREDIT = 'MastercardCredit'
MASTERCARD_COMMERCIAL = 'MastercardCommercial'
MASTERCARD_WORLD_SIGNIA = 'MastercardWorldSignia'
JCB_CREDIT = 'JcbCredit'
JCB_DEBIT = 'JcbDebit'
JCB_COMMERCIAL = 'JcbCommercial'
DINERS_DISCOVER_CREDIT = 'DinersDiscoverCredit'
DINERS_DISCOVER_DEBIT = 'DinersDiscoverDebit'
DINERS_DISCOVER_COMMERCIAL = 'DinersDiscoverCommercial'
AMEX = 'Amex'
CHINA_UNION_PAY_CREDIT = 'ChinaUnionPayCredit'
CHINA_UNION_PAY_DEBIT = 'ChinaUnionPayDebit'
CHINA_UNION_PAY_COMMERCIAL = 'ChinaUnionPayCommercial'
VISA_BUSINESS_DEBIT = 'VisaBusinessDebit'
MASTERCARD_BUSINESS = 'MastercardBusiness'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RateChargePair:
percent: Optional[Decimal] = None
cost: Optional[Decimal] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CardCharge:
card_type: Optional[CardType] = None
purchase: Optional[RateChargePair] = None
refund: Optional[RateChargePair] = None
class PremiumTransactionChargeType(str, Enum):
MAGSTRIPE = 'Magstripe'
CNP_MOTO = 'CnpMoto'
PAPER = 'Paper'
PAN_KEY_ENTRY = 'PanKeyEntry'
SECURE_ECOM = 'SecureEcom'
NON_SECURE_ECOM = 'NonSecureEcom'
INTER_REGIONAL = 'InterRegional'
INTRA_REGIONAL = 'IntraRegional'
NON_AUTH = 'NonAuth'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PremiumTransactionCharge:
type: Optional[PremiumTransactionChargeType] = None
credit_card: Optional[RateChargePair] = None
debit_card: Optional[RateChargePair] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AdditionalTariff:
type: Optional[str] = None
cost: Optional[Decimal] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Rates:
card_charges: Optional[List[CardCharge]] = None
premium_transaction_charges: Optional[List[PremiumTransactionCharge]] = None
additional_tariffs: Optional[List[AdditionalTariff]] = None
class CurrencyCodeType(str, Enum):
GBP = 'GBP'
EUR = 'EUR'
USD = 'USD'
AED = 'AED'
AFN = 'AFN'
ALL = 'ALL'
AMD = 'AMD'
ANG = 'ANG'
AOA = 'AOA'
ARS = 'ARS'
AUD = 'AUD'
AWG = 'AWG'
AZN = 'AZN'
BAM = 'BAM'
BBD = 'BBD'
BDT = 'BDT'
BGN = 'BGN'
BHD = 'BHD'
BIF = 'BIF'
BMD = 'BMD'
BND = 'BND'
BOB = 'BOB'
BRL = 'BRL'
BSD = 'BSD'
BTN = 'BTN'
BWP = 'BWP'
BYR = 'BYR'
BZD = 'BZD'
CAD = 'CAD'
CDF = 'CDF'
CHF = 'CHF'
CLP = 'CLP'
CNY = 'CNY'
COP = 'COP'
COU = 'COU'
CRC = 'CRC'
CUC = 'CUC'
CUP = 'CUP'
CVE = 'CVE'
CZK = 'CZK'
DJF = 'DJF'
DKK = 'DKK'
DOP = 'DOP'
DZD = 'DZD'
EEK = 'EEK'
EGP = 'EGP'
ERN = 'ERN'
ETB = 'ETB'
FJD = 'FJD'
FKP = 'FKP'
GEL = 'GEL'
GHS = 'GHS'
GIP = 'GIP'
GMD = 'GMD'
GNF = 'GNF'
GTQ = 'GTQ'
GYD = 'GYD'
HKD = 'HKD'
HNL = 'HNL'
HRK = 'HRK'
HTG = 'HTG'
HUF = 'HUF'
IDR = 'IDR'
ILS = 'ILS'
INR = 'INR'
IQD = 'IQD'
IRR = 'IRR'
ISK = 'ISK'
JMD = 'JMD'
JOD = 'JOD'
JPY = 'JPY'
KES = 'KES'
KGS = 'KGS'
KHR = 'KHR'
KMF = 'KMF'
KPW = 'KPW'
KRW = 'KRW'
KWD = 'KWD'
KYD = 'KYD'
KZT = 'KZT'
LAK = 'LAK'
LBP = 'LBP'
LKR = 'LKR'
LRD = 'LRD'
LSL = 'LSL'
LTL = 'LTL'
LVL = 'LVL'
LYD = 'LYD'
MAD = 'MAD'
MDL = 'MDL'
MGA = 'MGA'
MKD = 'MKD'
MMK = 'MMK'
MNT = 'MNT'
MOP = 'MOP'
MRO = 'MRO'
MUR = 'MUR'
MVR = 'MVR'
MWK = 'MWK'
MXN = 'MXN'
MYR = 'MYR'
MZN = 'MZN'
NAD = 'NAD'
NGN = 'NGN'
NIO = 'NIO'
NOK = 'NOK'
NPR = 'NPR'
NZD = 'NZD'
OMR = 'OMR'
PAB = 'PAB'
PEN = 'PEN'
PGK = 'PGK'
PHP = 'PHP'
PKR = 'PKR'
PLN = 'PLN'
PYG = 'PYG'
QAR = 'QAR'
RON = 'RON'
RSD = 'RSD'
RUB = 'RUB'
RWF = 'RWF'
SAR = 'SAR'
SBD = 'SBD'
SCR = 'SCR'
SDG = 'SDG'
SEK = 'SEK'
SGD = 'SGD'
SHP = 'SHP'
SLL = 'SLL'
SOS = 'SOS'
SRD = 'SRD'
STD = 'STD'
SYP = 'SYP'
SZL = 'SZL'
THB = 'THB'
TJS = 'TJS'
TMT = 'TMT'
TND = 'TND'
TOP = 'TOP'
TRY_ = 'TRY'
TTD = 'TTD'
TWD = 'TWD'
TZS = 'TZS'
UAH = 'UAH'
UGX = 'UGX'
UYU = 'UYU'
UZS = 'UZS'
VEF = 'VEF'
VND = 'VND'
VUV = 'VUV'
WST = 'WST'
YER = 'YER'
ZAR = 'ZAR'
ZMK = 'ZMK'
ZWL = 'ZWL'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TradingCurrency:
transaction_currencies: Optional[List[CurrencyCodeType]] = None
settlement_currency: Optional[CurrencyCodeType] = None
settlement_bank_swift: Optional[str] = None
settlement_bank_iban: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Acquiring:
settlement_period: Optional[int] = None
funding_mode: Optional[str] = None
rates: Optional[Rates] = None
trading_currencies: Optional[List[TradingCurrency]] = None
class ProductFeeType(str, Enum):
HIRE_COST = 'HireCost'
TRANSACTION_COST = 'TransactionCost'
SERVICE_FEE = 'ServiceFee'
MANAGED_SERVICE_SETUP = 'ManagedServiceSetup'
MANAGED_SERVICE_MONTHLY = 'ManagedServiceMonthly'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ProductFee:
type: Optional[ProductFeeType] = None
cost: Optional[Decimal] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ProductOption:
type: Optional[str] = None
value: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Product:
name: Optional[str] = None
type: Optional[str] = None
variant: Optional[str] = None
quantity: Optional[int] = None
related_fees: Optional[List[ProductFee]] = None
options: Optional[List[ProductOption]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Subscription:
proposition: Optional[str] = None
pricing_package: Optional[str] = None
term: Optional[int] = None
renewal_length: Optional[int] = None
acquiring: Optional[Acquiring] = None
products: Optional[List[Product]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class OrderPayload:
party_id: Optional[str] = None
parent_party_id: Optional[str] = None
legal_name: Optional[str] = None
trading_name: Optional[str] = None
party_name: Optional[str] = None
addresses: Optional[List[MerchantAddress]] = None
trading_contact: Optional[Contact] = None
invoice_contact: Optional[InvoiceContact] = None
settlement_bank_account: Optional[BankAccount] = None
charges_bank_account: Optional[BankAccount] = None
direct_debit_correspondence_email: Optional[str] = None
website_address: Optional[str] = None
company_type: Optional[str] = None
company_type_other: Optional[str] = None
company_registration_number: Optional[str] = None
charity_number: Optional[str] = None
merchant_categories: Optional[List[MerchantCategory]] = None
vat_number: Optional[str] = None
date_started_trading: Optional[datetime.datetime] = None
anticipated_go_live_date: Optional[datetime.datetime] = None
country_of_incorporation: Optional[str] = None
region_of_incorporation: Optional[str] = None
financials: Optional[Financials] = None
new_to_cards: Optional[bool] = None
trade_association: Optional[TradeAssociation] = None
principals: Optional[List[Principal]] = None
goods_and_services: Optional[GoodsAndServices] = None
accessibility_options: Optional[AccessibilityOptions] = None
clearing_details: Optional[ClearingDetails] = None
acquiring: Optional[Acquiring] = None
subscriptions: Optional[List[Subscription]] = None
children: Optional[List[OrderPayload]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Order:
meta: Optional[OrderMeta] = None
payload: Optional[OrderPayload] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class IdentityVerificationDocuments:
document_id: Optional[str] = None
authenticity: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AllChecksOrderDataRequest:
correlation_id: Optional[str] = None
order_json: Optional[Order] = None
nap_party_id: Optional[str] = None
leid: Optional[str] = None
order_id: Optional[str] = None
party_individuals: Optional[List[str]] = None
identity_verification_documents: Optional[List[IdentityVerificationDocuments]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Address:
address1: Optional[str] = None
address2: Optional[str] = None
address3: Optional[str] = None
postcode: Optional[str] = None
city: Optional[str] = None
state: Optional[str] = None
country_code: Optional[str] = None
Python AllChecksOrderDataRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /allchecks/submit/order HTTP/1.1
Host: wp-cddws-test.worldpay.com
Accept: text/csv
Content-Type: text/csv
Content-Length: length
{"CorrelationId":"String","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","PartyName":"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":{}}}},"NapPartyId":"String","LEID":"String","OrderId":"String","PartyIndividuals":["String"],"IdentityVerificationDocuments":[{"documentId":"String","authenticity":"String"}]}
HTTP/1.1 200 OK Content-Type: text/csv Content-Length: length {"Status":0,"CorrelationId":"String","Message":"String"}