Web SDK
- Getting started
- Primer
- PrimerCheckout
- PrimerHeadlessCheckout
- CheckoutStyle
- Common objects
- Constants
createHeadless(
clientToken: string,
options?: HeadlessUniversalCheckoutOptions,
): Promise<PrimerHeadlessCheckout>
Create an instance of PrimerHeadlessCheckout, which is used to interact with the Primer API in a headless environment.
Starting from the version 2.45.0
, the options
parameter should be used instead of the deprecated configure
method. If both are used simultaneously, the SDK will throw an error.
Note: the configure
method must be called before the start
method.
- The
start
method must be called to begin the checkout process.
Parameters
Hide Parameters
Hide Parameters
A string containing a client token as returned by the Primer API when you create a client session.
Options for a Headless Universal Checkout, its properties can be defined to configure the checkout experience.
Hide Properties
Hide Properties
Called when the available payment methods have been loaded. Takes an array of objects as its argument.
Hide Parameters
Hide Parameters
Hide Properties
Hide Properties
The type of payment method, one of PaymentMethodType.
The type of payment manager to use.
This option forces the locale for certain UI elements. By default, the locale will be set to the browser’s locale.
Specifies the API version to use when interacting with the Primer backend.
- If not explicitly set, defaults to version
'2.4'
. - Set this to
'legacy'
if you encounter compatibility issues with the latest API version and wish to revert to the previous stable behavior.
Hide Payment lifecycle callbacks
Hide Payment lifecycle callbacks
Notifies you before the checkout tokenizes a payment method and creates a payment.
Called when a payment will be created.
Use as an opportunity to update UI accordingly - for example, to display a “loading” component.
The handler
must be used to then abort or continue with payment creation.
Primer will continue with payment creation if onBeforePaymentCreate
is not implemented.
Hide Parameters
Hide Parameters
Hide Properties
Hide Properties
The type of the payment method Primer will use for payment creation, one of PaymentMethodType
Provides two methods to continue or abort the payment.
You MUST call one of the methods of the handler if onBeforePaymentCreate
is implemented.
Choose to abort a payment.
return handler.abortPaymentCreation();
Choose to continue with payment creation
return handler.continuePaymentCreation();
Called when a payment has been created. Move on to next step in your checkout flow, such as showing a success message, etc.
Hide Parameters
Hide Parameters
Hide Properties
Hide Properties
Called when the checkout flow has failed.
Hide Parameters
Hide Parameters
Hide Properties
Hide Properties
When checkout fails, the payment might or might not have been created. If it was created, the payment object contains some information regarding it.
If handler
is undefined
, the SDK does not expect anything from you.
If handler
exists, you MUST call one of the functions of the handler.
import { Primer } from "@primer-io/checkout-web";
Primer.createHeadless(clientToken, {
onCheckoutComplete(...args) {
console.log("onCheckoutComplete", ...args);
},
onCheckoutFail(error, data, handler) {
if (!handler) {
return;
}
// Tells the SDK that it can proceed
// Note: this does not show any error message
return handler.showErrorMessage();
},
});
Hide Properties
Hide Properties
Tells the SDK that the error has been properly handled by your application. This does not display any error message.
Hide Event callbacks
Hide Event callbacks
Notifies you when a specific payment method has been selected or unselected.
Hide Parameters
Hide Parameters
The action being performed on the payment method. Payment will be unselected when a popup is closed.
Hide Properties
Hide Properties
The type of the payment method Primer will use for payment creation, one of PaymentMethodType
Hide Payment methods options
Hide Payment methods options
Options for using Google Pay as a payment method.
Hide Properties
Hide Properties
Whether to prompt the user to select a billing address.
Options for using Apple Pay as a payment method.
Hide Properties
Hide Properties
Whether to display a prompt for the user to enter their billing address during the payment process.
Billing contact configuration options for Apple Pay.
Hide Properties
Hide Properties
An array of string values that specify which required contact information fields should be collected during the checkout process.
Shipping contact configuration options for Apple Pay.
Hide Properties
Hide Properties
An array of string values that specify which required contact information fields should be collected during the checkout process.
Allowed card networks for credit card payments, one of CardNetwork.
Hide Manual payment handling
Hide Manual payment handling
The paymentHandling
option defines how the SDK should handle payment creation and resume.
The default is AUTO
, set paymentHandling
to MANUAL
to turn off automatic payment handling. This disables the callbacks onBeforePayment
and onCheckoutComplete
.
Two callbacks must be implemented:
onTokenizeSuccess()
to create payments with thepaymentMethodToken
.onResumeSuccess()
to resume payments withresumeToken
.
See the Manual Payment Creation guide for examples.
The guide’s examples are written for PrimerCheckout
, but the same concepts apply to PrimerHeadlessCheckout
.
If you set paymentHandling
to MANUAL
, implementing this is mandatory.
Hide Parameters
Hide Parameters
Hide Properties
Hide Properties
The payment instrument token you can use to create a payment request from your backend.
An unique identifier for the payment instrument token.
Additional information about the payment instrument. Depending on the payment method type, only some of the following properties are present on the object.
Hide Properties
Hide Properties
The identifier for the payment method configuration.
The type of the payment method used for the transaction, one of PaymentMethodType.
Information about the session associated with the transaction.
The first six digits of the payment card.
The last four digits of the payment card.
The expiration month of the payment card.
The expiration year of the payment card.
The name of the cardholder as it appears on the payment card.
The network associated with the payment card (e.g., Visa, Mastercard).
Indicates whether the payment card’s network is tokenized.
Information about the Bank Identification Number (BIN) of the payment card.
Data related to 3D Secure authentication for the transaction.
Hide Properties
Hide Properties
Indicates the outcome of the 3D Secure authentication process.
Possible values:
AUTH_SUCCESS
: The authentication was successful.AUTH_FAILED
: The authentication process failed.SKIPPED
: The authentication was skipped.CHALLENGE
: A challenge was issued during the authentication process.
An optional code indicating the reason for the outcome of the 3D Secure authentication.
An optional text description providing further details about the reason for the authentication outcome.
Specifies the version of the 3D Secure protocol that was used.
Indicates whether a challenge was issued as part of the authentication process.
true
: A challenge was issued.false
: No challenge was issued.
The identifier for a PayPal billing agreement, if applicable.
External information about the payer associated with the transaction.
The shipping address for the transaction, if applicable.
The customer token associated with Klarna payment, if applicable.
Additional data related to the session.
The type of the payment instrument.
Example of possible values (new values could be added as we add new payment methods):
APPLE_PAY
CARD_OFF_SESSION_PAYMENT
GOOGLE_PAY
KLARNA_CUSTOMER_TOKEN
OFF_SESSION_PAYMENT
PAYMENT_CARD
PAYPAL_BILLING_AGREEMENT
PAYPAL_ORDER
Data related to 3D Secure authentication for the transaction.
Hide Properties
Hide Properties
Indicates the outcome of the 3D Secure authentication process.
Possible values:
AUTH_SUCCESS
: The authentication was successful.AUTH_FAILED
: The authentication process failed.SKIPPED
: The authentication was skipped.CHALLENGE
: A challenge was issued during the authentication process.
An optional code indicating the reason for the outcome of the 3D Secure authentication.
An optional text description providing further details about the reason for the authentication outcome.
Specifies the version of the 3D Secure protocol that was used.
Indicates whether a challenge was issued as part of the authentication process.
true
: A challenge was issued.false
: No challenge was issued.
Whether this payment method token can be used only once or multiple times.
Called after a customer submitted their payment data and the payment details have been tokenized.
You’ll receive a paymentMethodToken
in onTokenizeSuccess()
.
-
Create a payment request passing the
paymentMethodToken
to your backend -
If the payment is successful, call
handler.handleSuccess()
in order to display a success screen -
If the payment is unsuccessful, call
handler.handleFailure(errorMessage)
to display an error or failure message -
Payments API may return a new
clientToken
for additional steps (in therequiredActions
on the response). In this case, callhandler.continueWithNewClientToken(clientToken)
to continue with the payment flow
Called after a customer submitted their payment data and the payment details could not be tokenized.
Use the PrimerClientError
data to display an error message.
Called when the resume token must be sent to your server to resume the payment flow, typically after the customer has completed some authorization step outside of the Primer SDK.
If you set paymentHandling
to MANUAL
, handling onResumeSuccess()
is required to fully support 3DS and the majority of payment methods.
Hide Parameters
Hide Parameters
Hide Properties
Hide Properties
The resume token you can use to resume the payment flow on your backend.
An unique identifier of the payment on Primer.
-
You will receive a
resumeToken
via theonResumeSuccess()
callback if applicable -
Send a resume payment request with the
resumeToken
-
If the payment is successful, call
handler.handleSuccess()
in order to display a success screen -
If the payment is unsuccessful, call
handler.handleFailure(errorMessage)
to display an error or failure message -
The Payments API may again return a new
clientToken
for additional steps. In this case, callhandler.continueWithNewClientToken(clientToken)
again
Called when the payment cannot be resumed.
Use the PrimerClientError
data to display an error message.
Called to determine if the payment method tokenization should start.
Hide Parameters
Hide Parameters
An object containing a paymentMethodType
property, one of PaymentMethodType.
Implement this if you need to abort the payment method tokenization according to your own logic. You should return true
to continue or false
to abort.
Called just before the payment method tokenization starts. Implement this to perform any custom action, for example, displaying a custom loading indicator.
Called if the payment method tokenization did not start. Receives a reason
as a string.
Hide Parameters
Hide Parameters
-
TOKENIZATION_SHOULD_NOT_START
: tokenization was interrupted returningfalse
fromonTokenizeShouldStart
. -
TOKENIZATION_DISABLED
: tokenization was disabled usingsetIsTokenizationEnabled
orsetPaymentCreationEnabled
.
Hide Client session lifecycle callbacks
Hide Client session lifecycle callbacks
Called when the client session is in the process of being updated. Use it to show a loading indicator on your UI.
Called when the client session has been updated by the checkout. Returns the updated client session which can be used to inform your UI. For example updating tax, shipping or discount amounts displayed to your customers.
Hide Client session caching
Hide Client session caching
Before enabling the flag to true
it’s recommended to reach out to Primer support for additional verification since there are edge cases where it’s not advised.
Indicates whether client session caching is enabled.
When set to true
, responses from the server will be cached on the client side, allowing for faster subsequent
access to the same data within the cache duration. When set to false
, every request to the server will be
processed without utilizing any client-side cache, ensuring that the client always receives the most up-to-date data.
Returns
Hide Returns
Hide Returns
A promise that resolves with an instance of PrimerHeadlessCheckout, which can be used to create and manage payments with your own UI components.
Example
See guide on initializing Headless Checkout for more details.
import { Primer } from "@primer-io/checkout-web";
const clientToken = "YOUR_CLIENT_TOKEN";
const paymentMethodType = "PAYMENT_CARD";
async function createHeadlessCheckout() {
const primerHeadlessCheckout = await Primer.createHeadless(
clientToken,
options
);
// Use the instance to create a payment method manager
const paymentMethodManager =
await primerHeadlessCheckout.createPaymentMethodManager(paymentMethodType);
// Start the checkout process
primerHeadlessCheckout.start();
}