หากต้องการใช้ 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/v1beta/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.v1beta.GetTermsOfServiceAgreementStateRequest;
import com.google.shopping.merchant.accounts.v1beta.TermsOfServiceAgreementState;
import com.google.shopping.merchant.accounts.v1beta.TermsOfServiceAgreementStateName;
import com.google.shopping.merchant.accounts.v1beta.TermsOfServiceAgreementStateServiceClient;
import com.google.shopping.merchant.accounts.v1beta.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\V1beta\Client\TermsOfServiceAgreementStateServiceClient;
use Google\Shopping\Merchant\Accounts\V1beta\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_v1beta import GetTermsOfServiceAgreementStateRequest
from google.shopping.merchant_accounts_v1beta 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 ของตนเอง ให้ทำดังนี้
- โทรหา
termsOfServiceAgreementStates.retrieveForApplication
เพื่อตรวจสอบว่าข้อกำหนดในการให้บริการใดrequired
- หากต้องมีข้อกำหนดในการให้บริการ ให้จด
termsOfService
ชื่อจากrequired
ฟิลด์ (เช่นtermsOfService/132
) โทรหา
termsOfService.accept
เพื่อยอมรับข้อกำหนดในการให้บริการ คุณจะต้องมีชื่อ ToS,ACCOUNT_ID
และregionCode
ที่ได้จาก retrieveForApplicationตัวอย่างคำขอมีดังนี้
POST https://merchantapi.googleapis.com/accounts/v1beta/{name={termsOfService/VERSION}}:accept { "account": "accounts/{ACCOUNT_ID}", "regionCode": "{REGION_CODE}" }
การเรียกที่สำเร็จจะแสดงเนื้อหาการตอบกลับที่ว่างเปล่า และอัปเดตสถานะการยอมรับข้อกำหนดในการให้บริการของบัญชี
แนะนําผู้ขายให้ยอมรับข้อกำหนดในการให้บริการ (สําหรับผู้ให้บริการบุคคลที่สาม)
หากคุณเป็นผู้ให้บริการบุคคลที่สาม (3P) ที่จัดการบัญชี Merchant Center แบบสแตนด์อโลนสำหรับธุรกิจอื่นๆ คุณต้องไม่ยอมรับข้อกำหนดในการให้บริการในนามของธุรกิจเหล่านั้น แต่คุณควรทำดังนี้แทน
ดึงข้อมูลข้อกำหนดในการให้บริการล่าสุด: เรียกใช้
termsOfService.retrieveLatest
สำหรับregionCode
และMERCHANT_CENTER
ของผู้ขายเพื่อดู รายละเอียดของข้อกำหนดในการให้บริการเวอร์ชันล่าสุดที่ผู้ขายอาจต้องยอมรับตัวอย่างคำขอ
GET https://merchantapi.googleapis.com/accounts/v1beta/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/" }
แสดงข้อกำหนดในการให้บริการ: ใช้
fileUri
จากการตอบกลับเพื่อแสดงข้อความฉบับเต็มของข้อกำหนดในการให้บริการแก่ผู้ขายภายใน UI ของแอปพลิเคชันได้รับการยอมรับจากผู้ขาย: ผู้ขายต้องยอมรับข้อกำหนดอย่างชัดแจ้งภายใน UI ของคุณ
บันทึกการยอมรับโดยใช้ API: หลังจากผู้ขายยอมรับ ให้เรียกใช้
termsOfService.accept
โดยใช้name
ของข้อกำหนดในการให้บริการที่ได้รับในขั้นตอนที่ 1,ACCOUNT_ID
ของผู้ขาย และregionCode
ของผู้ขายตัวอย่างคำขอ
POST https://merchantapi.googleapis.com/accounts/v1beta/{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.v1beta.AcceptTermsOfServiceRequest;
import com.google.shopping.merchant.accounts.v1beta.TermsOfServiceServiceClient;
import com.google.shopping.merchant.accounts.v1beta.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\V1beta\AcceptTermsOfServiceRequest;
use Google\Shopping\Merchant\Accounts\V1beta\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_v1beta import AcceptTermsOfServiceRequest
from google.shopping.merchant_accounts_v1beta 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
ในนามของผู้ใช้หลังจากที่ผู้ใช้ให้ความยินยอมอย่างชัดแจ้งผ่านอินเทอร์เฟซของคุณ