diff --git a/klarna-client.go b/klarna-client.go index 4f5a7ae..1e5f2ff 100644 --- a/klarna-client.go +++ b/klarna-client.go @@ -3,6 +3,7 @@ package main import ( "encoding/json" "fmt" + "github.com/google/uuid" "io" "log" "net/http" @@ -107,8 +108,20 @@ func (k *KlarnaClient) AbortOrder(orderId string) error { req.SetBasicAuth(k.UserName, k.Password) _, err = http.DefaultClient.Do(req) + return err +} + +// ordermanagement/v1/orders/{order_id}/acknowledge +func (k *KlarnaClient) AcknowledgeOrder(orderId string) error { + req, err := http.NewRequest("POST", fmt.Sprintf("%s/ordermanagement/v1/orders/%s/acknowledge", k.Url, orderId), nil) if err != nil { return err } - return nil + id := uuid.New() + + req.SetBasicAuth(k.UserName, k.Password) + req.Header.Add("Klarna-Idempotency-Key", id.String()) + + _, err = http.DefaultClient.Do(req) + return err } diff --git a/main.go b/main.go index f5261a7..d65ff13 100644 --- a/main.go +++ b/main.go @@ -284,19 +284,19 @@ func main() { w.WriteHeader(http.StatusBadRequest) } log.Printf("Klarna order validation: %s", order.ID) - err = confirmOrder(order, orderHandler) - if err != nil { - log.Printf("Error validating order: %v\n", err) - w.WriteHeader(http.StatusInternalServerError) - return - } - - err = triggerOrderCompleted(err, syncedServer, order) - if err != nil { - log.Printf("Error processing cart message: %v\n", err) - w.WriteHeader(http.StatusInternalServerError) - return - } + //err = confirmOrder(order, orderHandler) + //if err != nil { + // log.Printf("Error validating order: %v\n", err) + // w.WriteHeader(http.StatusInternalServerError) + // return + //} + // + //err = triggerOrderCompleted(err, syncedServer, order) + //if err != nil { + // log.Printf("Error processing cart message: %v\n", err) + // w.WriteHeader(http.StatusInternalServerError) + // return + //} w.WriteHeader(http.StatusOK) }) mux.HandleFunc("/push", func(w http.ResponseWriter, r *http.Request) { @@ -329,6 +329,10 @@ func main() { w.WriteHeader(http.StatusInternalServerError) return } + err := KlarnaInstance.AcknowledgeOrder(orderId) + if err != nil { + log.Printf("Error acknowledging order: %v\n", err) + } w.WriteHeader(http.StatusOK) })