Anda dapat menggunakan Accounts API untuk mengelola hubungan antara akun Merchant Center Anda dan penyedia layanan lainnya. Hubungan adalah koneksi formal yang memungkinkan penyedia menawarkan layanan tertentu kepada bisnis Anda. Layanan menentukan izin dan kemampuan yang diberikan kepada penyedia, seperti pengelolaan produk atau pengelolaan kampanye. Misalnya, menautkan akun Merchant Center ke akun Google Ads memungkinkan akun Google Ads menggunakan data produk Anda untuk menjalankan kampanye iklan.
Hubungan terdiri dari atribut berikut:
- Akun Merchant Center yang menerima layanan
- Penyedia layanan
- Layanan atau serangkaian layanan yang diberikan ke akun Merchant Center
Alias
Penyedia layanan dapat mengaitkan alias dengan akun yang mereka layani (ini setara dengan kolom seller_id yang ada di resource account di Content API for Shopping). Alias dapat ditetapkan menggunakan
kolom account_id_alias opsional dalam resource AccountRelationship dan
berfungsi sebagai ID kustom. Alias harus terdiri dari 1 hingga 50 karakter
yang dipilih dari huruf ASCII, angka desimal, tanda hubung, garis bawah, titik, atau
tanda gelombang ([A-Za-z0-9_~.-]{1,50}).
Struktur URL untuk mengakses akun menggunakan aliasnya adalah
GET /accounts/v1/accounts/{provider}~{account_id_alias}.
Layanan
Di Accounts API, akun dapat menerima layanan berikut. Anda dapat menambahkan banyak layanan ini selama pembuatan akun.
Penggabungan akun: Layanan ini menautkan akun lanjutan ke akun lain, sehingga memberikan akses penuh dan tidak terbatas ke akun lanjutan. Biasanya digunakan oleh marketplace, retailer multibrand, atau retailer internasional yang memerlukan kontrol terpusat atas akun bertingkat. Jika Anda adalah platform e-commerce atau partner saluran, sebaiknya gunakan
accountManagement. Saat Anda membuat akun menggunakan agregasi akun,externalAccountIdharus dihilangkan.Pengelolaan kampanye: Layanan ini memodelkan penautan antara akun Merchant Center dan akun Google Ads, sehingga akun Google Ads memiliki akses ke data produk dan akun yang diperlukan untuk menjalankan kampanye iklan. Penyedia layanan dalam hal ini adalah
GOOGLE_ADSdanexternalAccountIdadalah ID akun Google Ads. Layanan ini juga dapat diusulkan ke akun yang sudah ada.
Perbandingan belanja: Ini menunjukkan hubungan dengan Layanan Perbandingan Belanja (CSS) yang mengoperasikan akun Merchant Center.
Pengelolaan listingan lokal: Ini menunjukkan hubungan dengan pengelola toko untuk mengelola inventaris dan listingan lokal menggunakan Google Profil Bisnis.
Pengelolaan akun: Layanan ini memungkinkan penyedia melakukan tindakan administratif di akun Merchant Center, seperti mengonfigurasi setelan akun, mengelola pengguna, atau memperbarui informasi bisnis. Bisnis juga dapat membatasi akses yang diberikan. Jika digunakan selama pembuatan akun, layanan ini membuat akun yang ditautkan ke penyedia, yang merupakan pendekatan yang direkomendasikan untuk platform e-commerce dan partner saluran. Akun ini juga dapat diusulkan ke akun yang sudah ada.
Pengelolaan produk: Layanan ini memungkinkan penyedia mengelola produk dan fitur terkait seperti sumber data dan aturan. Jika ditambahkan selama pembuatan akun, biasanya dikombinasikan dengan
accountManagementatauaccountAggregation. Layanan ini juga dapat diusulkan ke akun yang sudah ada.
Bersalaman
Untuk membuat layanan, akun yang menyediakan layanan dan akun yang menerima layanan harus mengizinkan koneksi. Proses otorisasi ini disebut sebagai negosiasi.
Proses jabat tangan terdiri dari dua langkah:
- Salah satu pihak mengusulkan link layanan.
- Pihak lain menyetujui atau menolak proposal.
Setelah proposal disetujui, layanan akan disetujui dan dianggap telah sepenuhnya ditetapkan. Setiap hak akses yang diberikan kepada penyedia layanan kini diberikan kepada pengguna yang memenuhi syarat (Lihat hak akses di bawah).
Perhatikan bahwa pengguna yang membuat, menolak, atau menyetujui proposal harus memiliki
hak akses ADMIN
pada akun yang memulai proses. Jadi, jika penyedia layanan
mengajukan layanan, pengguna yang mengajukan proposal harus menjadi ADMIN di akun
penyedia layanan dan pengguna yang menerima atau menolak proposal
harus menjadi ADMIN di akun penerima.
Contoh berikut menunjukkan cara mengusulkan layanan akun:
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.AccountName;
import com.google.shopping.merchant.accounts.v1.AccountService;
import com.google.shopping.merchant.accounts.v1.AccountServicesServiceClient;
import com.google.shopping.merchant.accounts.v1.AccountServicesServiceSettings;
import com.google.shopping.merchant.accounts.v1.ProductsManagement;
import com.google.shopping.merchant.accounts.v1.ProposeAccountServiceRequest;
import shopping.merchant.samples.utils.Authenticator;
/** This class demonstrates how to propose a service to an existing Merchant Center account. */
public class ProposeServiceSample {
public static void proposeService(long accountId, long providerId, String externalAccountId)
throws Exception {
// Obtains OAuth token based on the user's configuration.
// The user that authenticates should have access to the account.
GoogleCredentials credential = new Authenticator().authenticate();
// Creates service settings using the credentials retrieved above.
AccountServicesServiceSettings accountServicesServiceSettings =
AccountServicesServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Calls the API and catches and prints any network failures/errors.
try (AccountServicesServiceClient accountServicesServiceClient =
AccountServicesServiceClient.create(accountServicesServiceSettings)) {
// The service to be proposed.
// This sample shows how to propose product management.
// For more information about the different services, see:
// https://developers.google.com/merchant/api/guides/accounts/services
AccountService accountService =
AccountService.newBuilder()
.setProductsManagement(ProductsManagement.newBuilder().build())
.setExternalAccountId(externalAccountId)
.build();
String accountName =
AccountName.newBuilder().setAccount(String.valueOf(accountId)).build().toString();
ProposeAccountServiceRequest request =
ProposeAccountServiceRequest.newBuilder()
.setParent(accountName)
.setProvider("accounts/" + providerId)
.setAccountService(accountService)
.build();
System.out.println("Sending Propose Service request:");
AccountService response = accountServicesServiceClient.proposeAccountService(request);
System.out.println("Proposed Service below");
System.out.println(response);
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
// The ID of the account to propose the service to.
long accountId = 123L;
// This is the provider ID of the e-commerce platform.
long providerId = 456L;
// An external ID that uniquely identifies the account service.
String externalAccountId = "ext-acc-id-123";
proposeService(accountId, providerId, externalAccountId);
}
}
PHP
require_once __DIR__ . '/../../../../vendor/autoload.php';
require_once __DIR__ . '/../../../Authentication/Authentication.php';
require_once __DIR__ . '/../../../Authentication/Config.php';
use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Accounts\V1\AccountAggregation;
use Google\Shopping\Merchant\Accounts\V1\AccountService;
use Google\Shopping\Merchant\Accounts\V1\Client\AccountServicesServiceClient;
use Google\Shopping\Merchant\Accounts\V1\ProposeAccountServiceRequest;
/**
* This class demonstrates how to propose an account service.
*/
class ProposeAccountServiceSample
{
/**
* A helper function to create the account name string.
*
* @param string $accountId The ID of the account.
*
* @return string The account name has the format: `accounts/{account_id}`
*/
private static function toAccountName(string $accountId): string
{
return sprintf('accounts/%s', $accountId);
}
/**
* Proposes a new account service.
*
* @param array $config The configuration data used for authentication and
* getting the account ID.
* @param string $providerId The ID of the provider account.
*/
public static function proposeAccountService(
array $config,
string $providerId
): void {
// Gets the OAuth credentials to make the request.
$credentials = Authentication::useServiceAccountOrTokenFile();
// Creates options containing credentials for the client to use.
$options = ['credentials' => $credentials];
// Creates a client.
$accountServicesServiceClient = new AccountServicesServiceClient($options);
// Calls the API and catches and prints any network failures/errors.
try {
$accountAggregation = new AccountAggregation();
$accountService = (new AccountService())
->setAccountAggregation($accountAggregation);
$request = (new ProposeAccountServiceRequest())
->setParent(self::toAccountName($config['accountId']))
->setProvider(self::toAccountName($providerId))
->setAccountService($accountService);
print "Sending Propose AccountService request\n";
$response = $accountServicesServiceClient->proposeAccountService($request);
print "Proposed AccountService below\n";
print $response->serializeToJsonString(true) . PHP_EOL;
} catch (ApiException $e) {
printf("An error has occurred: %s%s", $e->getMessage(), PHP_EOL);
}
}
/**
* Helper to execute the sample.
*/
public function callSample(): void
{
$config = Config::generateConfig();
// Update this with the Merchant Center provider ID you want to get the
// relationship for.
$providerId = 111;
self::proposeAccountService($config, $providerId);
}
}
// Run the script
$sample = new ProposeAccountServiceSample();
$sample->callSample();
Python
"""This class demonstrates how to propose an account service."""
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import AccountAggregation
from google.shopping.merchant_accounts_v1 import AccountService
from google.shopping.merchant_accounts_v1 import AccountServicesServiceClient
from google.shopping.merchant_accounts_v1 import ProposeAccountServiceRequest
_ACCOUNT = configuration.Configuration().read_merchant_info()
_PARENT = f"accounts/{_ACCOUNT}"
def propose_account_service(provider_id: int) -> None:
"""Proposes an account service.
Args:
provider_id: The Merchant Center ID of the provider.
"""
# Gets OAuth Credentials.
credentials = generate_user_credentials.main()
# Creates a client.
client = AccountServicesServiceClient(credentials=credentials)
# Creates the provider resource name from the provider ID.
provider = f"accounts/{provider_id}"
# Creates an AccountService object.
# For this request, only `account_aggregation` is needed.
account_service = AccountService()
account_service.account_aggregation = AccountAggregation()
# Creates the request.
request = ProposeAccountServiceRequest(
parent=_PARENT,
provider=provider,
account_service=account_service,
)
# Makes the request and catches and prints any error messages.
try:
print("Sending Propose AccountService request")
response = client.propose_account_service(request=request)
print("Proposed AccountService below")
print(response)
except RuntimeError as e:
print(e)
if __name__ == "__main__":
# Update this with the Merchant Center provider ID you want to get the
# relationship for.
provider_id_ = 111
propose_account_service(provider_id_)
Perilaku kesepakatan khusus layanan
Berikut adalah deskripsi persyaratan handshake khusus untuk setiap layanan:
Penggabungan akun: Layanan ini hanya dapat dibuat sebagai bagian dari pembuatan akun. Penyedia layanan diharapkan berupa akun lanjutan, dan layanan disetujui secara otomatis karena pengguna akun lanjutan memiliki akses
ADMINpenuh ke akun yang sedang dibuat.Perbandingan belanja: Layanan ini otomatis disetujui saat ditambahkan selama pembuatan akun menggunakan
createAndConfigure.Pengelolaan kampanye: Meskipun mengikuti proses inisiasi normal, usulan dibuat di satu sistem (misalnya Google Ads) dan persetujuan dilakukan di sistem lain (misalnya di Merchant Center atau melalui Merchant API).
Pengelolaan listingan lokal: Untuk layanan ini, handshake diusulkan dalam metode khusus dan persetujuan dilakukan di sistem lain (misalnya, Google Profil Bisnis). Langkah-langkah mendetailnya ada di Panduan untuk menautkan Google Profil Bisnis.
Pengelolaan akun: Untuk layanan ini, proses handshake reguler berlaku saat menggunakan
propose. Jika layanan ditambahkan selama pembuatan akun menggunakancreateAndConfigure, layanan tersebut akan otomatis disetujui.Pengelolaan produk: Untuk layanan ini, proses inisiasi reguler berlaku (diusulkan oleh satu pihak, diikuti dengan persetujuan dari pihak lain).
Hak akses
Setiap jenis layanan memberikan tingkat akses tertentu bagi pengguna penyedia layanan atas akun yang dilayani:
Penggabungan akun: Layanan ini memberikan hak
ADMINpenuh.Pengelolaan kampanye: Layanan ini memberikan hak akses terbatas, sehingga akun Google Ads terkait dapat mengakses produk dan informasi akun dasar.
Perbandingan belanja: Layanan ini menyediakan, secara default, hak
ADMINpenuh. Namun, bisnis dapat membatasi akses yang diberikan di Merchant Center.Pengelolaan listingan lokal: Layanan ini tidak memberikan hak akses langsung. Sebagai gantinya, listingan ini memungkinkan produknya disinkronkan dengan akun Merchant Center.
Penting: Hak akses yang dijelaskan untuk jenis layanan berikut hanya berlaku untuk penyedia layanan yang disetujui. Hubungi tim dukungan
kami jika Anda adalah penyedia layanan dan ingin menggunakan kemampuan ini. Jika sebelumnya Anda sudah disetujui untuk menggunakan metode accounts.link untuk pengelolaan produk di Content API for Shopping, Anda dapat menggunakan layanan ini di Merchant API tanpa persetujuan lebih lanjut.
Pengelolaan akun: Layanan ini menyediakan hak
ADMINpenuh secara default.Pengelolaan produk: Layanan ini memberikan hak
ADMINpenuh. Perhatikan bahwa pada masa mendatang, hal ini akan dibatasi hanya untuk hak akses terkait produk.
Cara penerapan hubungan untuk platform pihak ketiga
Jika Anda adalah platform pihak ketiga yang mengelola akun atas nama bisnis lain, berikut ini menunjukkan cara berbagai konsep dipetakan ke struktur akun Anda:
- Penyedia layanan: Akun lanjutan Anda.
- Akun yang menerima layanan: Akun Merchant Center yang mewakili bisnis yang Anda kelola.
- Layanan:
accountManagement: Ini adalah layanan yang direkomendasikan untuk platform e-commerce dan partner saluran yang membuat akun baru atas nama penjual. Tindakan ini akan membuat akun yang dimiliki penjual, yang ditautkan kepada Anda untuk pengelolaan. Hal ini sesuai dengan struktur Merchant Center yang disukai untuk kasus penggunaan ini.accountAggregation: Layanan ini menautkan akun tingkat lanjut Anda ke akun lain. Meskipun didukung, fitur ini tidak direkomendasikan untuk platform e-commerce dan partner saluran.
Untuk mengetahui detail tentang cara menyiapkan akun lanjutan dan menautkan ke akun Merchant Center baru, lihat Membuat akun.