1234
showUniversalCheckout( clientToken: string, options: UniversalCheckoutOptions): Promise<PrimerCheckout>
Showing Drop-in Checkout is the simplest way to integrate with Primer. With just a few lines of code, you can display a fully in-context checkout UI with all your payment methods.
Availing Drop-In Checkout is as easy as implementing one line of code.
12345678
import { Primer } from '@primer-io/checkout-web' const checkout = await Primer.showUniversalCheckout(clientToken, { container: '#container', onCheckoutComplete(...args) { console.log('onCheckoutComplete', ...args) },})
Note that there are more options which can be passed to Drop-In Checkout. Please refer to the section below for more information.
Parameters
A string containing a client token as returned by the Primer API when you create a client session.
When calling showUniversalCheckout
you can provide Drop-In Checkout with some configuration options. These
options range from callbacks notifying you of the current payment's status, to styling options for certain UI
elements.
Payment lifecycle callbacks
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.
Parameters
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.
1
return handler.abortPaymentCreation()
Choose to continue with payment creation
1
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, giving access to the service, fulfilling the order, etc.
Parameters
Properties
Properties
Called when the checkout flow has failed. This callback can also be used to display an error state within your own UI.
Parameters
Properties
Properties
Properties
Show an error message.
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.
12345678910111213141516171819
import { Primer } from '@primer-io/checkout-web' const checkout = await Primer.showUniversalCheckout(clientToken, { container: '#container', onCheckoutComplete(...args) { console.log('onCheckoutComplete', ...args) }, onCheckoutFail(error, data, handler) { if (!handler) { return } // Show a default error message return handler.showErrorMessage() // Or show a custom error message // return handler.showErrorMessage('This is my custom message'); },})
Properties
Parameters
Client session lifecycle callbacks
Event callbacks
Notifies you when a specific payment method has been selected or unselected.
Parameters
Properties
Payment methods options
Properties
Properties
Properties
Properties
Properties
Properties
Properties
Properties
Properties
Properties
Properties
Properties
Options for Klarna button.
Properties
Text to be displayed next to the Klarna logo. If provided, it will replace the default Pay with
text.
Properties
Options for Klarna button.
Properties
Text to be displayed next to the Klarna logo. If provided, it will replace the default Pay with
text.
Properties
Properties
Vault options
If this is not necessary for your use case, we recommend setting this to false
to skip the retrieval of the vault and speed up the loading of the checkout.
Default value is true
.
Customization options
See the CheckoutStyle page.
Properties
Drop-In Checkout allows you to use your own submit button for submitting forms. By default, the built-in submit button will be favored.
Note that when disabling the built-in submit button and using your own custom submit button, it is required to implement the submit function in order to notify Drop-In Checkout of form submissions.
When using your own custom submit button, it's important to use the following callbacks to ensure that your submit button is in the correct state and in sync with the checkout as your customers interact with it.
123456789101112131415161718192021222324252627
const options = { /* Other options ... */ submitButton: { useBuiltInButton: false, // Default to true // Callback for receiving the submit button's visible state in the current scene onVisible(isVisible, context: { currentSceneId }) { // Show or hide your custom submit button }, // Callback for receiving the submit button's disabled state in the current scene onDisable(isDisabled, context: { currentSceneId }) { // Disable or enable your custom submit button }, // Callback for receiving the submit button's loading state in the current scene onLoading(isLoading, context: { currentSceneId }) { // Show your submit button in a loading state }, // Callback for receiving the submit button's content in the current scene onContentChange(content, context: { currentSceneId }) { // Set your submit button's content with either the content provided or your own custom content }, },}
Properties
Callbacks
context
context
context
context
Properties
Properties
Callbacks
When the checkout is succefully complete, Drop-In Checkout displays a success scene with a default success message "Your payment was successful!".
Set the option successScreen
to modify the default behavior of the success scene.
Remove the success screen:
1234
const options = { /* Other options ... */ successScreen: false,}
Change the message of the default success screen:
1234567
const options = { /* Other options ... */ successScreen: { type: 'CHECK', title: 'This is a custom success message!', },}
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.
Parameters
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.
Properties
The type of the payment method used for the transaction, one of PaymentMethodType.
Data related to 3D Secure authentication for the transaction.
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.
Indicates whether a challenge was issued as part of the authentication process.
true
: A challenge was issued.false
: No challenge was issued.
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.
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.
Indicates whether a challenge was issued as part of the authentication process.
true
: A challenge was issued.false
: No challenge was issued.
Properties
The customerId
associated to the payment method, if vaulted.
Properties
Display errorMessage
as an error or failure message.
Continue the payment flow using the given clientToken
.
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 backendIf the payment is successful, call
handler.handleSuccess()
in order to display a success screenIf the payment is unsuccessful, call
handler.handleFailure(errorMessage)
to display an error or failure messagePayments 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.
Parameters
Properties
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.
Parameters
Properties
The resume token you can use to resume the payment flow on your backend.
Properties
Display errorMessage
as an error or failure message.
Continue the payment flow using the given clientToken
.
You will receive a
resumeToken
via theonResumeSuccess()
callback if applicableSend a resume payment request with the
resumeToken
If the payment is successful, call
handler.handleSuccess()
in order to display a success screenIf the payment is unsuccessful, call
handler.handleFailure(errorMessage)
to display an error or failure messageThe 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.
Parameters
Properties
Called to determine if the payment method tokenization should start.
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.
Parameters
TOKENIZATION_SHOULD_NOT_START
: tokenization was interrupted returningfalse
fromonTokenizeShouldStart
.TOKENIZATION_DISABLED
: tokenization was disabled usingsetIsTokenizationEnabled
orsetPaymentCreationEnabled
.
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
A promise that is resolved when Drop-In Checkout has been properly rendered on the page, or rejected if any error occurred during initialisation.
The promise is resolved with an instance of PrimerCheckout