2022-01-21 11:09:35 +01:00

35 lines
1.0 KiB
TypeScript

import type { CheckoutEndpoint } from '.'
import getCredentials from '@framework/api/utils/getCredentials'
import { Order } from '@commercelayer/js-sdk'
const checkout: CheckoutEndpoint['handlers']['checkout'] = async ({
req,
res,
}) => {
let { orderId, accessToken } = req.query
const name = 'CL_TOKEN' + "=";
const cookiesArr = decodeURIComponent(accessToken = typeof accessToken === 'string' ? accessToken : '').split('; ');
cookiesArr.forEach(val => {
if (val.indexOf(name) === 0) accessToken = val.substring(name.length)
})
const { endpoint } = getCredentials()
if (orderId && accessToken) {
const clOrder = await Order.withCredentials({ endpoint, accessToken })
.includes('lineItems')
.find(orderId as string, { rawResponse: true })
const checkoutUrl = clOrder.data.attributes.checkout_url
if (checkoutUrl) {
res.redirect(`${checkoutUrl}?accessToken=${accessToken}`)
} else {
res.redirect('/cart')
}
} else {
res.redirect('/')
}
}
export default checkout