PurseHeadlessCheckoutSecondaryToken
Represents a secondary token in the Purse checkout system. Secondary tokens are saved alternative payment methods like gift cards that can be combined with primary payment methods.
Example
// Use part of the gift card balance
await secondaryToken.take(50);
// Remove it from the split if needed
await secondaryToken.removeFromSplit();
Extends
Extended by
Properties
additionalAssets
additionalAssets: CardSchemeAsset[];
Additional assets associated with this payment item, primarily card scheme logos.
For credit card methods with vault support, this contains one entry per supported card scheme (e.g. Visa, Mastercard, CB). For all other payment methods the array is empty.
Each asset provides a CDN URL and a human-readable label suitable for display and accessibility purposes.
Example
// React
{method.additionalAssets.map(asset => (
<img key={asset.url} src={asset.url} alt={asset.label} />
))}
Inherited from
PurseHeadlessCheckoutToken.additionalAssets
balance
balance: Readable<number>;
The amount available for use on the card. This value will be at 0 until we've fetched its current value. The fetching is done in parallel during the checkout creation to speed up the process.
cvv?
optional cvv?: string;
the card cvv
disabled
disabled: Readable<DisabledState | null>;
Indicates if the payment token is disabled with an error code and message
Inherited from
PurseHeadlessCheckoutToken.disabled
expiration_date
expiration_date: string | Date;
iconUrl
iconUrl: string;
Absolute URL of the payment method icon on the Purse CDN.
The URL is stable and environment-aware (sandbox vs production).
The icon is an SVG file that respects the brand guidelines of the
payment partner. It can be used directly in an <img> tag or as
a CSS background image without any further processing.
Example
// React
<img src={method.iconUrl} alt={method.method} />
Inherited from
PurseHeadlessCheckoutToken.iconUrl
id
id: string;
Unique identifier of the payment method
Examples
'hipay-bancontact'
'illicado-giftcard'
'aci-creditcard'
Inherited from
isSecondary
isSecondary: true;
Indicates if the payment method is a secondary mean of payment
Overrides
PurseHeadlessCheckoutToken.isSecondary
limit
limit: number;
maxAmount
maxAmount: number | null;
Maximum amount to use the payment method
Inherited from
PurseHeadlessCheckoutToken.maxAmount
method
method: string;
Type of payment method, it can be a card, a wallet, a bank transfer, etc.
Examples
'applepay'
'googlepay'
'creditcard'
Inherited from
PurseHeadlessCheckoutToken.method
minAmount
minAmount: number | null;
Minimum amount to use the payment method
Inherited from
PurseHeadlessCheckoutToken.minAmount
name
name: string;
User-friendly name for the token, provided by the user during registration or by the payment partner. This name is used for display purposes in the UI to help users identify their saved payment methods.
Inherited from
PurseHeadlessCheckoutToken.name
pan
pan: string;
the card pan
partner
partner: string;
Partner associated with the payment method
Examples
'hipay'
'paypal'
Inherited from
PurseHeadlessCheckoutToken.partner
takePolicy
takePolicy: SecondaryTakePolicy;
Depending on the secondary method, the takable amount is constrained. Vouchers for instance can't be partially used.
| method | take policy |
|---|---|
| easy2play - voucher | max |
| easy2play - giftcard | none |
| illicado - giftcard | none |
| ogloba - giftcard | none |
| buybox - giftcard | none |
| maxxing - loyaltycard | max |
Max: "All or nothing" the only takable amount is the full balance. None: The take amount is not constrained (should still be less than the token's available balance').
totalBalance?
optional totalBalance?: Readable<number>;
This value is populated for secondaries that can be partially consumed/eligible for a session This is the case for loyalty accounts like maxxing for instance.
type
type: "token" | "temporary_token";
Overrides
PurseHeadlessCheckoutToken.type
Methods
delete()
delete(): Promise<void>;
Delete the token from the user's wallet
Returns
Promise<void>
Throws
- PurseHeadlessCheckoutError
METHOD_NOT_IMPLEMENTED
If the token is of type PurseHeadlessCheckoutTemporarySecondaryToken - PurseHeadlessCheckoutError
MISSING_SESSION
If the session is missing - PurseHeadlessCheckoutError
MISSING_TOKEN
If the provided token cannot be found - PurseHeadlessCheckoutError
MISSING_WALLET_SESSION
If the wallet session is missing - PurseHeadlessCheckoutError
UNKNOWN_ERROR
If an unknown error is caught during the deletion
Example
token.delete();
Inherited from
PurseHeadlessCheckoutToken.delete
edit()
edit(payload): Promise<void>;
Edit the token's name
Parameters
| Parameter | Type | Description |
|---|---|---|
payload | { name: string; } | - |
payload.name | string | - |
Returns
Promise<void>
Throws
- PurseHeadlessCheckoutError
TOKEN_NOT_REGISTERABLE
If the token is not registerable - PurseHeadlessCheckoutError
TOKEN_NOT_REGISTERED
If the token is not registered (see PurseHeadlessCheckoutRegisterable.register) - PurseHeadlessCheckoutError
TOKEN_NAME_EXISTS
If the token name already exists - PurseHeadlessCheckoutError
MISSING_TOKEN
If the provided token cannot be found - PurseHeadlessCheckoutError
INVALID_TOKEN_NAME
If the provided token name is invalid - PurseHeadlessCheckoutError
MISSING_WALLET_SESSION
If the wallet session is missing
Example
token.edit({ name: 'New Name' });
Inherited from
PurseHeadlessCheckoutToken.edit
removeFromSplit()
removeFromSplit(): Promise<void>;
Removes this token from the current payment split configuration. Any amount previously allocated from this token will be removed from the split.
Returns
Promise<void>
Throws
- PurseHeadlessCheckoutError
METHOD_NOT_IMPLEMENTED
If the real token could not be fetched and a placeholder object was returned instead
Example
// Remove a gift card from the payment split
await token.removeFromSplit();
take()
take(amount): Promise<void>;
Applies a specified amount from this secondary token to the current payment session. The amount will be deducted from the token's balance and added to the payment split.
Parameters
| Parameter | Type | Description |
|---|---|---|
amount | number | Amount to use from this token's balance |
Returns
Promise<void>
Throws
- PurseHeadlessCheckoutError
INVALID_TAKE_AMOUNT
If any of these conditions are not met:- Amount must be greater than 0
- Amount must be less than the remaining session amount
- Amount must be less than the token's available balance
- PurseHeadlessCheckoutError
METHOD_NOT_IMPLEMENTED
If the real token could not be fetched and a placeholder object was returned instead - PurseHeadlessCheckoutError
USAGE_LIMIT_ERROR
If the usage limit of the secondary method was reached - PurseHeadlessCheckoutError
SECONDARY_METHOD_TAKE_POLICY_VIOLATED
If the take amount requested violates the policy of the secondary method.
Example
// Use 50 from a gift card balance
await token.take(50);