diff --git a/cmd/checkout/pool-server.go b/cmd/checkout/pool-server.go index a182320..4f50d1c 100644 --- a/cmd/checkout/pool-server.go +++ b/cmd/checkout/pool-server.go @@ -400,28 +400,30 @@ func (s *CheckoutPoolServer) GetPaymentSessionHandler(w http.ResponseWriter, r * } switch payment.Provider { case "adyen": - // 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 + var payload *SessionRequest + if r.Method != http.MethodGet { + payload = &SessionRequest{} + if err := json.NewDecoder(r.Body).Decode(payload); err != nil { + return err + } } service := s.adyenClient.Checkout() - req := service.PaymentsApi.SessionsInput().CreateCheckoutSessionRequest(*sessionData) - session, _, err := service.PaymentsApi.Sessions(r.Context(), req) + req := service.PaymentsApi.GetResultOfPaymentSessionInput(payload.SessionId) + if payload != nil { + req = req.SessionResult(payload.SessionResult) + } + res, _, err := service.PaymentsApi.GetResultOfPaymentSession(r.Context(), req) if err != nil { - logger.Error("unable to create adyen session", "error", err) return err } - return s.WriteResult(w, session) + return s.WriteResult(w, res) case "klarna": - order, err := s.CreateOrUpdateCheckout(r, grain, &payment.PaymentId) + current, err := s.klarnaClient.GetOrder(r.Context(), paymentId) if err != nil { return err + } - return s.WriteResult(w, order) + return s.WriteResult(w, current) } return errors.New("unsupported payment provider")