Untuk menggunakan Merchant Center dan fiturnya, Anda harus menyetujui Persyaratan Layanan Merchant Center (ToS) untuk lokasi bisnis Anda. Perjanjian ini menguraikan persyaratan hukum untuk menggunakan layanan Merchant Center.
Panduan ini menjelaskan cara menggunakan Merchant API untuk mengelola perjanjian ini, baik untuk akun Anda sendiri maupun untuk akun yang Anda kelola sebagai penyedia pihak ketiga (3P).
Anda dapat mencapai hal berikut:
- Memeriksa status perjanjian Persyaratan Layanan saat ini untuk akun.
- Pandu penjual untuk menyetujui ToS yang diperlukan.
- Mengelola Persyaratan Layanan sebagai penyedia layanan untuk akun klien.
Prasyarat
Untuk menggunakan Merchant API, Anda memerlukan akun Merchant Center. Setelah membuatnya menggunakan antarmuka pengguna (UI) Merchant Center, Anda dapat membuat perubahan pada akun (seperti memperbarui info bisnis, mengelola pengguna, dll.) menggunakan UI atau API.
Jika perlu mengelola beberapa akun, Anda dapat membuat akun klien menggunakan Merchant API. Lihat Membuat akun.
Memeriksa status persetujuan ToS akun
Sebelum penjual dapat sepenuhnya menggunakan Merchant Center, atau jika Anda perlu memverifikasi status perjanjian mereka saat ini, Anda dapat mengambil status perjanjian Persyaratan Layanan mereka.
Gunakan metode
termsOfServiceAgreementStates.retrieveForApplication
untuk mendapatkan status persetujuan Persyaratan Layanan untuk aplikasi Merchant Center
inti. Metode ini menampilkan Persyaratan Layanan Anda saat ini, jika ada, dan, jika Persyaratan Layanan telah
diperbarui sejak terakhir kali Anda menyetujuinya, versi terbaru yang perlu Anda
setujui.
Berikut adalah contoh permintaan:
GET https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/termsOfServiceAgreementStates:retrieveForApplication
Panggilan yang berhasil akan menampilkan resource
TermsOfServiceAgreementState. Referensi ini berisi:
name: ID untuk status perjanjian ini.regionCode: Negara tempat status perjanjian ini berlaku, biasanya negara bisnis akun.termsOfServiceKind: Ini akan menjadiMERCHANT_CENTER.accepted: Detail tentang versi Persyaratan Layanan yang telah disetujui akun, termasuk nama resourcetermsOfService(seperti,termsOfService/132) dan siapa yangacceptedBy. TanggalvalidUntiljuga dapat disertakan jika versi Persyaratan Layanan yang lebih baru adalahrequired.required: Detail tentang versi Persyaratan Layanan yang harus disetujui akun. Hal ini mencakup nama resourcetermsOfServicedantosFileUriyang mengarah ke dokumen ToS yang dapat dibaca manusia.
Contoh Respons:
{
"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/"
}
}
Jika ada ToS baru yang required, Anda harus memandu penjual untuk menyetujuinya.
Berikut adalah contoh yang dapat Anda gunakan untuk mengambil status perjanjian Persyaratan Layanan untuk akun dan negara tertentu:
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()
Setujui Persyaratan Layanan
Penjual harus menyetujui Persyaratan Layanan terbaru untuk mempertahankan akses ke fitur Merchant Center.
Menyetujui ToS untuk akun Anda sendiri
Jika Anda mengelola akun Merchant Center Anda sendiri, lakukan tindakan berikut:
- Panggil
termsOfServiceAgreementStates.retrieveForApplicationuntuk mengidentifikasi apakah ada ToS yang berstatusrequired. - Jika ToS diperlukan, catat nama
termsOfServicedari kolomrequired(misalnya,termsOfService/132). Panggil
termsOfService.acceptuntuk menyetujui Persyaratan Layanan. Anda memerlukan nama ToS,ACCOUNT_ID, danregionCodeyang ditampilkan oleh retrieveForApplication.Berikut adalah contoh permintaan:
POST https://merchantapi.googleapis.com/accounts/v1/{name={termsOfService/VERSION}}:accept { "account": "accounts/{ACCOUNT_ID}", "regionCode": "{REGION_CODE}" }Panggilan yang berhasil akan menampilkan isi respons kosong, dan memperbarui status perjanjian Persyaratan Layanan akun.
Memandu penjual untuk menyetujui Persyaratan Layanan (untuk penyedia pihak ketiga)
Jika Anda adalah penyedia pihak ketiga (3P) yang mengelola akun Merchant Center untuk bisnis lain, Anda tidak boleh menyetujui Persyaratan Layanan atas nama mereka. Sebagai gantinya, Anda harus:
Mengambil ToS terbaru: Panggil
termsOfService.retrieveLatestuntuk jenisregionCodedanMERCHANT_CENTERpenjual guna mendapatkan detail versi ToS terbaru yang mungkin perlu mereka setujui.Contoh Permintaan:
GET https://merchantapi.googleapis.com/accounts/v1/termsOfService:retrieveLatest?regionCode={REGION_CODE}&kind=MERCHANT_CENTERContoh Respons:
{ "name": "{termsOfService/VERSION}", "regionCode": "{REGION_CODE}", "kind": "MERCHANT_CENTER", "fileUri": "https://www.google.com/intl/{REGION_CODE}/policies/merchants/terms/" }Menampilkan Persyaratan Layanan: Gunakan
fileUridari respons untuk menampilkan teks lengkap Persyaratan Layanan kepada penjual dalam UI aplikasi Anda.Mendapatkan persetujuan penjual: Penjual harus secara eksplisit menyetujui persyaratan dalam UI Anda.
Catat persetujuan menggunakan API: Setelah penjual menyetujui, panggil
termsOfService.acceptmenggunakannamePersyaratan Layanan yang diperoleh di langkah 1,ACCOUNT_IDpenjual, danregionCodemereka.Contoh Permintaan:
POST https://merchantapi.googleapis.com/accounts/v1/{name={termsOfService/VERSION}}:accept { "account": "accounts/{MERCHANT_ACCOUNT_ID}", "regionCode": "{REGION_CODE}" }
Berikut adalah contoh yang dapat Anda gunakan untuk menyetujui perjanjian Persyaratan Layanan untuk akun tertentu (setelah penjual menyetujui):
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()
Pertimbangan khusus untuk penyedia pihak ketiga
Sebagai penyedia pihak ketiga, Anda dapat mengelola Persyaratan Layanan untuk akun klien.
Mengelola Persyaratan Layanan untuk akun klien
Jika Anda mengoperasikan akun tingkat lanjut dan membuat akun klien untuk berbagai bisnis:
- Persetujuan akun tingkat lanjut: Jika akun tingkat lanjut menyediakan layanan agregasi akun ke akun klien, Persyaratan Layanan yang disetujui oleh akun tingkat lanjut juga akan berlaku untuk semua akun kliennya dengan layanan tersebut.
- Tampilan dan izin: Meskipun persetujuan akun tingkat lanjut mencakup akun klien, sebaiknya (dan mungkin merupakan persyaratan hukum) tampilkan Persyaratan Layanan Google Merchant Center yang relevan kepada pemilik bisnis sebenarnya dari setiap klien tersebut. Anda harus mendapatkan izin eksplisit dari mereka bahwa mereka memahami dan menyetujui persyaratan ini, meskipun panggilan API untuk penerimaan dilakukan di tingkat akun tingkat lanjut.
- Memeriksa status akun klien: Gunakan
termsOfServiceAgreementStates.retrieveForApplicationdi akun klien tertentu untuk memverifikasi status Persyaratan Layanan-nya dan melihat apakah akun tersebut tercakup dalam perjanjian akun tingkat lanjut atau apakah diperlukan tindakan langsung.
Mengelola Persyaratan Layanan untuk akun lain
Seperti yang dijelaskan dalam Memandu penjual untuk menyetujui
Persyaratan Layanan, saat Anda membantu
bisnis membuat atau mengelola akunnya sendiri, bisnis tersebut (pemilik
akun) harus menyetujui Persyaratan Layanan secara pribadi . Anda memfasilitasi hal ini dengan
mengambil dan menampilkan Persyaratan Layanan, lalu memanggil metode termsOfService.accept
atas nama mereka setelah mereka memberikan izin eksplisit melalui
antarmuka Anda.