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, wykonaj te czynności:

  1. Aby pobrać pełne ustawienia dostawy z konta, wyślij żądanie GET.
  2. Zmień ustawienia dostawy.
  3. Prześlij prośbę INSERT z zmienionymi ustawieniami dostawy.

ETag

Etag to zakodowany token, który zapobiega asynchronicznym aktualizacjom. Etag zmienia się, gdy zmieni się dowolne ustawienie dostawy. Użytkownicy muszą skopiować tag otrzymany z prośby GET do treści prośby INSERT.

Jeśli dane ustawień dostawy zmienią się między żądaniem GET a INSERT, otrzymasz komunikat o błędzie z prośbą o kolejne żądanie GET w celu pobrania najnowszego tokenu e-tag. Aby pobrać nowy token eTag, musisz wywołać żądanie GET i skopiować nowy token eTag do treści żądania INSERT.

Dodawanie ustawień dostawy

Aby dodać lub zaktualizować ustawienia dostawy na koncie, kliknij shippingsettings.insert. Oto przykładowa prośba, która aktualizuje wartość parametru maxTransitDays na 7 w przypadku usługi dostawy o nazwie GSA Shipping – bezpłatna dostawa przy zamówieniach powyżej 49,99 USD 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ładowy kod, który możesz użyć do wstawienia 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

Ten przykładowy dokument JSON pokazuje, jak za pomocą usługi ustawień dostawy dla sprzedawców możesz 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 odpowiadająca ulicy.
  • {city}: miasto lub gmina, w której znajduje się magazyn.
  • {administrative_area}: jednostka administracyjna kraju. Na przykład stan.
  • {postal_code}: kod pocztowy.
  • {region_code}: kod kraju w postaci ciągu znaków.
  • {minutes}: minuty stanowiące część ostatniego terminu, do którego należy złożyć zamówienie, aby zostało ono przetworzone tego samego dnia przez magazyn.
  • {handling_days}: liczba dni potrzebnych magazynowi na zapakowanie i wysłanie produktu.

Zasób warehouses to lista magazynów. Każde centrum danych może być określane przez czas dostawy na podstawie centrum danych usługi dostawy za pomocą funkcji warehouse.name.

Zarządzanie magazynami

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

  1. Aby pobrać wszystkie istniejące shippingsettings i magazyny, wyślij GET.
  2. Skopiuj shippingsettings z prośby GET do prośby UPDATE.

  3. Wypełnij pola z danymi o magazynach, jeśli chcesz ich użyć w sekcji warehouses prośby INSERT.

  4. Prześlij żądanie UPDATE zawierające zasoby shippingsettings i warehouses.

Oto przykładowy INSERT z danymi o hurtowni Warehouse 1 z aktualizowaną lokalizacją z Nowego Jorku na 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"
        }
      ]
    }
  ]
}

Dodaj dostawę 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. Obecnie wszystkie usługi dostawy local_delivery są uznawane za dostawy tego samego dnia.

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

Oto przykładowy tekst żądania, który 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"
        }
      }
    }
  ]
}

Dodaj dostawę następnego dnia

Zamówienia złożone po ostatecznym terminie dostawy tego samego dnia są domyślnie planowane do dostawy 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, usługi dostawy będą widoczne tylko przed ostatecznym terminem 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 Przenoszenie zarządzania ustawieniami dostawy.