ClubReady Api

<back to all web services

PaymentProfileImportEndpoint

The following routes are available for this service:
POST/sales/paymentprofile/importImport a Payment Profile (using ProfileToken) After a Payment Profile is created in the ClubReadyGateway API (aka Vault API), the information has to be imported into the ClubReady system. The AcctToken and ProfileToken are created by the ClubReadyGateway API.
import java.math.*
import java.util.*
import net.servicestack.client.*


@ApiResponse(Description="", ResponseType=PaymentProfileImportResponse.class, StatusCode=200)
open class PaymentProfileImportEndpoint : PaymentProfileImportRequest(), IApiKeyEndpoint
{
    /**
    * Api Authentication Key
    */
    @ApiMember(Description="Api Authentication Key", IsRequired=true, ParameterType="query")
    var ApiKey:String? = null

    /**
    * Encoded data uniquely identifying the payment profile.  Long term storage of AcctToken is not recommended, as the token may change over time (for example, by processes like Account Updater).  The length is usually 80 characters.
    */
    @ApiMember(Description="\r\nEncoded data uniquely identifying the payment profile.  \r\nLong term storage of AcctToken is not recommended, as the token may change over time (for example, by processes like Account Updater).  \r\nThe length is usually 80 characters.", IsRequired=true)
    var AcctToken:String? = null

    /**
    * Encoded data containing non-PCI information about the Payment Profile.  ProfileTokens contain a timestamp. If the ClubReady API does not process the token within 5 minutes,it cannot be accepted and a new profile will have to be created with a new AcctToken. The timevalidation is to prevent old tokens from be re-played at a later time.  The length is variable, but generally around 1,000 characters.
    */
    @ApiMember(Description="\r\nEncoded data containing non-PCI information about the Payment Profile.  \r\n\r\nProfileTokens contain a timestamp. If the ClubReady API does not process the token within 5 minutes,\r\nit cannot be accepted and a new profile will have to be created with a new AcctToken. The time\r\nvalidation is to prevent old tokens from be re-played at a later time.  \r\n\r\nThe length is variable, but generally around 1,000 characters.", IsRequired=true)
    var ProfileToken:String? = null

    /**
    * When adding a Payment Profile that is 'on-file', the default behavior is to update the user's Payment TypePreference to the AcctClass of the new profile. If you wish to not update the preference, you can set`DoNotUpdatePaymentTypePreference` to `true`. Otherwise, this can be omitted or `false`.  For `IsTemp == true` profiles, `DoNotUpdatePaymentTypePreference` is ignored.
    */
    @ApiMember(Description="\r\nWhen adding a Payment Profile that is 'on-file', the default behavior is to update the user's Payment Type\r\nPreference to the AcctClass of the new profile. If you wish to not update the preference, you can set\r\n`DoNotUpdatePaymentTypePreference` to `true`. Otherwise, this can be omitted or `false`.  \r\n\r\nFor `IsTemp == true` profiles, `DoNotUpdatePaymentTypePreference` is ignored.")
    var DoNotUpdatePaymentTypePreference:Boolean? = null

    /**
    * **Conditionally Required**  When adding a Payment Profile that has an OwnerType of `TempStUser`, the ownership will be changed to OwnerType of `User`with the `UserId` of the supplied `NewOwnerId`.
    */
    @ApiMember(Description="\r\n**Conditionally Required**  \r\n\r\nWhen adding a Payment Profile that has an OwnerType of `TempStUser`, the ownership will be changed to OwnerType of `User`\r\nwith the `UserId` of the supplied `NewOwnerId`.")
    var NewOwnerId:Int? = null
}

open class PaymentProfileImportRequest
{
    var AcctToken:String? = null
    var ProfileToken:String? = null
    var DoNotUpdatePaymentTypePreference:Boolean? = null
    var NewOwner:ValueTuple<Int,OwnerType>? = null
}

open class PaymentProfileImportResponse
{
    var Success:Boolean? = null
    var Message:String? = null
    var PaymentProfile:PaymentProfile? = null
}

open class PaymentProfile
{
    var PaymentProfileId:Int? = null
    var AcctToken:String? = null
    var OwnerId:Int? = null
    var OwnerTypeId:Short? = null
    var AcctTypeId:Short? = null
    var AcctClassId:Short? = null
    var PrefixName:String? = null
    var FirstName:String? = null
    var MiddleName:String? = null
    var LastName:String? = null
    var SuffixName:String? = null
    var Address1:String? = null
    var Address2:String? = null
    var Urbanization:String? = null
    var City:String? = null
    var State:String? = null
    var PostalCode:String? = null
    var CountryCode:String? = null
    var Last4:String? = null
    var CcExpMonth:Short? = null
    var CcExpYear:Short? = null
    var IsTemp:Boolean? = null
    var IsDisabled:Boolean? = null
    var OnHoldUtc:Date? = null
    var OnHoldReasonCode:Short? = null
    var OnHoldReasonDetail:String? = null
    var AcctUpdaterFlagUtc:Date? = null
    var CreatedBy:Int? = null
    var CreatedUtc:Date? = null
    var ModifiedBy:Int? = null
    var ModifiedUtc:Date? = null
    var AcctUpdaterFlag:Boolean? = null
    var EntryModeId:Short? = null
    var ExcludeFromAcctUpdater:Boolean? = null
}

Kotlin PaymentProfileImportEndpoint DTOs

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

HTTP + JSV

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

POST /sales/paymentprofile/import HTTP/1.1 
Host: clubready.com 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	ApiKey: String,
	AcctToken: String,
	ProfileToken: String,
	DoNotUpdatePaymentTypePreference: False,
	NewOwnerId: 0,
	NewOwner: "(0, Unknown)"
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	Success: False,
	Message: String,
	PaymentProfile: 
	{
		PaymentProfileId: 0,
		AcctToken: String,
		OwnerId: 0,
		OwnerTypeId: 0,
		AcctTypeId: 0,
		AcctClassId: 0,
		PrefixName: String,
		FirstName: String,
		MiddleName: String,
		LastName: String,
		SuffixName: String,
		Address1: String,
		Address2: String,
		Urbanization: String,
		City: String,
		State: String,
		PostalCode: String,
		CountryCode: String,
		Last4: String,
		CcExpMonth: 0,
		CcExpYear: 0,
		IsTemp: False,
		IsDisabled: False,
		OnHoldUtc: 0001-01-01,
		OnHoldReasonCode: 0,
		OnHoldReasonDetail: String,
		AcctUpdaterFlagUtc: 0001-01-01,
		CreatedBy: 0,
		CreatedUtc: 0001-01-01,
		ModifiedBy: 0,
		ModifiedUtc: 0001-01-01,
		AcctUpdaterFlag: False,
		EntryModeId: 0,
		ExcludeFromAcctUpdater: False
	}
}