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