klarna as global
Some checks failed
Build and Publish / BuildAndDeploy (push) Successful in 3m19s
Build and Publish / BuildAndDeployAmd64 (push) Has been cancelled

This commit is contained in:
matst80
2025-04-18 20:58:18 +02:00
parent 6c2328495b
commit 19bbf32e68
3 changed files with 33 additions and 22 deletions

View File

@@ -1,6 +1,7 @@
package main
import (
"bytes"
"encoding/json"
"fmt"
"log"
@@ -469,7 +470,26 @@ func (c *CartGrain) HandleMessage(message *Message, isReplay bool) (*FrameWithPa
if err != nil {
return nil, err
}
result := MakeFrameWithPayload(RemoteCreateOrderReply, 200, orderPayload)
var klarnaOrder *CheckoutOrder
if c.OrderReference != "" {
klarnaOrder, err = KlarnaInstance.UpdateOrder(c.OrderReference, bytes.NewReader(orderPayload))
} else {
klarnaOrder, err = KlarnaInstance.GetOrder(c.OrderReference)
}
if nil != err {
return nil, err
}
c.OrderReference = klarnaOrder.ID
c.PaymentStatus = klarnaOrder.Status
orderData, err := json.Marshal(klarnaOrder)
if nil != err {
return nil, err
}
result := MakeFrameWithPayload(RemoteCreateOrderReply, 200, orderData)
return &result, nil
}
case OrderCompletedType:

View File

@@ -96,6 +96,7 @@ func (a *App) HandleSave(w http.ResponseWriter, r *http.Request) {
var podIp = os.Getenv("POD_IP")
var name = os.Getenv("POD_NAME")
var amqpUrl = os.Getenv("AMQP_URL")
var KlarnaInstance = NewKlarnaClient(KlarnaPlaygroundUrl, os.Getenv("KLARNA_API_USERNAME"), os.Getenv("KLARNA_API_PASSWORD"))
func GetDiscovery() Discovery {
if podIp == "" {
@@ -148,9 +149,7 @@ func main() {
Url: amqpUrl,
}
klarnaClient := NewKlarnaClient(KlarnaPlaygroundUrl, os.Getenv("KLARNA_API_USERNAME"), os.Getenv("KLARNA_API_PASSWORD"))
syncedServer := NewPoolServer(syncedPool, fmt.Sprintf("%s, %s", name, podIp), klarnaClient)
syncedServer := NewPoolServer(syncedPool, fmt.Sprintf("%s, %s", name, podIp))
mux := http.NewServeMux()
mux.Handle("/cart/", http.StripPrefix("/cart", syncedServer.Serve()))
// only for local
@@ -197,7 +196,7 @@ func main() {
orderId := r.URL.Query().Get("order_id")
log.Printf("Order confirmation push: %s", orderId)
order, err := klarnaClient.GetOrder(orderId)
order, err := KlarnaInstance.GetOrder(orderId)
if err != nil {
log.Printf("Error creating request: %v\n", err)

View File

@@ -1,7 +1,6 @@
package main
import (
"bytes"
"encoding/json"
"fmt"
"log"
@@ -19,11 +18,10 @@ type PoolServer struct {
klarnaClient *KlarnaClient
}
func NewPoolServer(pool GrainPool, pod_name string, klarnaClient *KlarnaClient) *PoolServer {
func NewPoolServer(pool GrainPool, pod_name string) *PoolServer {
return &PoolServer{
pod_name: pod_name,
pool: pool,
klarnaClient: klarnaClient,
pod_name: pod_name,
pool: pool,
}
}
@@ -253,19 +251,13 @@ func (s *PoolServer) HandleCheckout(w http.ResponseWriter, r *http.Request, id C
return s.WriteResult(w, reply)
}
order, err := s.klarnaClient.CreateOrder(bytes.NewReader(reply.Payload))
// w.Header().Set("Content-Type", "application/json")
// w.Header().Set("X-Pod-Name", s.pod_name)
// w.Header().Set("Cache-Control", "no-cache")
// w.Header().Set("Access-Control-Allow-Origin", "*")
// w.WriteHeader(http.StatusOK)
if nil != err {
return err
}
w.Header().Set("Content-Type", "application/json")
w.Header().Set("X-Pod-Name", s.pod_name)
w.Header().Set("Cache-Control", "no-cache")
w.Header().Set("Access-Control-Allow-Origin", "*")
w.WriteHeader(http.StatusOK)
return json.NewEncoder(w).Encode(order)
return s.WriteResult(w, reply)
}
func NewCartId() CartId {