From 95d8e0ffb5ac09e82a35aa33d45102f12e32a158 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mats=20T=C3=B6rnberg?= Date: Wed, 3 Dec 2025 22:56:30 +0100 Subject: [PATCH] add adyen part sessions --- cmd/checkout/pool-server.go | 40 +++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/cmd/checkout/pool-server.go b/cmd/checkout/pool-server.go index b46ba18..a270fbb 100644 --- a/cmd/checkout/pool-server.go +++ b/cmd/checkout/pool-server.go @@ -386,7 +386,14 @@ func (s *CheckoutPoolServer) GetPaymentSessionHandler(w http.ResponseWriter, r * } switch payment.Provider { case "adyen": - return errors.New("not implemented") + // Get Adyen session details + service := s.adyenClient.Checkout() + req := service.PaymentsApi.GetResultOfPaymentSessionInput(payment.PaymentId) + res, _, err := service.PaymentsApi.GetResultOfPaymentSession(r.Context(), req) + if err != nil { + return err + } + return s.WriteResult(w, res) case "klarna": order, err := s.CreateOrUpdateCheckout(r, grain, &payment.PaymentId) if err != nil { @@ -409,7 +416,36 @@ func (s *CheckoutPoolServer) StartPaymentHandler(w http.ResponseWriter, r *http. } switch payload.Provider { case "adyen": - return errors.New("adyen not implemented yet") + meta := GetCheckoutMetaFromRequest(r) + sessionData, err := BuildAdyenCheckoutSession(grain, meta) + if err != nil { + logger.Error("unable to build adyen session", "error", err) + return err + } + 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 + } + + // Apply PaymentStarted mutation + res, err := s.ApplyLocal(r.Context(), checkoutId, &messages.PaymentStarted{ + PaymentId: session.Id, + Amount: session.Amount.Value, + Currency: session.Amount.Currency, + Provider: "adyen", + Method: &payload.Method, + StartedAt: timestamppb.New(time.Now()), + }) + if err != nil { + logger.Error("unable to apply payment started mutation", "error", err) + return err + } + + return s.WriteResult(w, res) + case "klarna": order, err := s.CreateOrUpdateCheckout(r, grain, nil) if err != nil {