diff --git a/cmd/checkout/pool-server.go b/cmd/checkout/pool-server.go index a270fbb..ca29eba 100644 --- a/cmd/checkout/pool-server.go +++ b/cmd/checkout/pool-server.go @@ -386,14 +386,22 @@ func (s *CheckoutPoolServer) GetPaymentSessionHandler(w http.ResponseWriter, r * } switch payment.Provider { case "adyen": - // Get Adyen session details - service := s.adyenClient.Checkout() - req := service.PaymentsApi.GetResultOfPaymentSessionInput(payment.PaymentId) - res, _, err := service.PaymentsApi.GetResultOfPaymentSession(r.Context(), req) + // For Adyen, recreate the session with updated cart data + // The frontend uses this to reinitialize the Drop-in component + meta := GetCheckoutMetaFromRequest(r) + sessionData, err := BuildAdyenCheckoutSession(grain, meta) if err != nil { + logger.Error("unable to build adyen session", "error", err) return err } - return s.WriteResult(w, res) + service := s.adyenClient.Checkout() + req := service.PaymentsApi.SessionsInput().CreateCheckoutSessionRequest(*sessionData) + session, _, err := service.PaymentsApi.Sessions(r.Context(), req) + if err != nil { + logger.Error("unable to create adyen session", "error", err) + return err + } + return s.WriteResult(w, session) case "klarna": order, err := s.CreateOrUpdateCheckout(r, grain, &payment.PaymentId) if err != nil {