From e5d2bd1cde4e948f137e62fbf334d437e5d66221 Mon Sep 17 00:00:00 2001 From: Joe Carstairs <65492573+Sycamost@users.noreply.github.com> Date: Mon, 7 Aug 2023 20:00:19 +0100 Subject: Catches errors in createPaypalOrder --- api/createPaypalOrder.ts | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'api') diff --git a/api/createPaypalOrder.ts b/api/createPaypalOrder.ts index 1a6e810..c0053d4 100644 --- a/api/createPaypalOrder.ts +++ b/api/createPaypalOrder.ts @@ -6,7 +6,7 @@ export default async function handler(request: VercelRequest, response: VercelRe const { productDescription, shortDescription, totalPrice }: Partial = request.body; if (request.method !== 'POST') { - response.status(400); + response.status(404); return; } @@ -17,12 +17,18 @@ export default async function handler(request: VercelRequest, response: VercelRe } else if (!totalPrice) { response.status(400).send('Expected body to contain totalPrice, but none provided.'); } else { - const paypalResponse = await paypalCreateOrder({ productDescription, shortDescription, totalPrice }); + try { + const paypalResponse = await paypalCreateOrder({ productDescription, shortDescription, totalPrice }); - if (paypalResponse.ok) { - response.status(200).json({ - orderId: paypalResponse.id, - }); + if (paypalResponse.ok) { + response.status(200).json({ + orderId: paypalResponse.id, + }); + } else { + throw new Error(`PayPal returned ${paypalResponse.statusCode} ${paypalResponse.statusMessage}`); + } + } catch (err) { + response.status(500).send(`Internal server error. ${err}`); } } } -- cgit v1.2.3