diff --git a/cart-grain.go b/cart-grain.go index d10b059..aa063f6 100644 --- a/cart-grain.go +++ b/cart-grain.go @@ -481,7 +481,7 @@ func (c *CartGrain) HandleMessage(message *Message, isReplay bool) (*FrameWithPa Name: item.Name, Quantity: item.Quantity, UnitPrice: int(item.Price), - TaxRate: int(item.Tax), + TaxRate: 2500, QuantityUnit: "st", TotalAmount: int(item.TotalPrice), TotalTaxAmount: int(item.TotalTax), @@ -516,6 +516,7 @@ func (c *CartGrain) HandleMessage(message *Message, isReplay bool) (*FrameWithPa } log.Printf("Order result: %+v", klarnaOrder) if nil != err { + log.Printf("error from klarna: %v", err) return nil, err } if c.OrderReference == "" { diff --git a/klarna-client.go b/klarna-client.go index 614f2b5..c733c7a 100644 --- a/klarna-client.go +++ b/klarna-client.go @@ -41,11 +41,14 @@ func (k *KlarnaClient) GetOrder(orderId string) (*CheckoutOrder, error) { } defer res.Body.Close() var klarnaOrderResponse CheckoutOrder - err = json.NewDecoder(res.Body).Decode(&klarnaOrderResponse) - if err != nil { - return nil, err + if res.StatusCode >= 200 && res.StatusCode <= 299 { + err = json.NewDecoder(res.Body).Decode(&klarnaOrderResponse) + if err != nil { + return nil, err + } + return &klarnaOrderResponse, nil } - return &klarnaOrderResponse, nil + return nil, fmt.Errorf(res.Status) } func (k *KlarnaClient) CreateOrder(reader io.Reader) (*CheckoutOrder, error) { @@ -63,9 +66,12 @@ func (k *KlarnaClient) CreateOrder(reader io.Reader) (*CheckoutOrder, error) { return nil, err } defer res.Body.Close() - var klarnaOrderResponse CheckoutOrder - err = json.NewDecoder(res.Body).Decode(&klarnaOrderResponse) - return &klarnaOrderResponse, err + if res.StatusCode >= 200 && res.StatusCode <= 299 { + var klarnaOrderResponse CheckoutOrder + err = json.NewDecoder(res.Body).Decode(&klarnaOrderResponse) + return &klarnaOrderResponse, err + } + return nil, fmt.Errorf(res.Status) } func (k *KlarnaClient) UpdateOrder(orderId string, reader io.Reader) (*CheckoutOrder, error) { @@ -83,9 +89,12 @@ func (k *KlarnaClient) UpdateOrder(orderId string, reader io.Reader) (*CheckoutO return nil, err } defer res.Body.Close() - var klarnaOrderResponse CheckoutOrder - err = json.NewDecoder(res.Body).Decode(&klarnaOrderResponse) - return &klarnaOrderResponse, err + if res.StatusCode >= 200 && res.StatusCode <= 299 { + var klarnaOrderResponse CheckoutOrder + err = json.NewDecoder(res.Body).Decode(&klarnaOrderResponse) + return &klarnaOrderResponse, err + } + return nil, fmt.Errorf(res.Status) } func (k *KlarnaClient) AbortOrder(orderId string) error { diff --git a/pool-server.go b/pool-server.go index 7e19bf9..cda128a 100644 --- a/pool-server.go +++ b/pool-server.go @@ -274,7 +274,9 @@ func CookieCartIdHandler(fn func(w http.ResponseWriter, r *http.Request, cartId http.SetCookie(w, &http.Cookie{ Name: "cartid", Value: cartId.String(), + HttpOnly: true, Path: "/", + Expires: time.Now().AddDate(0, 0, 14), SameSite: http.SameSiteLaxMode, }) } else { @@ -290,6 +292,7 @@ func (s *PoolServer) RemoveCartCookie(w http.ResponseWriter, r *http.Request, ca Name: "cartid", Value: cartId.String(), Path: "/", + Expires: time.Unix(0, 0), SameSite: http.SameSiteLaxMode, }) w.WriteHeader(http.StatusOK)