@agoransson/klarna-payments
Version:
Typescript wrapper for Klarna Payments API.
67 lines (61 loc) • 1.91 kB
text/typescript
import { RegionError } from "./CommonErrors";
import { Config } from "./Config";
export enum Region {
EU,
US,
OCEANIA
}
export const getRegionValue = (region: Region): string => {
switch (region) {
case Region.EU:
return "";
case Region.US:
return "-na";
case Region.OCEANIA:
return "-oc";
default:
throw new RegionError();
}
}
export const getRegion = (region: string): Region => {
const trimmed = region.trim().toLowerCase();
if (trimmed == "") {
return Region.EU;
} else if (trimmed == "-na") {
return Region.US;
} else if (trimmed == "-oc") {
return Region.OCEANIA;
} else {
throw new RegionError();
}
}
export const URLS = {
API_URL: (config: Config) => (
config.isLive
? `https://api${getRegionValue(config?.region)}.klarna.com`
: `https://api${getRegionValue(config?.region)}.playground.klarna.com`
),
ORDER_API_URL: (authorizationToken: string) => (
`/payments/v1/authorizations/${authorizationToken}/order`
),
CANCEL_AUTHORIZATION_API_URL: (authorizationToken: string) => (
`/payments/v1/authorizations/${authorizationToken}`
),
CREDIT_SESSION_API_URL: (sessionId?: string) => (
sessionId ? `/payments/v1/sessions/${sessionId}`
: "/payments/v1/sessions"
),
CONSUMER_TOKEN_API_URL: (authorizationToken: string) => (
`/payments/v1/authorizations/${authorizationToken}/customer-token`
)
}
/**
* Generate an auth token.
*
* @param username The username
* @param password The password
* @returns The base64 encoded string, used in authorization tokens for API.
*/
export function generateAuth(username: string, password: string): string {
return "Basic " + Buffer.from(`${username}:${password}`).toString("base64");
}