Untuk menggunakan Merchant Center dan fiturnya, Anda harus menyetujui Persyaratan Layanan (ToS) Merchant Center 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 melakukan hal berikut:
- Memeriksa status perjanjian ToS saat ini untuk akun.
- Mengarahkan penjual untuk menyetujui ToS yang diperlukan.
- Mengelola ToS sebagai penyedia layanan untuk akun klien.
Prasyarat
Untuk menggunakan Merchant API, Anda memerlukan akun Merchant Center. Setelah membuatnya menggunakan Merchant Center antarmuka pengguna (UI), Anda dapat melakukan 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 perjanjian ToS akun
Sebelum penjual dapat menggunakan Merchant Center sepenuhnya, atau jika Anda perlu memverifikasi status perjanjiannya saat ini, Anda dapat mengambil status perjanjian Persyaratan Layanan-nya.
Gunakan metode untuk mendapatkan status perjanjian ToS untuk aplikasi Merchant Center inti.termsOfServiceAgreementStates.retrieveForApplication Metode ini menampilkan ToS Anda saat ini, jika ada, dan, jika ToS 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 Resource ini berisi:
name: ID untuk status perjanjian ini.regionCode: Negara tempat status perjanjian ini berlaku, biasanya negara bisnis akun.termsOfServiceKind: Nilai ini akan berupaMERCHANT_CENTER.accepted: Detail tentang versi ToS yang telah disetujui akun, termasuk nama resourcetermsOfService(seperti,termsOfService/132) dan siapa yangacceptedBy. Kolom ini mungkin juga menyertakan tanggalvalidUntiljika versi ToS yang lebih barurequired.required: Detail tentang versi ToS yang harus disetujui akun. Hal ini mencakup nama resourcetermsOfServicedantosFileUriyang mengarah ke dokumen ToS yang mudah dibaca.
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 ToS baru required, Anda harus mengarahkan 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()
Menyetujui 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 hal berikut:
- Panggil
termsOfServiceAgreementStates.retrieveForApplicationuntuk mengidentifikasi apakah ada ToS yangrequired. - Jika ToS diperlukan, catat nama
termsOfServicedarirequiredkolom (seperti,termsOfService/132). Panggil
termsOfService.acceptuntuk menyetujui ToS. Anda akan 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 ToS akun.
Mengarahkan penjual untuk menyetujui ToS (untuk penyedia pihak ketiga)
Jika Anda adalah penyedia pihak ketiga (3P) yang mengelola akun Merchant Center untuk bisnis lain, Anda tidak boleh menyetujui ToS atas nama mereka. Sebagai gantinya, Anda harus:
Mengambil ToS terbaru: Panggil
termsOfService.retrieveLatestuntukregionCodedan jenisMERCHANT_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 ToS: Gunakan
fileUridari respons untuk menampilkan teks lengkap Persyaratan Layanan kepada penjual dalam UI aplikasi Anda.Mendapatkan persetujuan penjual: Penjual harus menyetujui persyaratan secara eksplisit dalam UI Anda.
Mencatat persetujuan menggunakan API: Setelah penjual menyetujui, panggil
termsOfService.acceptmenggunakannameToS yang diperoleh pada 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 ToS untuk akun klien.
Mengelola ToS untuk akun klien
Jika Anda mengoperasikan akun tingkat lanjut dan membuat akun klien untuk bisnis yang berbeda:
- Persetujuan akun tingkat lanjut: Jika akun tingkat lanjut menyediakan layanan agregasi akun ke akun klien, ToS yang disetujui oleh akun tingkat lanjut juga akan berlaku untuk semua akun kliennya yang menggunakan layanan tersebut.
- Tampilan dan izin: Meskipun persetujuan akun tingkat lanjut mencakup akun klien, sebaiknya (dan mungkin merupakan ekspektasi hukum) untuk menampilkan ToS 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 persetujuan dilakukan di tingkat akun tingkat lanjut.
- Memeriksa status akun klien: Gunakan
termsOfServiceAgreementStates.retrieveForApplicationpada akun klien tertentu untuk memverifikasi status ToS-nya dan melihat apakah akun tersebut tercakup dalam perjanjian akun tingkat lanjut atau apakah tindakan langsung diperlukan.
Mengelola ToS untuk akun lain
Seperti yang dijelaskan dalam Mengarahkan penjual untuk menyetujui
ToS, 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 ToS, lalu memanggil metode termsOfService.accept atas nama mereka setelah mereka memberikan izin eksplisit melalui antarmuka Anda.