Omówienie ustawień dostawy

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

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

Odczytywanie, zapisywanie i aktualizowanie ustawień dostawy

Aby korzystać z usługi dostawy w Merchant API:

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

ETag

ETag to zakodowany token, który zapobiega asynchronicznym aktualizacjom. ETag zmienia się, gdy zmienią się dane ustawień dostawy. Użytkownicy muszą skopiować 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 wysłanie kolejnego żądania GET, aby pobrać najnowszy token ETag. Musisz wywołać żądanie GET, aby pobrać nowy token ETag, i skopiować go do treści żądania INSERT.

Dodawanie ustawień dostawy

Aby dodać lub zaktualizować ustawienia dostawy na koncie, użyj shippingsettings.insert. Oto przykładowe żądanie, które aktualizuje maxTransitDays do 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 ustawień dostawy w Merchant Center możesz zarządzać informacjami o magazynach 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ń w minutach, do której należy złożyć zamówienie, aby zostało ono zrealizowane tego samego dnia w magazynie.
  • {handling_days}: liczba dni potrzebnych temu magazynowi na spakowanie i wysłanie produktu.

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

Zarządzanie magazynami

Oto jak zarządzać magazynami za pomocą Merchant API:

  1. Wyślij żądanie GET, aby pobrać wszystkie dotychczasowe shippingsettings i magazyny.
  2. Skopiuj shippingsettings z żądania GET do żądania UPDATE.

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

  4. Wyślij żądanie UPDATE, które zawiera zasoby shippingsettings i warehouses.

Oto przykładowa treść żądania INSERT z magazynem Warehouse 1 zaktualizowanym 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.

Nie możesz zmienić informacji delivery_time w przypadku dostaw lokalnych. Aby skonfigurować dostawę tego samego dnia w przypadku produktów z lokalnego asortymentu, użyj shippingsettings.insert.

Oto przykładowa treść żądania, która dodaje usługę dostawy tego samego dnia do wszystkich sklepów na 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ń na dostawę tego samego dnia są domyślnie planowane na dostawę następnego dnia. Aby wyłączyć dostawę następnego dnia, ustaw pole no_delivery_post_cutoff na 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 to local_delivery.

Więcej informacji

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