diff --git a/.changeset/eleven-insects-eat.md b/.changeset/eleven-insects-eat.md new file mode 100644 index 0000000000..ad903c5196 --- /dev/null +++ b/.changeset/eleven-insects-eat.md @@ -0,0 +1,5 @@ +--- +"medusa-payment-klarna": patch +--- + +Fixes issue where shipping totals are calculated incorrectly diff --git a/packages/medusa-payment-klarna/src/api/routes/hooks/address.js b/packages/medusa-payment-klarna/src/api/routes/hooks/address.js index dc61a4f3c0..1081b4fee3 100644 --- a/packages/medusa-payment-klarna/src/api/routes/hooks/address.js +++ b/packages/medusa-payment-klarna/src/api/routes/hooks/address.js @@ -73,6 +73,7 @@ export default async (req, res) => { "gift_card_total", "subtotal", "total", + "shipping_total", "tax_total", "discount_total", "subtotal", diff --git a/packages/medusa-payment-klarna/src/api/routes/hooks/shipping.js b/packages/medusa-payment-klarna/src/api/routes/hooks/shipping.js index a9058b3771..b7bb449da5 100644 --- a/packages/medusa-payment-klarna/src/api/routes/hooks/shipping.js +++ b/packages/medusa-payment-klarna/src/api/routes/hooks/shipping.js @@ -28,21 +28,19 @@ export default async (req, res) => { ) const ids = selected_shipping_option.id.split(".") - await Promise.all( - ids.map(async (id) => { - const option = shippingOptions.find((so) => so.id === id) - - if (option) { - await cartService.addShippingMethod(cart.id, option.id, option.data) - } - }) - ) + for (const id of ids) { + const option = shippingOptions.find((so) => so.id === id) + if (option) { + await cartService.addShippingMethod(cart.id, option.id, option.data) + } + } const newCart = await cartService.retrieve(cart.id, { select: [ "gift_card_total", "subtotal", "total", + "shipping_total", "tax_total", "discount_total", "subtotal", @@ -61,6 +59,7 @@ export default async (req, res) => { }) const order = await klarnaProviderService.cartToKlarnaOrder(newCart) + res.json(order) } catch (error) { throw error diff --git a/packages/medusa-payment-klarna/src/services/klarna-provider.js b/packages/medusa-payment-klarna/src/services/klarna-provider.js index 6495305644..f9614dbd9b 100644 --- a/packages/medusa-payment-klarna/src/services/klarna-provider.js +++ b/packages/medusa-payment-klarna/src/services/klarna-provider.js @@ -92,7 +92,9 @@ class KlarnaProviderService extends PaymentService { totals.tax_lines.reduce((acc, next) => acc + next.rate, 0) / 100 name.push(next?.shipping_option.name) - taxRate += (totals.total / cart.shipping_total) * methodTaxRate + + total += totals.total + taxRate += (totals.price / cart.shipping_total) * methodTaxRate tax += totals.tax_total } } @@ -103,7 +105,7 @@ class KlarnaProviderService extends PaymentService { type: "shipping_fee", unit_price: total, tax_rate: taxRate * 10000, - total_amount: cart.shipping_total, + total_amount: total, total_tax_amount: tax, }) }