จัดการข้อตกลงเกี่ยวกับข้อกำหนดในการให้บริการของ Merchant Center

หากต้องการใช้ Merchant Center และฟีเจอร์ต่างๆ คุณต้องยอมรับข้อกำหนดในการให้บริการ (ToS) ของ Merchant Center สำหรับสถานที่ตั้งธุรกิจของคุณ ข้อตกลงเหล่านี้ระบุข้อกำหนดทางกฎหมายสำหรับการใช้บริการ Merchant Center

คู่มือนี้อธิบายวิธีใช้ Merchant API เพื่อจัดการข้อตกลงเหล่านี้ ไม่ว่าจะเป็นบัญชีของคุณเองหรือบัญชีที่คุณจัดการในฐานะผู้ให้บริการบุคคลที่สาม (3P)

คุณจะทำสิ่งต่อไปนี้ได้

  • ตรวจสอบสถานะข้อตกลงตามข้อกำหนดในการให้บริการปัจจุบันของบัญชี
  • แนะนําให้ผู้ขายยอมรับข้อกำหนดในการให้บริการที่จำเป็น
  • จัดการข้อกำหนดในการให้บริการในฐานะผู้ให้บริการบุคคลที่สามสำหรับบัญชีลูกค้าหรือบัญชีแบบสแตนด์อโลน

ข้อกำหนดเบื้องต้น

หากต้องการใช้ Merchant API คุณต้องมีบัญชี Merchant Center เมื่อสร้างบัญชีโดยใช้ อินเทอร์เฟซผู้ใช้ (UI) ของ Merchant Center แล้ว คุณจะ ทำการเปลี่ยนแปลงในบัญชีได้ (เช่น อัปเดตข้อมูลทางธุรกิจ จัดการ ผู้ใช้ ฯลฯ) โดยใช้ UI หรือ API

หากต้องการจัดการหลายบัญชี คุณสามารถสร้างบัญชีลูกค้าได้โดยใช้ Merchant API ดูหัวข้อสร้างและจัดการ บัญชีย่อย

ตรวจสอบสถานะการยอมรับข้อกำหนดในการให้บริการของบัญชี

ก่อนที่ผู้ขายจะใช้ Merchant Center ได้อย่างเต็มที่ หรือหากคุณต้องการยืนยันสถานะข้อตกลงปัจจุบันของผู้ขาย คุณสามารถดึงสถานะข้อตกลงในข้อกำหนดในการให้บริการของผู้ขายได้

ใช้เมธอด termsOfServiceAgreementStates.retrieveForApplication เพื่อรับสถานะข้อตกลงในข้อกำหนดในการให้บริการสำหรับแอปพลิเคชันหลักของ Merchant Center เมธอดนี้จะแสดงข้อกำหนดในการให้บริการปัจจุบัน (หากมี) และหากมีการอัปเดตข้อกำหนดในการให้บริการ นับตั้งแต่ที่คุณยอมรับครั้งล่าสุด ก็จะแสดงเวอร์ชันล่าสุดที่คุณต้องยอมรับ

ตัวอย่างคำขอมีดังนี้

GET https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/termsOfServiceAgreementStates:retrieveForApplication

การเรียกที่สำเร็จจะแสดงผลทรัพยากร TermsOfServiceAgreementState แหล่งข้อมูลนี้มีข้อมูลต่อไปนี้

  • name: ตัวระบุสำหรับสถานะข้อตกลงนี้
  • regionCode: ประเทศที่สถานะข้อตกลงนี้มีผลบังคับใช้ ซึ่งโดยปกติแล้วจะเป็น ประเทศที่ตั้งธุรกิจของบัญชี
  • termsOfServiceKind: ซึ่งจะเป็น MERCHANT_CENTER
  • accepted: รายละเอียดเกี่ยวกับข้อกำหนดในการให้บริการเวอร์ชันที่บัญชีได้ยอมรับแล้ว รวมถึงชื่อทรัพยากร termsOfService (เช่น termsOfService/132) และผู้ที่acceptedBy นอกจากนี้ยังอาจมีvalidUntilวันที่หากมีข้อกำหนดในการให้บริการเวอร์ชันใหม่กว่าrequired
  • required: รายละเอียดเกี่ยวกับข้อกำหนดในการให้บริการเวอร์ชันที่บัญชีต้องยอมรับ ซึ่งรวมถึงtermsOfServiceชื่อทรัพยากรและtosFileUriที่ชี้ไปยัง เอกสารข้อกำหนดในการให้บริการที่มนุษย์อ่านได้

ตัวอย่างคำตอบ:

{
  "name": "accounts/{ACCOUNT_ID}/termsOfServiceAgreementStates/MERCHANT_CENTER-{REGION_CODE}",
  "regionCode": "{REGION_CODE}",
  "termsOfServiceKind": "MERCHANT_CENTER",
  "accepted": {
    "termsOfService": "termsOfService/132",
    "acceptedBy": "accounts/{ACCOUNT_ID}"
  },
  "required": {
    "termsOfService": "termsOfService/132",
    "tosFileUri": "https://www.google.com/intl/{REGION_CODE}/policies/merchants/terms/"
  }
}

หากมีข้อกำหนดในการให้บริการใหม่required คุณควรแนะนำให้ผู้ขายยอมรับข้อกำหนดดังกล่าว

นี่คือตัวอย่างที่คุณใช้เพื่อดึงข้อมูลสถานะข้อตกลงเกี่ยวกับข้อกำหนดในการให้บริการสำหรับ บัญชีและประเทศที่เฉพาะเจาะจงได้

Java

import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.GetTermsOfServiceAgreementStateRequest;
import com.google.shopping.merchant.accounts.v1.TermsOfServiceAgreementState;
import com.google.shopping.merchant.accounts.v1.TermsOfServiceAgreementStateName;
import com.google.shopping.merchant.accounts.v1.TermsOfServiceAgreementStateServiceClient;
import com.google.shopping.merchant.accounts.v1.TermsOfServiceAgreementStateServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/**
 * This class demonstrates how to get a TermsOfServiceAgreementState for a specific
 * TermsOfServiceKind and country.
 */
public class GetTermsOfServiceAgreementStateSample {

  public static void getTermsOfServiceAgreementState(Config config) throws Exception {

    // Obtains OAuth token based on the user's configuration.
    GoogleCredentials credential = new Authenticator().authenticate();

    // Creates service settings using the credentials retrieved above.
    TermsOfServiceAgreementStateServiceSettings termsOfServiceAgreementStateServiceSettings =
        TermsOfServiceAgreementStateServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Creates TermsOfServiceAgreementState name to identify TermsOfServiceAgreementState.
    String name =
        TermsOfServiceAgreementStateName.newBuilder()
            .setAccount(config.getAccountId().toString())
            // The Identifier is: "{TermsOfServiceKind}-{country}"
            .setIdentifier("MERCHANT_CENTER-US")
            .build()
            .toString();

    System.out.println(name);

    // Calls the API and catches and prints any network failures/errors.
    try (TermsOfServiceAgreementStateServiceClient termsOfServiceAgreementStateServiceClient =
        TermsOfServiceAgreementStateServiceClient.create(
            termsOfServiceAgreementStateServiceSettings)) {

      // The name has the format:
      // accounts/{account}/termsOfServiceAgreementStates/{TermsOfServiceKind}-{country}
      GetTermsOfServiceAgreementStateRequest request =
          GetTermsOfServiceAgreementStateRequest.newBuilder().setName(name).build();

      System.out.println("Sending Get TermsOfServiceAgreementState request:");
      TermsOfServiceAgreementState response =
          termsOfServiceAgreementStateServiceClient.getTermsOfServiceAgreementState(request);

      System.out.println("Retrieved TermsOfServiceAgreementState below");
      // If the terms of service needs to be accepted, the "required" field will include the
      // specific version of the terms of service which needs to be accepted, alongside a link to
      // the terms of service itself.
      System.out.println(response);
    } catch (Exception e) {
      System.out.println(e);
    }
  }


  public static void main(String[] args) throws Exception {
    Config config = Config.load();

    getTermsOfServiceAgreementState(config);
  }
}

PHP

use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Accounts\V1\Client\TermsOfServiceAgreementStateServiceClient;
use Google\Shopping\Merchant\Accounts\V1\GetTermsOfServiceAgreementStateRequest;

/**
 * Demonstrates how to get a TermsOfServiceAgreementState.
 */
class GetTermsOfServiceAgreementState
{

    /**
     * Gets a TermsOfServiceAgreementState.
     *
     * @param array $config The configuration data.
     * @return void
     */
    public static function getTermsOfServiceAgreementState($config): void
    {
        // Get OAuth credentials.
        $credentials = Authentication::useServiceAccountOrTokenFile();

        // Create client options.
        $options = ['credentials' => $credentials];

        // Create a TermsOfServiceAgreementStateServiceClient.
        $termsOfServiceAgreementStateServiceClient = new TermsOfServiceAgreementStateServiceClient($options);

        // Service agreeement identifier
        $identifier = "MERCHANT_CENTER-US";

        // Create TermsOfServiceAgreementState name.
        $name = "accounts/" . $config['accountId'] . "/termsOfServiceAgreementStates/" . $identifier;

        print $name . PHP_EOL;

        try {
            // Prepare the request.
            $request = new GetTermsOfServiceAgreementStateRequest([
                'name' => $name,
            ]);

            print "Sending Get TermsOfServiceAgreementState request:" . PHP_EOL;
            $response = $termsOfServiceAgreementStateServiceClient->getTermsOfServiceAgreementState($request);

            print "Retrieved TermsOfServiceAgreementState below\n";
            print $response->serializeToJsonString() . PHP_EOL;
        } catch (ApiException $e) {
            print $e->getMessage();
        }
    }

    /**
     * Helper to execute the sample.
     *
     * @return void
     */
    public function callSample(): void
    {
        $config = Config::generateConfig();

        self::getTermsOfServiceAgreementState($config);
    }

}

// Run the script
$sample = new GetTermsOfServiceAgreementState();
$sample->callSample();

Python

from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import GetTermsOfServiceAgreementStateRequest
from google.shopping.merchant_accounts_v1 import TermsOfServiceAgreementStateServiceClient

# Replace with your actual value.
_ACCOUNT_ID = configuration.Configuration().read_merchant_info()
_IDENTIFIER = "MERCHANT_CENTER-US"  # Replace with your identifier


def get_terms_of_service_agreement_state():
  """Gets a TermsOfServiceAgreementState for a specific TermsOfServiceKind and country."""

  credentials = generate_user_credentials.main()
  client = TermsOfServiceAgreementStateServiceClient(credentials=credentials)

  name = (
      "accounts/"
      + _ACCOUNT_ID
      + "/termsOfServiceAgreementStates/"
      + _IDENTIFIER
  )

  print(name)

  request = GetTermsOfServiceAgreementStateRequest(name=name)

  try:
    print("Sending Get TermsOfServiceAgreementState request:")
    response = client.get_terms_of_service_agreement_state(request=request)
    print("Retrieved TermsOfServiceAgreementState below")
    print(response)
  except RuntimeError as e:
    print(e)


if __name__ == "__main__":
  get_terms_of_service_agreement_state()

ยอมรับข้อกำหนดในการให้บริการ

ผู้ขายต้องยอมรับข้อกำหนดในการให้บริการล่าสุดเพื่อคงสิทธิ์เข้าถึงฟีเจอร์ของ Merchant Center

ยอมรับข้อกำหนดในการให้บริการสำหรับบัญชีของคุณเอง

หากคุณจัดการบัญชี Merchant Center ของตัวเอง ให้ทำดังนี้

  1. โทรหา termsOfServiceAgreementStates.retrieveForApplication เพื่อตรวจสอบว่ามีข้อกำหนดในการให้บริการใดที่required
  2. หากต้องมีข้อกำหนดในการให้บริการ ให้จดtermsOfServiceชื่อจากrequired ฟิลด์ (เช่น termsOfService/132)
  3. โทรหา termsOfService.accept เพื่อยอมรับข้อกำหนดในการให้บริการ คุณจะต้องมีชื่อ ToS, ACCOUNT_ID และ regionCode ที่ได้จาก retrieveForApplication

    ตัวอย่างคำขอมีดังนี้

    POST https://merchantapi.googleapis.com/accounts/v1/{name={termsOfService/VERSION}}:accept
    {
      "account": "accounts/{ACCOUNT_ID}",
      "regionCode": "{REGION_CODE}"
    }
    

    การเรียกที่สำเร็จจะแสดงเนื้อหาการตอบกลับที่ว่างเปล่า และอัปเดตสถานะการยอมรับข้อกำหนดในการให้บริการของบัญชี

แนะนําผู้ขายให้ยอมรับข้อกำหนดในการให้บริการ (สําหรับผู้ให้บริการบุคคลที่สาม)

หากคุณเป็นผู้ให้บริการบุคคลที่สาม (3P) ที่จัดการบัญชี Merchant Center แบบสแตนด์อโลนสำหรับธุรกิจอื่นๆ คุณต้องไม่ยอมรับข้อกำหนดในการให้บริการในนามของธุรกิจเหล่านั้น แต่คุณควรทำดังนี้แทน

  1. ดึงข้อมูลข้อกำหนดในการให้บริการล่าสุด: เรียกใช้ termsOfService.retrieveLatest สำหรับ regionCode และ MERCHANT_CENTER ของผู้ขายเพื่อดู รายละเอียดของข้อกำหนดในการให้บริการเวอร์ชันล่าสุดที่ผู้ขายอาจต้องยอมรับ

    ตัวอย่างคำขอ

    GET https://merchantapi.googleapis.com/accounts/v1/termsOfService:retrieveLatest?regionCode={REGION_CODE}&kind=MERCHANT_CENTER
    

    ตัวอย่างการตอบกลับ

    {
        "name": "{termsOfService/VERSION}",
        "regionCode": "{REGION_CODE}",
        "kind": "MERCHANT_CENTER",
        "fileUri": "https://www.google.com/intl/{REGION_CODE}/policies/merchants/terms/"
    }
    
  2. แสดงข้อกำหนดในการให้บริการ: ใช้ fileUri จากการตอบกลับเพื่อแสดงข้อความฉบับเต็มของข้อกำหนดในการให้บริการแก่ผู้ขายภายใน UI ของแอปพลิเคชัน

  3. ได้รับการยอมรับจากผู้ขาย: ผู้ขายต้องยอมรับข้อกำหนดอย่างชัดแจ้งภายใน UI ของคุณ

  4. บันทึกการยอมรับโดยใช้ API: หลังจากผู้ขายยอมรับ ให้เรียกใช้ termsOfService.accept โดยใช้ name ของข้อกำหนดในการให้บริการที่ได้รับในขั้นตอนที่ 1, ACCOUNT_ID ของผู้ขาย และ regionCode ของผู้ขาย

    ตัวอย่างคำขอ

    POST https://merchantapi.googleapis.com/accounts/v1/{name={termsOfService/VERSION}}:accept
    {
      "account": "accounts/{MERCHANT_ACCOUNT_ID}",
      "regionCode": "{REGION_CODE}"
    }
    

ต่อไปนี้คือตัวอย่างที่คุณใช้เพื่อยอมรับข้อตกลงเกี่ยวกับข้อกำหนดในการให้บริการสำหรับบัญชีหนึ่งๆ ได้ (หลังจากที่ผู้ขายยอมรับแล้ว)

Java

import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.AcceptTermsOfServiceRequest;
import com.google.shopping.merchant.accounts.v1.TermsOfServiceServiceClient;
import com.google.shopping.merchant.accounts.v1.TermsOfServiceServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/** This class demonstrates how to accept the TermsOfService agreement in a given account. */
public class AcceptTermsOfServiceSample {

  public static void acceptTermsOfService(String accountId, String tosVersion, String regionCode)
      throws Exception {

    // Obtains OAuth token based on the user's configuration.
    GoogleCredentials credential = new Authenticator().authenticate();

    // Creates service settings using the credentials retrieved above.
    TermsOfServiceServiceSettings tosServiceSettings =
        TermsOfServiceServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Calls the API and catches and prints any network failures/errors.
    try (TermsOfServiceServiceClient tosServiceClient =
        TermsOfServiceServiceClient.create(tosServiceSettings)) {

      // The parent has the format: accounts/{account}
      AcceptTermsOfServiceRequest request =
          AcceptTermsOfServiceRequest.newBuilder()
              .setName(String.format("termsOfService/%s", tosVersion))
              .setAccount(String.format("accounts/%s", accountId))
              .setRegionCode(regionCode)
              .build();

      System.out.println("Sending request to accept terms of service...");
      tosServiceClient.acceptTermsOfService(request);

      System.out.println("Successfully accepted terms of service.");
    } catch (Exception e) {
      System.out.println(e);
    }
  }

  public static void main(String[] args) throws Exception {
    Config config = Config.load();

    // See GetTermsOfServiceAgreementStateSample to understand how to check which version of the
    // terms of service needs to be accepted, if any.
    // Likewise, if you know that the terms of service needs to be accepted, you can also simply
    // call RetrieveLatestTermsOfService to get the latest version of the terms of service.
    // Region code is either a country when the ToS applies specifically to that country or 001 when
    // it applies globally.
    acceptTermsOfService(config.getAccountId().toString(), "VERSION_HERE", "REGION_CODE_HERE");
  }
}

PHP

use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Accounts\V1\AcceptTermsOfServiceRequest;
use Google\Shopping\Merchant\Accounts\V1\Client\TermsOfServiceServiceClient;

/**
 * Demonstrates how to accept the TermsOfService agreement in a given account.
 */
class AcceptTermsOfService
{

    /**
     * Accepts the Terms of Service agreement.
     *
     * @param string $accountId The account ID.
     * @param string $tosVersion The Terms of Service version.
     * @param string $regionCode The region code.
     * @return void
     */
    public static function acceptTermsOfService($accountId, $tosVersion, $regionCode): void
    {
        // Get OAuth credentials.
        $credentials = Authentication::useServiceAccountOrTokenFile();

        // Create client options.
        $options = ['credentials' => $credentials];

        // Create a TermsOfServiceServiceClient.
        $tosServiceClient = new TermsOfServiceServiceClient($options);

        try {
            // Prepare the request.
            $request = new AcceptTermsOfServiceRequest([
                'name' => sprintf("termsOfService/%s", $tosVersion),
                'account' => sprintf("accounts/%s", $accountId),
                'region_code' => $regionCode,
            ]);

            print "Sending request to accept terms of service...\n";
            $tosServiceClient->acceptTermsOfService($request);

            print "Successfully accepted terms of service.\n";
        } catch (ApiException $e) {
            print $e->getMessage();
        }
    }

    /**
     * Helper to execute the sample.
     *
     * @return void
     */
    public function callSample(): void
    {
        $config = Config::generateConfig();

        // Replace with actual values.
        $tosVersion = "132";
        $regionCode = "US";

        self::acceptTermsOfService($config['accountId'], $tosVersion, $regionCode);
    }
}

// Run the script
$sample = new AcceptTermsOfService();
$sample->callSample();

Python

from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import AcceptTermsOfServiceRequest
from google.shopping.merchant_accounts_v1 import TermsOfServiceServiceClient

# Replace with your actual values.
_ACCOUNT_ID = configuration.Configuration().read_merchant_info()
_TOS_VERSION = (  # Replace with the Terms of Service version to accept
    "VERSION_HERE"
)
_REGION_CODE = "US"  # Replace with the region code


def accept_terms_of_service():
  """Accepts the Terms of Service agreement for a given account."""

  credentials = generate_user_credentials.main()
  client = TermsOfServiceServiceClient(credentials=credentials)

  # Construct the request
  request = AcceptTermsOfServiceRequest(
      name=f"termsOfService/{_TOS_VERSION}",
      account=f"accounts/{_ACCOUNT_ID}",
      region_code=_REGION_CODE,
  )

  try:
    print("Sending request to accept terms of service...")
    client.accept_terms_of_service(request=request)
    print("Successfully accepted terms of service.")
  except RuntimeError as e:
    print(e)


if __name__ == "__main__":
  accept_terms_of_service()

ข้อควรพิจารณาเป็นพิเศษสำหรับผู้ให้บริการบุคคลที่สาม

ในฐานะผู้ให้บริการบุคคลที่สาม คุณอาจจัดการข้อกำหนดในการให้บริการสำหรับบัญชีลูกค้าหรือบัญชีแบบสแตนด์อโลน

จัดการข้อกำหนดในการให้บริการสำหรับบัญชีลูกค้า

หากคุณใช้บัญชีขั้นสูง และสร้างบัญชีลูกค้า สำหรับธุรกิจต่างๆ ให้ทำดังนี้

  • การยอมรับบัญชีขั้นสูง: หากบัญชีขั้นสูงให้บริการรวบรวมข้อมูลบัญชีแก่บัญชีลูกค้า ข้อกำหนดในการให้บริการที่บัญชีขั้นสูงยอมรับจะมีผลกับบัญชีลูกค้าทั้งหมดที่ใช้บริการนั้นด้วย
  • การแสดงและการขอความยินยอม: แม้ว่าการยอมรับของบัญชีขั้นสูงจะครอบคลุมบัญชีลูกค้า แต่แนวทางปฏิบัติแนะนำ (และอาจเป็นข้อกำหนดทางกฎหมาย) คือการแสดงข้อกำหนดในการให้บริการของ Google Merchant Center ที่เกี่ยวข้องต่อเจ้าของธุรกิจจริงของบัญชีลูกค้าแต่ละบัญชี คุณต้องได้รับความยินยอมอย่างชัดแจ้งจากผู้ใช้ว่าผู้ใช้เข้าใจและยอมรับข้อกำหนดเหล่านี้ แม้ว่าจะมีการเรียก API เพื่อยอมรับที่ระดับบัญชีขั้นสูงก็ตาม
  • การตรวจสอบสถานะบัญชีลูกค้า: ใช้ termsOfServiceAgreementStates.retrieveForApplication ในบัญชีลูกค้าที่เฉพาะเจาะจงเพื่อยืนยันสถานะข้อกำหนดในการให้บริการและดูว่าบัญชี อยู่ภายใต้ข้อตกลงของบัญชีขั้นสูงหรือไม่ หรือต้องดำเนินการโดยตรง หรือไม่

จัดการข้อกำหนดในการให้บริการสำหรับบัญชีแบบสแตนด์อโลน

ตามที่ระบุไว้ในแนะนําให้ผู้ขายยอมรับ ข้อกําหนดในการให้บริการ เมื่อคุณช่วยเหลือ ธุรกิจในการสร้างหรือจัดการบัญชี Merchant Center แบบสแตนด์อโลน ธุรกิจดังกล่าว (เจ้าของบัญชี) ต้องยอมรับข้อกำหนดในการให้บริการด้วยตนเอง คุณอำนวยความสะดวกในเรื่องนี้ได้โดยการดึงและแสดงข้อกำหนดในการให้บริการ แล้วเรียกใช้เมธอด termsOfService.accept ในนามของผู้ใช้หลังจากที่ผู้ใช้ให้ความยินยอมอย่างชัดแจ้งผ่านอินเทอร์เฟซของคุณ