Kategorien
Entwicklung GO Lang Programmierung REST API

Neue Funktionen in goshopify

Vor einigen Wochen haben wir ja schon einmal über unsere Shopify Library einen Beitrag verfasst. Nun sind ein paar neue Funktionen hinzu gekommen.

Hier noch einmal ein ausführlicher Bericht zu unserer Library. Diese ist in Golang geschrieben. Und soll eine Übersetzung der Shopify REST API in Funktionen darstellen. Die Library finden Sie hier.

Um die Library in Ihrem Projekt zu hinterlegen, führen Sie einfach folgende Zeile aus (Wir empfehlen immer die go modules.):

go get github.com/jjideenschmiede/goshopify

Request

Damit man nicht immer die Zugangsdaten für jede Funktion neu eingeben muss, haben wir ein Struct dafür gesetzt, welches mit den Shop Daten befüllt werden muss. Und bei jeder Funktion hinterlegt wird.

// Define request
r := &goshopify.Request{
    ApiKey:      "",
    ApiPassword: "",
    StoreName:   "",
}

Produkte

Um nun ein neues Produkt korrekt anlegen zu können, haben wir Structs hinterlegt. Man kann sowohl einfache, als auch variable Produkte darüber anlagen.

// Define request
r := &goshopify.Request{
    ApiKey:      "",
    ApiPassword: "",
    StoreName:   "",
}

// Define body
body := &goshopify.ProductBody{
    goshopify.ProductBodyProduct{
    	Id:          0,
        Title:       "",
        BodyHtml:    "",
        Vendor:      "",
        ProductType: "",
        Status:      "",
        Tags:        "",
        Images:      []goshopify.ProductBodyImages{},
        Variants:    []goshopify.ProductBodyVariants{},
        Options:     []goshopify.ProductBodyOptions{},
    },
}

// Add new images
body.Product.Images = append(body.Product.Images, goshopify.ProductBodyImages{Src: ""})

// Add new variants
body.Product.Variants = append(body.Product.Variants, goshopify.ProductBodyVariants{
    Title:               "",
    Price:               "",
    Sku:                 "",
    CompareAtPrice       "",
    FulfillmentService:  "",
    InventoryManagement: "",
    Option1:             "Default Title",
    Option2:             "",
    Option3:             "",
    Taxable:             false,
    Barcode:             "",
    Grams:               0,
    Weight:              0,
    WeightUnit:          "",
    InventoryQuantity:   0,
    RequiresShipping:    false,
})

// Add new options
body.Product.Options = append(body.Product.Options, goshopify.ProductBodyOptions{
    Name:   "Title",
    Values: []string{"Default Title"},
})

// Add new product
product, err := goshopify.AddProduct(body, r)
if err != nil {
    fmt.Println(err)
} else {
    fmt.Println(product)
}

Wenn man ein Produkt updaten will, dann kann man das mit den gleichen Structs machen. Dabei ist Wichtig, dass in dem Feld Id in dem Struct goshopify.ProductBodyProduct{}, die korrekte Shopify Id des Produktes hinterlegt ist.

Der Code sieht dann so aus:

// Add new product
updateProduct, err := goshopify.UpdateProduct(body, r)
if err != nil {
    fmt.Println(err)
} else {
    fmt.Println(product)
}

Bestellungen

Damit Sie die Bestellungen korrekt auslesen können, haben wir uns folgendes überlegt. Shopify stellt einen URL Parameter bereit, mit dem man eine Liste, von maximal 200 Bestellungen, auslesen kann. Dieser Parameter wird mit der letzten ausgelesenen Order Id befüllt. Beim ersten Import bitte eine 0 nutzen, damit alle Bestellungen eingelesen werden können.

Der dazugehörige Code sieht wie folgt aus:

// Define request
r := &goshopify.Request{
    ApiKey:      "",
    ApiPassword: "",
    StoreName:   "",
}

// Get order list after id (200 items)
orders, err := goshopify.Orders(0, r)
if err != nil {
    fmt.Println(err)
} else {
    fmt.Println(orders)
}

Ich hoffe wir konnten mit diesem Artikel ein bisschen weiterhelfen. Wir würden uns natürlich über einen Star auf Github freuen! Fragen oder Anmerkungen gerne an info@jj-ideenschmiede.de.

Von Jonas Kwiedor

Full- Stack Developer aus Hamburg. Liebt es sich mit Schnittstellen & Automationen auseinander zu setzen und sich mit der Programmiersprache GO Lang zu beschäftigen.