klarna as global
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
@@ -469,7 +470,26 @@ func (c *CartGrain) HandleMessage(message *Message, isReplay bool) (*FrameWithPa
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
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
|
return &result, nil
|
||||||
}
|
}
|
||||||
case OrderCompletedType:
|
case OrderCompletedType:
|
||||||
|
|||||||
7
main.go
7
main.go
@@ -96,6 +96,7 @@ func (a *App) HandleSave(w http.ResponseWriter, r *http.Request) {
|
|||||||
var podIp = os.Getenv("POD_IP")
|
var podIp = os.Getenv("POD_IP")
|
||||||
var name = os.Getenv("POD_NAME")
|
var name = os.Getenv("POD_NAME")
|
||||||
var amqpUrl = os.Getenv("AMQP_URL")
|
var amqpUrl = os.Getenv("AMQP_URL")
|
||||||
|
var KlarnaInstance = NewKlarnaClient(KlarnaPlaygroundUrl, os.Getenv("KLARNA_API_USERNAME"), os.Getenv("KLARNA_API_PASSWORD"))
|
||||||
|
|
||||||
func GetDiscovery() Discovery {
|
func GetDiscovery() Discovery {
|
||||||
if podIp == "" {
|
if podIp == "" {
|
||||||
@@ -148,9 +149,7 @@ func main() {
|
|||||||
Url: amqpUrl,
|
Url: amqpUrl,
|
||||||
}
|
}
|
||||||
|
|
||||||
klarnaClient := NewKlarnaClient(KlarnaPlaygroundUrl, os.Getenv("KLARNA_API_USERNAME"), os.Getenv("KLARNA_API_PASSWORD"))
|
syncedServer := NewPoolServer(syncedPool, fmt.Sprintf("%s, %s", name, podIp))
|
||||||
|
|
||||||
syncedServer := NewPoolServer(syncedPool, fmt.Sprintf("%s, %s", name, podIp), klarnaClient)
|
|
||||||
mux := http.NewServeMux()
|
mux := http.NewServeMux()
|
||||||
mux.Handle("/cart/", http.StripPrefix("/cart", syncedServer.Serve()))
|
mux.Handle("/cart/", http.StripPrefix("/cart", syncedServer.Serve()))
|
||||||
// only for local
|
// only for local
|
||||||
@@ -197,7 +196,7 @@ func main() {
|
|||||||
orderId := r.URL.Query().Get("order_id")
|
orderId := r.URL.Query().Get("order_id")
|
||||||
log.Printf("Order confirmation push: %s", orderId)
|
log.Printf("Order confirmation push: %s", orderId)
|
||||||
|
|
||||||
order, err := klarnaClient.GetOrder(orderId)
|
order, err := KlarnaInstance.GetOrder(orderId)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Error creating request: %v\n", err)
|
log.Printf("Error creating request: %v\n", err)
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
@@ -19,11 +18,10 @@ type PoolServer struct {
|
|||||||
klarnaClient *KlarnaClient
|
klarnaClient *KlarnaClient
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewPoolServer(pool GrainPool, pod_name string, klarnaClient *KlarnaClient) *PoolServer {
|
func NewPoolServer(pool GrainPool, pod_name string) *PoolServer {
|
||||||
return &PoolServer{
|
return &PoolServer{
|
||||||
pod_name: pod_name,
|
pod_name: pod_name,
|
||||||
pool: pool,
|
pool: pool,
|
||||||
klarnaClient: klarnaClient,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -253,19 +251,13 @@ func (s *PoolServer) HandleCheckout(w http.ResponseWriter, r *http.Request, id C
|
|||||||
return s.WriteResult(w, reply)
|
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 s.WriteResult(w, reply)
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewCartId() CartId {
|
func NewCartId() CartId {
|
||||||
|
|||||||
Reference in New Issue
Block a user