Skip to main content

Documentation Index

Fetch the complete documentation index at: https://primer.io/docs/llms.txt

Use this file to discover all available pages before exploring further.

This method allows you get a new instance of KlarnaComponent.
TYPESCRIPT
async provide(props: KlarnaManagerProps): Promise<KlarnaComponent>

Parameters

Returns

An instance of KlarnaComponent:

Example

TYPESCRIPT
// 👇 Add this
const klarnaManagerProps: KlarnaManagerProps = {
  primerSessionIntent: PrimerSessionIntent.CHECKOUT,
  onStep: (data: KlarnaPaymentStep) => {
    // Show loading indicator, render categories or finalize payment.
    switch (data.stepName) {
      case "paymentSessionCreated":
        // Render categories
        break;

      case "paymentViewLoaded":
        // Render payment view
        break;

      case "paymentSessionAuthorized":
        if (data.isFinalized) {
          // Finalize payment
        }
        break;
      case "paymentSessionFinalized":
        // ...
        break;
    }
  },
  onError: (error: PrimerError) => {
    // An error that occurred during the component's operation.
  },
  onInvalid: (
    data: PrimerInvalidComponentData<KlarnaPaymentValidatableData>
  ) => {
    // Data was considered invalid during validation.
    switch (data.data.validatableDataName) {
      case "klarnaPaymentOptions":
        // ...
        break;
      case "klarnaPaymentFinalization":
        // ...
        break;
    }
  },
  onValid: (data: PrimerValidComponentData<KlarnaPaymentValidatableData>) => {
    // Data was successfully validated.
    switch (data.data.validatableDataName) {
      case "klarnaPaymentOptions":
        // ...
        break;
      case "klarnaPaymentFinalization":
        // ...
        break;
    }
  },
  onValidating: (
    data: PrimerValidatingComponentData<KlarnaPaymentValidatableData>
  ) => {
    // Data is in the process of being validated.
    switch (data.data.validatableDataName) {
      case "klarnaPaymentOptions":
        // ...
        break;
      case "klarnaPaymentFinalization":
        // ...
        break;
    }
  },
  onValidationError: (
    data: PrimerComponentDataValidationError<KlarnaPaymentValidatableData>
  ) => {
    // Error occurred during data validation.
    switch (data.data.validatableDataName) {
      case "klarnaPaymentOptions":
        // ...
        break;
      case "klarnaPaymentFinalization":
        // ...
        break;
    }
  },
};
const klarnaManager = new KlarnaManager();
const klarnaComponent: KlarnaComponent = await klarnaManager.provide(
  klarnaManagerProps
);

Lifecycle

To run consecutive Klarna payments in the same app session, call klarnaComponent.cleanUp() after a payment completes — or before starting another one.
TYPESCRIPT
useEffect(() => {
  return () => {
    klarnaComponent
      ?.cleanUp()
      .catch((err) => console.warn("Klarna cleanUp failed", err));
  };
}, [klarnaComponent]);