ClubReady Api

<back to all web services

PaymentProfileImportEndpoint

The following routes are available for this service:
POST/sales/paymentprofile/importImport a Payment Method (using ProfileToken)After a Payment Method is created in the Vault API (www.clubreadygateway.com), the information has to be imported into the ClubReady system. The Vault API will return a ProfileToken and AcctToken. This endpoint will import a ProfileToken as a separate step. If the ProfileToken is sent to any other endpoints, those endpoints will import the ProfileToken and this endpoint is not needed. ### ProfileToken * JSON Web Token (JWT) * Length is variable, but generally around 1,000 to 4,000 characters * Contains non-PCI information about the Payment Method * Signed by the Vault API, preventing modification * Must be sent to ClubReady API within 5 minutes of creation * Can only be used once (though retrying is allowed) * You can parse and read the JWT, but the format is subject to change without notice * You cannot validate the signature in the JWT as the public key is not available ### AcctToken * A short string that is used to reference the Payment Method in the ClubReady system * Usually around 60 to 80 characters * Should not be stored for long-term use as it can change
import java.math.*
import java.util.*
import net.servicestack.client.*


@ApiResponse(Description="", ResponseType=PaymentProfileImportResponse.class, StatusCode=200)
open class PaymentProfileImportEndpoint : PaymentProfileImportRequest(), IApiKeyEndpoint
{
    /**
    * IP address of the end user
    */
    @ApiMember(Description="IP address of the end user", Name="X-Forwarded-For", ParameterType="header")
    var XForwardedFor:String? = null

    /**
    * API Authentication Key
    */
    @ApiMember(Description="API Authentication Key", IsRequired=true, ParameterType="query")
    var ApiKey:String? = null

    /**
    * The ProfileToken JWT to import (see description above)
    */
    @ApiMember(Description="The ProfileToken JWT to import (see description above)", IsRequired=true)
    var ProfileToken:String? = null

    /**
    * When adding a PaymentMethod that is 'on-file' (`IsTemp == true`), the default behavior is toset this PaymentMethod as the preferred method. If you do not wish this to be the preferredmethod, you can set `DoNotUpdatePaymentTypePreference` to `true`. Otherwise, this can beomitted or `false`.For non 'on-file' PaymentMethods, this setting is ignored.
    */
    @ApiMember(Description="When adding a PaymentMethod that is 'on-file' (`IsTemp == true`), the default behavior is to\r\nset this PaymentMethod as the preferred method. If you do not wish this to be the preferred\r\nmethod, you can set `DoNotUpdatePaymentTypePreference` to `true`. Otherwise, this can be\r\nomitted or `false`.\r\n\r\nFor non 'on-file' PaymentMethods, this setting is ignored.")
    var DoNotUpdatePaymentTypePreference:Boolean? = null

    /**
    * **Conditionally Required**  When importing a ProfileToken with an OwnerType of `TempStUser`, the ownership will be changed toOwnerType of `User` with the userId of the supplied `NewOwnerId`.This is needed when a PaymentMethod is created for a User that has not been selected or created, yet.
    */
    @ApiMember(Description="**Conditionally Required**  \r\n\r\nWhen importing a ProfileToken with an OwnerType of `TempStUser`, the ownership will be changed to\r\nOwnerType of `User` with the userId of the supplied `NewOwnerId`.\r\n\r\nThis is needed when a PaymentMethod is created for a User that has not been selected or created, yet.")
    var NewOwnerId:Int? = null
}

open class PaymentProfileImportRequest
{
    var ProfileToken:String? = null
    var DoNotUpdatePaymentTypePreference:Boolean? = null
    var NewOwnerId:Int? = null
}

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

open class PaymentProfile : IFullNameContainer
{
    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: www.clubready.com 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	XForwardedFor: String,
	ApiKey: String,
	ProfileToken: String,
	DoNotUpdatePaymentTypePreference: False,
	NewOwnerId: 0
}
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
	}
}