Omówienie ustawień dostawy

Zasób ShippingSettings umożliwia pobieranie i aktualizowanie ustawień dostawy na koncie.

Google może automatycznie aktualizować szacowany czas dostawy niektórych produktów. Więcej informacji znajdziesz w artykule Włączanie automatycznych ulepszeń.

Odczytywanie, zapisywanie i aktualizowanie ustawień dostawy

Aby użyć usługi dostawy interfejsu API sprzedawcy, wykonaj te czynności:

  1. Wyślij GET, aby pobrać pełne ustawienia dostawy na koncie.
  2. Zmień ustawienia dostawy.
  3. Wyślij INSERT żądanie ze zmienionymi ustawieniami dostawy.

ETag

Etag to zakodowany token, który zapobiega asynchronicznym aktualizacjom. Tag ETag zmienia się, gdy zmienią się dane dotyczące ustawień dostawy. Użytkownicy muszą skopiować tag ETag uzyskany z żądania GET do treści żądania INSERT.

Jeśli dane ustawień dostawy zmienią się między żądaniem GET a żądaniem INSERT, otrzymasz komunikat o błędzie z prośbą o kolejne żądanie GET w celu pobrania najnowszego tokena etag. Musisz wywołać żądanie GET, aby pobrać nowy token etag, i skopiować go do treści żądania INSERT.

Dodawanie ustawień dostawy

Użyj ikony shippingsettings.insert, aby dodać lub zaktualizować ustawienia dostawy na koncie. Oto przykładowe żądanie, które aktualizuje wartość maxTransitDays na 7 w przypadku usługi dostawy o nazwie GSA Shipping - Free Ship Over $49.99 na koncie 10.

POST https://merchantapi.googleapis.com/accounts/v1/accounts/{accountId}/shippingSettings/

{
  "services": [
    {
      "name": "FedEx",
      "active": true,
      "deliveryCountries": ["US"],
      "currencyCode": "USD",
      "deliveryTime": {
        "minTransitDays": 4,
        "maxTransitDays": 6,
        "minHandlingDays": 0,
        "maxHandlingDays": 0
      },
      "rateGroups": [
        {
          "singleValue": {
            "flatRate": {
              "amountMicros": 5990000,
              "currencyCode": "USD"
            }
          },
          "name": "All products"
        }
      ]
    },
    {
      "name": "GSA Shipping - Free Ship Over $49.99",
      "active": true,
      "deliveryCountries": "US",
      "currencyCode": "USD",
      "deliveryTime": {
        "minTransitDays": 3,
        "maxTransitDays": 7,
        "minHandlingDays": 1,
        "maxHandlingDays": 2
      },
      "rateGroups": [
        {
          "mainTable": {
            "rowHeaders": {
              "prices": [
                {
                  "amountMicros": 49990000,
                  "currencyCode": "USD"
                },
                {
                  "amountMicros": -1,
                  "currencyCode": "USD"
                }
              ]
            },
            "rows": [
              {
                "cells": [
                  {
                    "flatRate": {
                      "amountMicros": 6990000,
                      "currencyCode": "USD"
                    }
                  }
                ]
              },
              {
                "cells": [
                  {
                    "flatRate": {
                      "amountMicros": 0,
                      "currencyCode": "USD"
                    }
                  }
                ]
              }
            ]
          },
          "name": "Free Ship Over $49.99"
        }
      ]
    }
  ]
}

Oto przykład, którego możesz użyć do wstawienia ustawienia dostawy:

Python

from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import GetShippingSettingsRequest
from google.shopping.merchant_accounts_v1 import ShippingSettingsServiceClient

_ACCOUNT = configuration.Configuration().read_merchant_info()
_PARENT = f"accounts/{_ACCOUNT}"


def get_shipping_settings():
  """Gets the ShippingSettings for a given Merchant Center account."""

  # Gets OAuth Credentials.
  credentials = generate_user_credentials.main()

  # Creates a client.
  client = ShippingSettingsServiceClient(credentials=credentials)

  # Creates the Shipping Settings name
  name = _PARENT + "/shippingSettings"

  # Creates the request.
  request = GetShippingSettingsRequest(name=name)

  # Makes the request and prints the retrieved ShippingSettings.
  try:
    response = client.get_shipping_settings(request=request)
    print("Retrieved ShippingSettings below")
    print(response)
  except RuntimeError as e:
    print(e)


if __name__ == "__main__":
  get_shipping_settings()

Ustawianie magazynów

Poniższy przykład JSON pokazuje, jak za pomocą usługi Merchant Shipping Settings zarządzać informacjami o magazynie na koncie Merchant Center:

"warehouses": [
  {
    "name": "warehouse 1",
    "shippingAddress": {
      "streetAddress": {street_address},
      "city": {city},
      "administrativeArea": {administrative_area},
      "postalCode": {postal_code},
      "regionCode": {region_code}
    },
    "cutoffTime": {
      "minutes": {minutes}
    },
    "handlingDays": {handling_days},
    "businessDaysConfig": {
      "businessDays": [
        "MONDAY", "SUNDAY"
      ]
    }
  }
]

Zastąp następujące elementy:

  • {street_address}: część adresu magazynu na poziomie ulicy.
  • {city}: miasto, miejscowość lub gmina, w której znajduje się magazyn.
  • {administrative_area}: podział administracyjny kraju. Na przykład stan.
  • {postal_code}: kod pocztowy.
  • {region_code}: kod kraju w postaci ciągu znaków.
  • {minutes}: część ostatecznego terminu składania zamówień określająca minuty, do których należy złożyć zamówienie, aby zostało ono przetworzone tego samego dnia przez magazyn.
  • {handling_days}: liczba dni potrzebnych na spakowanie i wysłanie produktu z tego magazynu.

Zasób warehouses to lista magazynów. Do każdego magazynu można się odwołać za pomocą czasu dostawy opartego na magazynie usługi dostawy za pomocą warehouse.name.

Zarządzanie magazynami

Aby zarządzać magazynami za pomocą interfejsu Merchant API:

  1. Wyślij GET żądanie pobrania wszystkich istniejących shippingsettings i magazynów.
  2. Skopiuj shippingsettings z żądania GET do żądania UPDATE.

  3. Wypełnij magazyny, jeśli chcesz ich użyć w sekcji warehouses w przypadku żądania INSERT.

  4. Wyślij żądanie UPDATE, które zawiera zasoby shippingsettingswarehouses.

Oto przykładowy INSERTtreść żądania z hurtownią Hurtownia 1 zaktualizowaną z Nowego Jorku do Mountain View:

{
  "services": [
    {
      "name": "Standard Shipping",
      "active": true,
      "deliveryCountries": ["US", "UK"],
      "currencyCode": "USD",
      "deliveryTime": {
        "minHandlingDays": 0,
        "maxHandlingDays": 1,
        "warehouseBasedDeliveryTimes": [
{"carrier": "Fedex"
 "carrierService": "ground"
 "warehouse": "Warehouse 1"
},
{"carrier": "Fedex"
 "carrierService": "2 days"
 "warehouse": "Warehouse 2"
}
]
      },
      "rateGroups": [
        {
          "singleValue": {
            "flatRate": {
              "amountMicros": 0,
              "currencyCode": "USD"
            }
          },
          "name": "Standard Shipping"
        }
      ],
    },
    {
      "name": "Expedited",
            "flatRate": {
              "amountMicros": 9990000,
              "currencyCode": "USD"
            }
          },
          "name": "Expedited"
        }
      ],
    }
  ],
  "warehouses": [
    {
      "name": "Warehouse1",
      "shippingAddress": [
        {
        "streetAddress": "1111 shoreline street"
          "city": "Mountain View",
          "administrativeArea": "CA"
        }
      ]
    },
    {
      "name": "Warehouse 2",
      "country": "US",
      "postalCodeRanges": [
        {
        "streetAddress": "1111 5th avenue"
          "city": "New York",
          "administrativeArea": "NY"
        }
      ]
    }
  ]
}

Dodawanie dostawy tego samego dnia

Jeśli masz lokalny asortyment, możesz używać Content API for Shopping do konfigurowania usług dostawy tego samego dnia. Usługi dostawy tego samego dnia mają local_delivery jako shipment_type. Wszystkie usługi dostawy local_delivery są obecnie traktowane jako dostawy tego samego dnia.

W przypadku dostaw lokalnych nie możesz zmienić informacji o delivery_time. Użyj shippingsettings.insert, aby skonfigurować dostawę tego samego dnia w przypadku produktów z lokalnego asortymentu.

Oto przykładowa treść żądania, która dodaje usługę dostawy tego samego dnia do wszystkich sklepów na Twoim koncie:

{
  "name": "accounts/accountId/shippingSettings",
  "services": [
    {
      "name": "Local Delivery",
      "active": true,
      "shipmentType": "local_delivery",
      "deliveryCountries": "US",
      "currencyCode": "USD",
      "rateGroups": [
        {
          "singleValue": {
            "flatRate": {
              "amountMicros": 0,
              "currencyCode": "USD"
            }
          }
        }
      ],
      "storeConfig": {
        "storeServiceType": "all stores",
        "storeCodes": [],
        "cutoffConfig": {
          "storeCloseOffsetHours": 2,
          "noDeliveryPostCutoff": true
        },
        "serviceRadius": {
          "value": 4,
          "unit": "Miles"
        }
      }
    }
  ]
}

Dodawanie dostawy następnego dnia

Zamówienia złożone po ostatecznym terminie składania zamówień z dostawą tego samego dnia są domyślnie zaplanowane na dostawę następnego dnia. Aby wyłączyć dostawę następnego dnia, ustaw pole no_delivery_post_cutoff na wartość „true”. Jeśli wyłączysz dostawę następnego dnia, Twoje usługi dostawy będą widoczne tylko przed ostatecznym terminem składania zamówień każdego dnia.

Dostawa następnego dnia jest dostępna tylko wtedy, gdy shipment_type jest local_delivery.

Więcej informacji

Więcej informacji o migracji z Content API for Shopping znajdziesz w artykule Migracja zarządzania ustawieniami dostawy.