JS SDK Overview
JS SDK
JS Initialization
After receiving your API keys, you need to initialize the Paystar JS SDK on your website.
<script>
!(function () {
var n = (window.Paystar = window.Paystar || []);
if (!n.x) {
(n.x = !0),
(n.m = [
"initialize",
"collectPaymentSource",
"completePayment",
"subscribe",
]),
(n.f = function (t) {
return function () {
var e = Array.prototype.slice.call(arguments);
e.unshift(t), n.push(e), n;
};
});
}
for (var o = 0; o < n.m.length; o++) {
var c = n.m[o];
n[c] = n.f(c);
}
(n.load = function (t, e) {
var a = document.createElement("script");
(a.type = "text/javascript"),
(a.async = !0),
(a.src = "https://secure.paystar.io/app/embedded.loader.js");
var r = document.getElementsByTagName("script")[0];
r.parentNode.insertBefore(a, r), (n._loadOptions = e);
}),
(n.SNIPPET_VERSION = "0.1.0");
})();
Paystar.initialize("YOUR_PUBLIC_CLIENT_IDENTIFIER");
Paystar.load();
</script>
In the Paystar.initialize
method, replace YOUR_PUBLIC_CLIENT_IDENTIFIER
with the API key you received during account setup. This initialization script will load the Paystar SDK onto your webpage, enabling it to interact with Paystar's services.
After successfully setting up your account and initializing the SDK, you can use Paystar's services to initiate payments, manage wallets (customer driven), manage paperless billing settings (customer driven), and enroll in autopay (customer driven).
JS Methods
Complete Payment
Used to open a Payment Session.
Paystar.completePayment(sessionUrl, options)
The sessionUrl
is the URL returned from the Paystar API Gateway when initiating the session. options
is an object with the following properties:
// optional, defaults to `true`, when `false` omits rendering the session's close button
closeButton: boolean | undefined
// optional, renders the session into the given container (selector or Element) instead of the popup
container: string | Element | undefined;
// optional, closes the session automatically when processed instead of showing the receipt
closedOnProcessed: boolean | undefined;
// optional, opts into additional console logs
debug: boolean
// optional, callback fired for the PAYMENT-SESSION.PROCESSED event
onComplete: (data: PaymentIntent) => void | undefined;
// optional, callback fired for all events
onEvent: ({ event: string, data: unknown }) => void | undefined;
Start Flow
Used to open all other embedded session types (Autopay, Paperless Billing, Wallet).
Paystar.startFlow(sessionUrl, options)
The sessionUrl
is the URL returned from the Paystar API Gateway when initiating the session. options
is an object with the following properties:
// optional, renders the session into the given container (selector or Element) instead of the popup
container: string | Element | undefined;
// optional, defaults to `true`, when `false` omits rendering the session's close button
closeButton: boolean | undefined
// optional, opts into additional console logs
debug: boolean
// optional, callback fired for all events
onEvent: ({ event: string, data: unknown }) => void | undefined;
Events
The SDK provides a subscribe
function which allows you to subscribe to specific events.
Paystar.subscribe(EVENT_NAME, (payload: unknown) => {
...
})
Additionally, both completePayment
and startFlow
provide an onEvent
option which will execute the callback for all events.
Paystar.startFlow(sessionUrl, {
onEvent: ({ event, data }) => { ... }
})
Events List
The available events and their payloads:
COMPONENT.DISMISS
:undefined
FRAME.LOADED
:undefined
USER.AUTHENTICATED
:{ user: User }
USER.LOADED
:{ user: User }
- Autopay Session
AUTOPAY-SESSION.ENROLLED
:{ enrolled: boolean, processingLeadTimeInDays: number, maximumBalanceAllowed: number, paymentSourceId: number }
AUTOPAY-SESSION.UNENROLLED
:undefined
AUTOPAY-SESSION.SCHEDULED_PAYMENT_CANCELED
:undefined
- Paperless Session
PAPERLESS-SESSION.ENROLLED
:undefined
PAPERLESS-SESSION.UNENROLLED
:undefined
PAPERLESS-SESSION.SCHEDULED_PAYMENT_CANCELED
:undefined
- Payment Session
PAYMENT-SESSION.LOADED
:PaymentIntent
PAYMENT-SESSION.UPDATED
:PaymentIntent
PAYMENT-SESSION.PROCESSED
:PaymentIntent
- Wallet Session
PAYMENT-SOURCE.ADDED
:undefined
PAYMENT-SOURCE.REMOVED
:undefined
A PaymentIntent
is typed as:
type PaymentIntent {
businessUnitId: number;
sessionIdentifier: string;
channel: 'QuickPay' | 'POS';
status: string;
clientReference: string | null;
successUrl: string | null | undefined;
returnUrl: string | null | undefined;
scope: "Embedded";
id: number;
organizationId: number;
lineItems: LineItem[];
paymentSource: PaymentSource;
accounts: AccountSummaryDto[];
isMultiAccount: boolean;
paymentFields: Record<string, unknown>;
paymentFieldsJson: string;
subtotal: number;
serviceFeeCalculation: ServiceFeeCalculationDto | null;
}
API Overview
View the API Spec here.