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.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using ClubReady.Web.Api.Sales;
using ClubReady.Payments;
using ClubReady.Payments.PaymentsDb;

namespace ClubReady.Payments
{
    public partial class PaymentProfileImportRequest
    {
        public virtual string AcctToken { get; set; }
        public virtual string ProfileToken { get; set; }
        public virtual bool DoNotUpdatePaymentTypePreference { get; set; }
        public virtual ValueTuple<Int32,OwnerType>? NewOwner { get; set; }
    }

    public partial class PaymentProfileImportResponse
    {
        public virtual bool Success { get; set; }
        public virtual string Message { get; set; }
        public virtual PaymentProfile PaymentProfile { get; set; }
    }

}

namespace ClubReady.Payments.PaymentsDb
{
    public partial class PaymentProfile
    {
        public virtual int PaymentProfileId { get; set; }
        public virtual string AcctToken { get; set; }
        public virtual int OwnerId { get; set; }
        public virtual short OwnerTypeId { get; set; }
        public virtual short AcctTypeId { get; set; }
        public virtual short AcctClassId { get; set; }
        public virtual string PrefixName { get; set; }
        public virtual string FirstName { get; set; }
        public virtual string MiddleName { get; set; }
        public virtual string LastName { get; set; }
        public virtual string SuffixName { get; set; }
        public virtual string Address1 { get; set; }
        public virtual string Address2 { get; set; }
        public virtual string Urbanization { get; set; }
        public virtual string City { get; set; }
        public virtual string State { get; set; }
        public virtual string PostalCode { get; set; }
        public virtual string CountryCode { get; set; }
        public virtual string Last4 { get; set; }
        public virtual byte? CcExpMonth { get; set; }
        public virtual byte? CcExpYear { get; set; }
        public virtual bool IsTemp { get; set; }
        public virtual bool IsDisabled { get; set; }
        public virtual DateTime? OnHoldUtc { get; set; }
        public virtual byte? OnHoldReasonCode { get; set; }
        public virtual string OnHoldReasonDetail { get; set; }
        public virtual DateTime? AcctUpdaterFlagUtc { get; set; }
        public virtual int CreatedBy { get; set; }
        public virtual DateTime CreatedUtc { get; set; }
        public virtual int ModifiedBy { get; set; }
        public virtual DateTime ModifiedUtc { get; set; }
        public virtual bool AcctUpdaterFlag { get; set; }
        public virtual short EntryModeId { get; set; }
        public virtual bool ExcludeFromAcctUpdater { get; set; }
    }

}

namespace ClubReady.Web.Api.Sales
{
    [ApiResponse(Description="", ResponseType=typeof(ClubReady.Payments.PaymentProfileImportResponse), StatusCode=200)]
    public partial class PaymentProfileImportEndpoint
        : PaymentProfileImportRequest, IApiKeyEndpoint
    {
        ///<summary>
        ///Api Authentication Key
        ///</summary>
        [ApiMember(Description="Api Authentication Key", IsRequired=true, ParameterType="query")]
        public virtual string ApiKey { get; set; }

        ///<summary>
        ///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.
        ///</summary>
        [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)]
        public virtual string AcctToken { get; set; }

        ///<summary>
        ///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.
        ///</summary>
        [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)]
        public virtual string ProfileToken { get; set; }

        ///<summary>
        ///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.
        ///</summary>
        [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.")]
        public virtual bool DoNotUpdatePaymentTypePreference { get; set; }

        ///<summary>
        ///**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`.
        ///</summary>
        [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`.")]
        public virtual int? NewOwnerId { get; set; }
    }

}

C# 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
	}
}