| POST | /sales/paymentprofile/import | Import 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 |
|---|
| Name | Parameter | Data Type | Required | Description |
|---|---|---|---|---|
| XForwardedFor | header | string | No | IP address of the end user |
| ApiKey | query | string | Yes | API Authentication Key |
| ProfileToken | body | string | Yes | The ProfileToken JWT to import (see description above) |
| DoNotUpdatePaymentTypePreference | body | bool | No | When adding a PaymentMethod that is 'on-file' (`IsTemp == true`), the default behavior is to set this PaymentMethod as the preferred method. If you do not wish this to be the preferred method, you can set `DoNotUpdatePaymentTypePreference` to `true`. Otherwise, this can be omitted or `false`. For non 'on-file' PaymentMethods, this setting is ignored. |
| NewOwnerId | body | int? | No | **Conditionally Required** When importing a ProfileToken with an OwnerType of `TempStUser`, the ownership will be changed to OwnerType 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. |
| Name | Parameter | Data Type | Required | Description |
|---|---|---|---|---|
| ProfileToken | form | string | No | |
| DoNotUpdatePaymentTypePreference | form | bool | No | |
| NewOwnerId | form | int? | No |
| Name | Parameter | Data Type | Required | Description |
|---|---|---|---|---|
| Success | form | bool | No | |
| Message | form | string | No | |
| PaymentProfile | form | PaymentProfile | No |
| Name | Parameter | Data Type | Required | Description |
|---|---|---|---|---|
| PaymentProfileId | form | int | No | |
| AcctToken | form | string | No | |
| OwnerId | form | int | No | |
| OwnerTypeId | form | short | No | |
| AcctTypeId | form | short | No | |
| AcctClassId | form | short | No | |
| PrefixName | form | string | No | |
| FirstName | form | string | No | |
| MiddleName | form | string | No | |
| LastName | form | string | No | |
| SuffixName | form | string | No | |
| Address1 | form | string | No | |
| Address2 | form | string | No | |
| Urbanization | form | string | No | |
| City | form | string | No | |
| State | form | string | No | |
| PostalCode | form | string | No | |
| CountryCode | form | string | No | |
| Last4 | form | string | No | |
| CcExpMonth | form | byte? | No | |
| CcExpYear | form | byte? | No | |
| IsTemp | form | bool | No | |
| IsDisabled | form | bool | No | |
| OnHoldUtc | form | DateTime? | No | |
| OnHoldReasonCode | form | byte? | No | |
| OnHoldReasonDetail | form | string | No | |
| AcctUpdaterFlagUtc | form | DateTime? | No | |
| CreatedBy | form | int | No | |
| CreatedUtc | form | DateTime | No | |
| ModifiedBy | form | int | No | |
| ModifiedUtc | form | DateTime | No | |
| AcctUpdaterFlag | form | bool | No | |
| EntryModeId | form | short | No | |
| ExcludeFromAcctUpdater | form | bool | No | |
| Preference | form | int | No | |
| Nickname | form | string | No |
To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=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: 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:Nickname>String</d2p1:Nickname>
<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:Preference>0</d2p1:Preference>
<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>