@mia-burton/klarna-node
Version:
A Node.js module for Klarna
53 lines (52 loc) • 2.11 kB
text/typescript
import { PaymentSession } from "../types"
import { OrderInput } from "../types/klarna"
import { Utils } from "../utils"
export class OrderBodyBuilder {
public build(session: PaymentSession): OrderInput {
return {
billing_address: session.billingAddress ? {
city: session.billingAddress.city,
country: session.billingAddress.country,
email: session.billingAddress.email,
family_name: session.billingAddress.lastName,
given_name: session.billingAddress.firstName,
phone: session.billingAddress.phone,
postal_code: session.billingAddress.postalCode,
region: session.billingAddress.region,
street_address: session.billingAddress.streetAddress,
street_address2: session.billingAddress.streetAddress2,
} : {},
shipping_address: session.shippingAddress ? {
city: session.shippingAddress.city,
country: session.shippingAddress.country,
email: session.shippingAddress.email,
family_name: session.shippingAddress.lastName,
given_name: session.shippingAddress.firstName,
phone: session.shippingAddress.phone,
postal_code: session.shippingAddress.postalCode,
region: session.shippingAddress.region,
street_address: session.shippingAddress.streetAddress,
street_address2: session.shippingAddress.streetAddress2,
} : {},
locale: session.locale,
merchant_reference1: session.mertchantReference,
merchant_urls: {
confirmation: session.urls.confirmation,
authorization: session.urls.authorization,
notification: session.urls.notification,
push: session.urls.push
},
order_amount: Utils.formatPrice(session.amount),
order_lines: session.lines.map((line) =>{
return {
name: line.name,
total_amount: Utils.formatPrice(line.totalAmount),
quantity: line.quantity,
unit_price: Utils.formatPrice(line.unitPrice)
}
}),
purchase_country: session.country,
purchase_currency: session.currency,
}
}
}