JS library to integrate Swish on a Node.js server.
Swish app proxy for Node.js
The Swish browser library requires a proxy service that operates on the same domain as the store. This service facilitates the loading of additional resources and ensures secure communication with the Swish API.
Installation
npm i @swishapp/node
Usage
The example below is for Remix and needs to be adjusted for other frameworks.
import { ActionFunction, LoaderFunction } from "@remix-run/node";
import { createProxy, MemoryStorage } from "@swishapp/node";
const swishProxy = createProxy({
basePath: "/swish", // Needs to match the route path
authToken: process.env.SWISH_API_TOKEN,
storage: new MemoryStorage(), // Use MemoryStorage for development only!
authenticate: async (request) => {
// Authenticate the request and return customer id or null
// Throw an error if the request cannot be authenticted
return null;
},
onError: (error) => {
console.error(error);
},
});
export const loader: LoaderFunction = async ({ request }) =>
swishProxy.forward(request);
export const action: ActionFunction = async ({ request }) =>
swishProxy.forward(request);
The Swish app for browsers won't work on the server. Use it as a client only script!
// The proxy also serves the Swish brwoser app
import { createApp } from "/swish/assets/swish.js"; // Assuming the proxy runs on /swish
const swish = await createApp({
proxy: {
baseUrl: "/swish", // Use proxy route path
},
});