Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
131af89f4f | ||
|
|
b93afeec2f | ||
|
|
bc56b4d16a |
@@ -1,6 +1,7 @@
|
||||
package snipcart
|
||||
|
||||
type OrderStatus string
|
||||
type NotificationType string
|
||||
|
||||
const (
|
||||
Processed OrderStatus = "Processed"
|
||||
@@ -10,4 +11,10 @@ const (
|
||||
Pending = "Pending"
|
||||
Cancelled = "Cancelled"
|
||||
Dispatched = "Dispatched"
|
||||
|
||||
Comment NotificationType = "Comment"
|
||||
OrderStatusChanged = "OrderStatusChanged"
|
||||
OrderShipped = "OrderShipped"
|
||||
TrackingNumber = "TrackingNumber"
|
||||
Invoice = "Invice"
|
||||
)
|
||||
@@ -5,6 +5,7 @@ import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
helper "github.com/debyltech/go-helpers/json"
|
||||
"github.com/skip2/go-qrcode"
|
||||
@@ -48,6 +49,8 @@ type SnipcartItem struct {
|
||||
|
||||
type SnipcartOrder struct {
|
||||
Token string `json:"token"`
|
||||
Created time.Time `json:"creationDate"`
|
||||
Modified time.Time `json:"modificationDate"`
|
||||
Invoice string `json:"invoiceNumber"`
|
||||
Subtotal float64 `json:"subtotal,omitempty"`
|
||||
Currency string `json:"currency,omitempty"`
|
||||
@@ -95,6 +98,23 @@ type SnipcartTax struct {
|
||||
Rate float64 `json:"rate"`
|
||||
}
|
||||
|
||||
type SnipcartNotification struct {
|
||||
Type NotificationType `json:"type"`
|
||||
DeliveryMethod string `json:"deliveryMethod"`
|
||||
Message string `json:"message,omitempty"`
|
||||
}
|
||||
|
||||
type SnipcartNotificationResponse struct {
|
||||
Id string `json:"id"`
|
||||
Created time.Time `json:"creationDate"`
|
||||
Type NotificationType `json:"type"`
|
||||
DeliveryMethod string `json:"deliveryMethod"`
|
||||
Body string `json:"body"`
|
||||
Message string `json:"message"`
|
||||
Subject string `json:"subject"`
|
||||
SentOn time.Time `json:"sentOn"`
|
||||
}
|
||||
|
||||
func NewClient(snipcartApiKey string) Client {
|
||||
return Client{
|
||||
SnipcartKey: snipcartApiKey,
|
||||
@@ -167,7 +187,6 @@ func (s *Client) UpdateOrder(token string, orderUpdate *SnipcartOrderUpdate) (*S
|
||||
if response.StatusCode < 200 && response.StatusCode >= 300 {
|
||||
return nil, fmt.Errorf("unexpected response received: %s", response.Status)
|
||||
}
|
||||
fmt.Println(response.Status)
|
||||
|
||||
defer response.Body.Close()
|
||||
|
||||
@@ -179,3 +198,20 @@ func (s *Client) UpdateOrder(token string, orderUpdate *SnipcartOrderUpdate) (*S
|
||||
|
||||
return &responseOrder, nil
|
||||
}
|
||||
|
||||
func (s *Client) SendNotification(token string, notification *SnipcartNotification) (*SnipcartNotificationResponse, error) {
|
||||
response, err := helper.Post(orderUri+"/"+token+"/notifications", "Basic", s.AuthBase64, notification)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
defer response.Body.Close()
|
||||
|
||||
var responseNotification SnipcartNotificationResponse
|
||||
err = json.NewDecoder(response.Body).Decode(&responseNotification)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &responseNotification, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user