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
namespace ClubReady.Payments

open System
open System.Collections
open System.Collections.Generic
open System.Runtime.Serialization
open ServiceStack
open ServiceStack.DataAnnotations

    [<AllowNullLiteral>]
    type PaymentProfileImportRequest() = 
        member val ProfileToken:String = null with get,set
        member val DoNotUpdatePaymentTypePreference:Boolean = new Boolean() with get,set
        member val NewOwnerId:Nullable<Int32> = new Nullable<Int32>() with get,set

    [<ApiResponse(Description="", ResponseType=typeof<PaymentProfileImportResponse>, StatusCode=200)>]
    [<AllowNullLiteral>]
    type PaymentProfileImportEndpoint() = 
        inherit PaymentProfileImportRequest()
        ///<summary>
        ///IP address of the end user
        ///</summary>
        [<ApiMember(Description="IP address of the end user", Name="X-Forwarded-For", ParameterType="header")>]
        member val XForwardedFor:String = null with get,set

        ///<summary>
        ///API Authentication Key
        ///</summary>
        [<ApiMember(Description="API Authentication Key", IsRequired=true, ParameterType="query")>]
        member val ApiKey:String = null with get,set

        ///<summary>
        ///The ProfileToken JWT to import (see description above)
        ///</summary>
        [<ApiMember(Description="The ProfileToken JWT to import (see description above)", IsRequired=true)>]
        member val ProfileToken:String = null with get,set

        ///<summary>
        ///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.
        ///</summary>
        [<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.")>]
        member val DoNotUpdatePaymentTypePreference:Boolean = new Boolean() with get,set

        ///<summary>
        ///**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.
        ///</summary>
        [<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.")>]
        member val NewOwnerId:Nullable<Int32> = new Nullable<Int32>() with get,set

    [<AllowNullLiteral>]
    type PaymentProfile() = 
        member val PaymentProfileId:Int32 = new Int32() with get,set
        member val AcctToken:String = null with get,set
        member val OwnerId:Int32 = new Int32() with get,set
        member val OwnerTypeId:Int16 = new Int16() with get,set
        member val AcctTypeId:Int16 = new Int16() with get,set
        member val AcctClassId:Int16 = new Int16() with get,set
        member val PrefixName:String = null with get,set
        member val FirstName:String = null with get,set
        member val MiddleName:String = null with get,set
        member val LastName:String = null with get,set
        member val SuffixName:String = null with get,set
        member val Address1:String = null with get,set
        member val Address2:String = null with get,set
        member val Urbanization:String = null with get,set
        member val City:String = null with get,set
        member val State:String = null with get,set
        member val PostalCode:String = null with get,set
        member val CountryCode:String = null with get,set
        member val Last4:String = null with get,set
        member val CcExpMonth:Nullable<Byte> = new Nullable<Byte>() with get,set
        member val CcExpYear:Nullable<Byte> = new Nullable<Byte>() with get,set
        member val IsTemp:Boolean = new Boolean() with get,set
        member val IsDisabled:Boolean = new Boolean() with get,set
        member val OnHoldUtc:Nullable<DateTime> = new Nullable<DateTime>() with get,set
        member val OnHoldReasonCode:Nullable<Byte> = new Nullable<Byte>() with get,set
        member val OnHoldReasonDetail:String = null with get,set
        member val AcctUpdaterFlagUtc:Nullable<DateTime> = new Nullable<DateTime>() with get,set
        member val CreatedBy:Int32 = new Int32() with get,set
        member val CreatedUtc:DateTime = new DateTime() with get,set
        member val ModifiedBy:Int32 = new Int32() with get,set
        member val ModifiedUtc:DateTime = new DateTime() with get,set
        member val AcctUpdaterFlag:Boolean = new Boolean() with get,set
        member val EntryModeId:Int16 = new Int16() with get,set
        member val ExcludeFromAcctUpdater:Boolean = new Boolean() with get,set

    [<AllowNullLiteral>]
    type PaymentProfileImportResponse() = 
        member val Success:Boolean = new Boolean() with get,set
        member val Message:String = null with get,set
        member val PaymentProfile:PaymentProfile = null with get,set

F# PaymentProfileImportEndpoint DTOs

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

HTTP + XML

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: application/xml
Content-Type: application/xml
Content-Length: length

<PaymentProfileImportEndpoint xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/ClubReady.Web.Api.Sales">
  <DoNotUpdatePaymentTypePreference xmlns="http://schemas.datacontract.org/2004/07/ClubReady.Payments">false</DoNotUpdatePaymentTypePreference>
  <NewOwnerId xmlns="http://schemas.datacontract.org/2004/07/ClubReady.Payments">0</NewOwnerId>
  <ProfileToken xmlns="http://schemas.datacontract.org/2004/07/ClubReady.Payments">String</ProfileToken>
  <ApiKey>String</ApiKey>
  <XForwardedFor>String</XForwardedFor>
</PaymentProfileImportEndpoint>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<PaymentProfileImportResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/ClubReady.Payments">
  <Message>String</Message>
  <PaymentProfile xmlns:d2p1="http://schemas.datacontract.org/2004/07/ClubReady.Payments.PaymentsDb">
    <d2p1:AcctClassId>0</d2p1:AcctClassId>
    <d2p1:AcctToken>String</d2p1:AcctToken>
    <d2p1:AcctTypeId>0</d2p1:AcctTypeId>
    <d2p1:AcctUpdaterFlag>false</d2p1:AcctUpdaterFlag>
    <d2p1:AcctUpdaterFlagUtc>0001-01-01T00:00:00</d2p1:AcctUpdaterFlagUtc>
    <d2p1:Address1>String</d2p1:Address1>
    <d2p1:Address2>String</d2p1:Address2>
    <d2p1:CcExpMonth>0</d2p1:CcExpMonth>
    <d2p1:CcExpYear>0</d2p1:CcExpYear>
    <d2p1:City>String</d2p1:City>
    <d2p1:CountryCode>String</d2p1:CountryCode>
    <d2p1:CreatedBy>0</d2p1:CreatedBy>
    <d2p1:CreatedUtc>0001-01-01T00:00:00</d2p1:CreatedUtc>
    <d2p1:EntryModeId>0</d2p1:EntryModeId>
    <d2p1:ExcludeFromAcctUpdater>false</d2p1:ExcludeFromAcctUpdater>
    <d2p1:FirstName>String</d2p1:FirstName>
    <d2p1:IsDisabled>false</d2p1:IsDisabled>
    <d2p1:IsTemp>false</d2p1:IsTemp>
    <d2p1:Last4>String</d2p1:Last4>
    <d2p1:LastName>String</d2p1:LastName>
    <d2p1:MiddleName>String</d2p1:MiddleName>
    <d2p1:ModifiedBy>0</d2p1:ModifiedBy>
    <d2p1:ModifiedUtc>0001-01-01T00:00:00</d2p1:ModifiedUtc>
    <d2p1:OnHoldReasonCode>0</d2p1:OnHoldReasonCode>
    <d2p1:OnHoldReasonDetail>String</d2p1:OnHoldReasonDetail>
    <d2p1:OnHoldUtc>0001-01-01T00:00:00</d2p1:OnHoldUtc>
    <d2p1:OwnerId>0</d2p1:OwnerId>
    <d2p1:OwnerTypeId>0</d2p1:OwnerTypeId>
    <d2p1:PaymentProfileId>0</d2p1:PaymentProfileId>
    <d2p1:PostalCode>String</d2p1:PostalCode>
    <d2p1:PrefixName>String</d2p1:PrefixName>
    <d2p1:State>String</d2p1:State>
    <d2p1:SuffixName>String</d2p1:SuffixName>
    <d2p1:Urbanization>String</d2p1:Urbanization>
  </PaymentProfile>
  <Success>false</Success>
</PaymentProfileImportResponse>