ClubReady Api

<back to all web services

ContractSoldEndpoint

The following routes are available for this service:
POST/sales/contract/soldSell a package to an existing userSell a package to an existing user. The PaymentMethods property is an array of objects describing how you want ClubReady to take payment while selling the PackageId/InstallmentPlanId. If omitted (or null), the preferred on-file profile will be used.* When using Query String values (or this web site), this value must be encoded with JSV [(JSON-like Separated Values)](https://docs.servicestack.net/jsv-format). * Basic steps to convert JSON to JSV: 1) Remove properties that are null 2) Remove white space including line feeds 3) Remove quotes.
ContractSoldEndpoint Parameters:
NameParameterData TypeRequiredDescription
XForwardedForheaderstringNoIP address of the end user
ApiKeyquerystringYesApi Authentication Key
MemberIdqueryintYesMember Id of the user buying the Package
ChainIdbodyint?NoId for the chain of the Api Key
StoreIdbodyint?YesId of the store for the user
PackageIdbodyintYesPackage Id number of the package being purchased
InstallmentIdbodyint?NoInstallment Plan Id being purchased. If empty, the default package will be selected.
StartDatebodyDateTime?NoDate contract takes affect
PaymentAmountbodydecimal?YesAmount being paid down, including tax
PromoCodebodystringNoPromo code to apply a discount.
StaffIdbodyint?NoStaff Id of salesperson who sold the agreement.
PaymentMethodsbodyList<PaymentMethodDto>NoAn array of PaymentMethod objects to be used for this purchase. A null array (or omitted property) will use the Preferred method for the total amount. Each object of the array may contain properties: | Property | Description | | --- | --- | | PaymentAmount | The maximum amount to be attempted for this PaymentMethod. When null or omitted, the remaining PaymentAmount will be attempted. | | **Use only one of the following three** | **UsePreferred** or **AcctToken** or **ProfileToken [DoNotUpdatePaymentTypePreference]** | | UsePreferred | Set to `true` to use the Preferred method, otherwise omit the value or set to `null` or `false` | | AcctToken | The AcctToken to attempt payment | | ProfileToken | When provided, a PaymentMethod will be created (this will prevent the requirement to call `/sales/paymentprofile/import`) | | DoNotUpdatePaymentTypePreference | [Optional] When creating a PaymentMethod (ProfileToken), it is set as the preferred method. To not create as preferred, set `DoNotUpdatePaymentTypePreference` to `true`. (for more information, see `/sales/paymentprofile/import`) | | | | Only one of `UsePreferred`, `AcctToken`, `ProfileToken` or is needed. `DoNotUpdatePaymentTypePreference` is optional and only valid with `ProfileToken`. * Scenario #1: Sell $3 contract using an existing PaymentMethod (i.e. AcctToken) for $1 and the Preferred method for $2. JSON: ```json { ... "PaymentAmount": 3.00, "PaymentMethods": [ { "PaymentAmount": "1.00", "AcctToken": "eyJ..." }, { "PaymentAmount": "2.00", "UsePreferred": true } ] } ``` JSV: ``` ...,PaymentAmount:3.00,PaymentMethods:[{PaymentAmount:1.00,AcctToken:eyJ...NdQ},{PaymentAmount:2.00,UsePreferred:true}] ``` * Scenario #2: Sell $3 contract using a new PaymentMethod (i.e. ProfileToken) for $1 and the Preferred method for the remaining. Note, the sum of the PaymentMethod's PaymentAmount ($4) is greater than the agreement amount ($3). PaymentAmount is the maximum amount. This allows the first PaymentMethod to decline or partially approve (common with gift cards). Therefore, if the first PaymentMethod approves for $0.75, the second will be attempted for $2.25. JSON: ```json { ... "PaymentAmount": 3.00, "PaymentMethods": [ { "PaymentAmount": "1.00", "ProfileToken": "eyJ..." }, { "PaymentAmount": "3.00", "UsePreferred": true } ] } ``` JSV: ```jsv ...,PaymentAmount:3.00,PaymentMethods:[{PaymentAmount:1.00,ProfileToken:eyj...NdQ},{PaymentAmount:3.00,UsePreferred:true}] ``` Notes: * AcctTokens should not be parsed or persisted in the client application. They are currently json based, but can be updated without notice. * ProfileToken is used to create a PaymentMethod in the ClubReady system. For more information, see `/sales/paymentprofile/import`. * If `PaymentMethods` is missing or `null`, the Preferred method will be used. * If a `PaymentMethods` `PaymentAmount` is not specified, the remaining amount will be attempted. * If a PaymentMethod is partially approved (common for gift cards), the PaymentMethod with an unspecified PaymentAmount will be charged the remaining amount, including the unapproved amount not. * When testing with this website, the PaymentMethods textbox needs JSV and only the square brackets and contents (e.g. `[{PaymentAmount:1.00,UsePreferred:true}]`).
RestrictedIdbodyint?No
RestrictedResourceTypebodyRestrictedResourceTypeNo
PaymentMethodDto Parameters:
NameParameterData TypeRequiredDescription
AcctTokenformstringNo
ProfileTokenformstringNo
PaymentProfileIdformstringNo
PaymentAmountformdecimal?No
UsePreferredformbool?No
DoNotUpdatePaymentTypePreferenceformbool?No
RestrictedResourceType Enum:
Store
Chain
User
Undefined
ContractSoldResponse Parameters:
NameParameterData TypeRequiredDescription
ContractSaleIDformstringNo
descriptionformstringNo
SuccessformboolNo
PaymentResponsesformIReadOnlyList<PendingPaymentResponse>No
PendingPaymentResponse Parameters:
NameParameterData TypeRequiredDescription
ResponseTransactionIdformstringNo
ResponseTxnIdformstringNo
ResponseStatusformResponseStatusNo
ResponseAmountformdecimalNo
ResponseTextformstringNo
Last4formstringNo
AcctClassformstringNo
AcctTypeformstringNo
AcctTokenformstringNo
ResponseStatus Enum:
NameValue
stsUnknown0
stsSuccess1
stsDecline2
stsError3
HardDeclineAccount4
HardDeclineExpiry5
PartialApproval11
PendingSuccess12

To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv

HTTP + CSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /sales/contract/sold HTTP/1.1 
Host: www.clubready.com 
Accept: text/csv
Content-Type: text/csv
Content-Length: length

{"XForwardedFor":"String","ApiKey":"String","MemberId":0,"ChainId":0,"StoreId":0,"PackageId":0,"InstallmentId":0,"StartDate":"0001-01-01T00:00:00.0000000","PaymentAmount":0,"PromoCode":"String","StaffId":0,"PaymentMethods":[{"AcctToken":"String","ProfileToken":"String","PaymentProfileId":"String","PaymentAmount":0,"UsePreferred":false,"DoNotUpdatePaymentTypePreference":false}],"RestrictedId":0,"RestrictedResourceType":"Chain"}
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length

{"ContractSaleID":"String","description":"String","Success":false}