Skip to content

Express Docs v0.1.0


Express Docs / ExpressButtonsConfig

Interface: ExpressButtonsConfig ​

Defined in: src/types.ts:1580

Top-level configuration object passed to ExpressButtons().

Remarks ​

Combines the list of provider button configurations with lifecycle callbacks. The SDK renders all configured providers independently, each in isolation so one failure does not block the others.

The target environment (sandbox / production) is determined at build time — use the corresponding SDK build artifact rather than a config flag.

Example ​

ts
const config: ExpressButtonsConfig = {
  providers: [
    {
      providerProtocolType: 'PayPal',
      paymentMethodType: 'PayPalExpress',
      container: '#paypal-container',
      style: { color: 'gold', shape: 'rect' },
      options: { intent: 'capture', currencyCode: 'USD' },
    },
  ],
  onClick: async (identity) => {
    const resp = await fetch('/api/create-order', { method: 'POST' });
    const data = await resp.json();
    return data.checkoutData; // base64-encoded payload from the server
  },
  onCancel: (identity) => { console.log('Cancelled', identity); },
  onError: (error) => { console.error(error); },
};

Extends ​

Properties ​

disableTelemetry? ​

optional disableTelemetry?: boolean

Defined in: src/types.ts:1590

When true, disables all telemetry collection. Defaults to false (telemetry enabled).

Default Value ​

false


onCancel? ​

optional onCancel?: (identity) => void

Defined in: src/types.ts:1510

Called when the shopper cancels the payment flow (e.g. closes the payment popup without completing). Optional — if omitted, cancellations are still tracked in telemetry but no integrator logic runs.

Parameters ​

identity ​

ProviderIdentity

Identifies which provider was cancelled.

Returns ​

void

Remarks ​

Recommended actions: restore any reserved inventory, show a user-friendly "payment was cancelled" message, and allow the user to try again.

In addition to firing onCancel in the browser, the collana pay backend sends an asynchronous server-to-server cancel callback to your backend so order state stays in sync even if the browser is closed.

Inherited from ​

CallbackHandlers.onCancel


onClick ​

onClick: (identity, options?) => Promise<string>

Defined in: src/types.ts:1494

Called when the shopper clicks a payment button.

Parameters ​

identity ​

ProviderIdentity

Identifies which provider button was clicked ({ providerProtocolType, paymentMethodType }).

options? ​

Record<string, unknown>

The provider-specific options object as configured (e.g. intent, currencyCode, totalAmount). Shape varies by provider.

Returns ​

Promise<string>

A promise resolving to the raw base64-encoded checkoutData string from your backend. Do not decode or parse it — return it as-is.

Remarks ​

This is the most important callback. It connects the SDK to your backend:

  1. The SDK fires onClick with the provider identity and its configured options.
  2. You send these to your backend to create an order via the CollanaPay API.
  3. Your backend responds with a checkoutData string (base64-encoded).
  4. You return that string — the SDK decodes it internally and extracts the fields needed to drive the provider flow (e.g. id for the PayPal order ID, debugId for telemetry correlation, returnUrl for post-approval redirects).

If onClick throws or returns a rejected promise, the payment flow is aborted and onError will fire.

See the Backend API docs for the expected request and response shapes when creating an order server-side.

Example ​

ts
onClick: async (identity, options) => {
  const resp = await fetch('/your-backend/create-transaction', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ provider: identity, options }),
  });
  if (!resp.ok) throw new Error('Order creation failed');
  const data = await resp.json();
  return data.checkoutData;
}

Inherited from ​

CallbackHandlers.onClick


onError? ​

optional onError?: (identity, error) => void

Defined in: src/types.ts:1528

Called when an error occurs during the payment flow. Optional — if omitted, errors are still tracked in telemetry but no integrator logic runs.

Parameters ​

identity ​

ProviderIdentity

Identifies which provider encountered the error ({ providerProtocolType, paymentMethodType }).

error ​

PaymentError

Structured error object with code and message.

Returns ​

void

Remarks ​

Errors can originate from provider SDK failures, network errors, or when onClick rejects. Each provider renders in isolation, so one provider's failure does not prevent other providers from rendering. Each failure triggers a separate onError call.

Recommended actions: log the error for monitoring, show a user-friendly error message, and allow the user to retry.

Inherited from ​

CallbackHandlers.onError


providers ​

providers: ProviderButtonConfig<ProviderKey>[]

Defined in: src/types.ts:1582

One or more provider button configurations to render.

collana pay SDK Documentation