Quản lý mối quan hệ tài khoản

Bạn có thể sử dụng Accounts API để quản lý mối quan hệ giữa tài khoản Merchant Center của bạn và các nhà cung cấp dịch vụ khác. Mối quan hệ là một mối liên kết chính thức cho phép nhà cung cấp cung cấp các dịch vụ cụ thể cho doanh nghiệp của bạn. Một dịch vụ xác định các quyền và chức năng được cấp cho nhà cung cấp, chẳng hạn như quản lý sản phẩm hoặc quản lý chiến dịch. Ví dụ: việc liên kết tài khoản Merchant Center với tài khoản Google Ads cho phép tài khoản Google Ads sử dụng dữ liệu sản phẩm của bạn để chạy các chiến dịch quảng cáo.

Mối quan hệ bao gồm các thuộc tính sau:

  • Tài khoản Merchant Center nhận dịch vụ
  • Nhà cung cấp dịch vụ
  • Dịch vụ hoặc nhóm dịch vụ đang được cung cấp cho tài khoản Merchant Center

Email đại diện

Nhà cung cấp dịch vụ có thể liên kết một bí danh với các tài khoản mà họ cung cấp dịch vụ (bí danh này tương đương với trường seller_id có trong tài nguyên account trong Content API for Shopping). Bạn có thể chỉ định bí danh bằng cách sử dụng trường account_id_alias không bắt buộc trong tài nguyên AccountRelationship và dùng làm giá trị nhận dạng tuỳ chỉnh. Bí danh phải bao gồm từ 1 đến 50 ký tự được chọn từ các chữ cái ASCII, chữ số thập phân, dấu gạch nối, dấu gạch dưới, dấu chấm hoặc dấu ngã ([A-Za-z0-9_~.-]{1,50}).

Cấu trúc URL để truy cập vào một tài khoản bằng bí danh là GET /accounts/v1/accounts/{provider}~{account_id_alias}.

Dịch vụ

Trong Accounts API, tài khoản có thể nhận các dịch vụ sau. Bạn có thể thêm nhiều dịch vụ trong số này trong quá trình tạo tài khoản.

  • Tổng hợp tài khoản: Dịch vụ này (accountAggregation) liên kết một tài khoản nâng cao nhiều khách hàng với một tài khoản phụ, cấp cho tài khoản nâng cao quyền truy cập đầy đủ, không hạn chế và giúp tài khoản phụ xuất hiện trong giao diện người dùng của Merchant Center. Giao diện người dùng của Merchant Center tự động chuyển đổi tài khoản thành tài khoản nâng cao có accountAggregation cho các nhà xây dựng cửa hàng (nền tảng thương mại điện tử), đối tác kênh, trang web thương mại, nhà bán lẻ đa thương hiệu và nhà bán lẻ quốc tế khi tạo tài khoản phụ mới. Nếu bạn là công ty quảng cáo, hãy sử dụng accountManagement. Khi bạn tạo tài khoản bằng tính năng tổng hợp tài khoản, bạn phải bỏ qua externalAccountId.

  • Quản lý chiến dịch: Dịch vụ này mô hình hoá mối liên kết giữa tài khoản Merchant Center và tài khoản Google Ads, cho phép tài khoản quảng cáo truy cập vào dữ liệu sản phẩm và dữ liệu tài khoản cần thiết để chạy chiến dịch quảng cáo. Nhà cung cấp dịch vụ trong trường hợp này là GOOGLE_ADS và externalAccountId là mã nhận dạng của tài khoản Google Ads. Dịch vụ này cũng có thể được đề xuất cho một tài khoản hiện có.

  • Dịch vụ này cho phép tạo bộ lọc sản phẩm dành riêng cho đối tác khi chạy chiến dịch trên Mạng lưới truyền thông thương mại.
  • Tại thời điểm này, bạn phải sử dụng phiên bản Alpha của API phụ Accounts.
  • Để sử dụng tính năng này, bạn cần được đưa vào danh sách cho phép cụ thể của GMC.

Hãy liên hệ với nhóm quản lý tài khoản Google Ads của bạn để biết thêm thông tin.

  • So sánh giá: Thể hiện mối quan hệ với một Dịch vụ so sánh giá (CSS) vận hành tài khoản Merchant Center.

  • Quản lý trang thông tin địa phương: Thể hiện mối quan hệ với người quản lý cửa hàng để quản lý kho hàng tại địa phương và trang thông tin bằng Trang doanh nghiệp trên Google.

  • Quản lý tài khoản: Dịch vụ này (accountManagement) cho phép nhà cung cấp thực hiện các thao tác quản trị trên một tài khoản Merchant Center độc lập bên ngoài, chẳng hạn như định cấu hình chế độ cài đặt tài khoản, quản lý người dùng hoặc cập nhật thông tin doanh nghiệp. Doanh nghiệp cũng có thể hạn chế quyền truy cập đã cấp. Khi được dùng trong quá trình tạo tài khoản, dịch vụ này sẽ tạo một tài khoản độc lập được liên kết với nhà cung cấp. Bạn cũng có thể đề xuất cho một tài khoản hiện có. Những công ty quảng cáo sử dụng loại dịch vụ này có thể xem các tài khoản mà họ quản lý trong Merchant Center cho Công ty quảng cáo. Nhà xây dựng cửa hàng và đối tác kênh có thể sử dụng Merchant API để lấy thông tin về những người bán mà họ quản lý thông qua accountManagement.

  • Quản lý sản phẩm: Dịch vụ này cho phép nhà cung cấp quản lý sản phẩm và các tính năng liên quan như nguồn dữ liệu và quy tắc. Khi được thêm trong quá trình tạo tài khoản, thông tin này thường được kết hợp với accountManagement hoặc accountAggregation. Dịch vụ này cũng có thể được đề xuất cho một tài khoản hiện có.

  • Quản lý quy trình thanh toán UCP (v1alpha, quyền truy cập có giới hạn): Dịch vụ ucpCheckoutManagement cho phép nhà cung cấp dịch vụ được phê duyệt quản lý các chế độ cài đặt, hoạt động tích hợp quy trình thanh toán UCP và việc tham gia chương trình thay mặt cho người bán. Chỉ tài khoản Merchant Center hiện có mới có thể đề xuất hoặc phê duyệt dịch vụ này.

    Lưu ý: Tính năng thanh toán qua UCP là một tính năng ở giai đoạn alpha có quyền truy cập hạn chế. Tìm hiểu thêm về nhà cung cấp dịch vụ và quy trình thanh toán UCP trong bài viết Merchant Center dành cho nhà cung cấp dịch vụ.

Cái bắt tay

Để thiết lập một dịch vụ, cả tài khoản cung cấp dịch vụ và tài khoản nhận dịch vụ đều phải uỷ quyền cho kết nối. Quá trình uỷ quyền này được gọi là bắt tay.

Quá trình bắt tay gồm hai bước:

  1. Một bên đề xuất liên kết dịch vụ.
  2. Bên kia phê duyệt hoặc từ chối đề xuất.

Sau khi đề xuất được chấp nhận, dịch vụ sẽ được phê duyệt và được coi là đã thiết lập đầy đủ. Mọi quyền truy cập được cấp cho nhà cung cấp dịch vụ hiện được cấp cho người dùng đủ điều kiện (Xem quyền truy cập bên dưới).

Xin lưu ý rằng người dùng tạo, từ chối hoặc phê duyệt đề xuất phải có ADMIN quyền truy cập đối với tài khoản bắt đầu quy trình này. Vì vậy, nếu nhà cung cấp dịch vụ đề xuất một dịch vụ, thì người dùng đưa ra đề xuất phải là ADMIN trên tài khoản của nhà cung cấp dịch vụ và người dùng chấp nhận hoặc từ chối đề xuất phải là ADMIN trên tài khoản nhận.

Các mẫu sau đây minh hoạ cách đề xuất dịch vụ tài khoản:

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_)

Hành vi bắt tay theo dịch vụ cụ thể

Sau đây là nội dung mô tả về các yêu cầu cụ thể đối với hoạt động bắt tay cho từng dịch vụ riêng lẻ:

  • Tổng hợp tài khoản: Bạn chỉ có thể thiết lập dịch vụ này trong quá trình tạo tài khoản. Nhà cung cấp dịch vụ dự kiến sẽ là một tài khoản nâng cao và dịch vụ này sẽ tự động được phê duyệt vì người dùng của tài khoản nâng cao có toàn quyền ADMIN đối với tài khoản đang được tạo.

  • So sánh giá: Dịch vụ này được tự động phê duyệt khi được thêm vào trong quá trình tạo tài khoản bằng createAndConfigure.

  • Quản lý chiến dịch: Mặc dù quy trình này tuân theo quy trình bắt tay thông thường, nhưng các đề xuất được đưa ra trong một hệ thống (ví dụ: Google Ads) và các phê duyệt được thực hiện trong hệ thống khác (ví dụ: trong Merchant Center hoặc thông qua Merchant API).

  • Quản lý trang thông tin địa phương: Đối với dịch vụ này, quy trình bắt tay được đề xuất theo một phương thức riêng và việc phê duyệt được thực hiện trong hệ thống khác (ví dụ: Trang doanh nghiệp trên Google). Các bước chi tiết có trong Hướng dẫn liên kết Trang doanh nghiệp trên Google.

  • Quản lý tài khoản: Đối với dịch vụ này, quy trình bắt tay thông thường sẽ áp dụng khi sử dụng propose. Nếu dịch vụ được thêm trong quá trình tạo tài khoản bằng createAndConfigure, thì dịch vụ đó sẽ tự động được phê duyệt.

  • Quản lý sản phẩm: Đối với dịch vụ này, quy trình bắt tay thông thường sẽ được áp dụng (một bên đề xuất, sau đó bên kia chấp nhận).

  • Quản lý quy trình thanh toán UCP (v1alpha, quyền truy cập có giới hạn): Đối với dịch vụ này, người bán có thể hoàn tất quy trình bắt tay thông qua hộp thoại liên kết tài khoản do Google lưu trữ trong cổng thông tin của nhà cung cấp dịch vụ hoặc sử dụng quy trình bắt tay tiêu chuẩn (propose, sau đó là approve). Để biết thông tin chi tiết về việc tích hợp, hãy xem tài liệu về nhà cung cấp dịch vụ của Merchant Center.

Quyền truy cập

Mỗi loại dịch vụ cung cấp một cấp truy cập nhất định cho người dùng của nhà cung cấp dịch vụ đối với tài khoản được cung cấp dịch vụ:

  • Tổng hợp tài khoản: Dịch vụ này cung cấp toàn bộ quyền ADMIN.

  • Quản lý chiến dịch: Dịch vụ này cung cấp quyền truy cập bị hạn chế, cho phép tài khoản Google Ads được liên kết truy cập vào các sản phẩm và thông tin cơ bản về tài khoản.

  • So sánh giá: Theo mặc định, dịch vụ này cung cấp toàn quyền ADMIN. Tuy nhiên, doanh nghiệp có thể hạn chế quyền truy cập được cấp trong Merchant Center.

  • Quản lý trang thông tin địa phương: Dịch vụ này không cung cấp quyền truy cập trực tiếp. Thay vào đó, việc này cho phép trang thông tin đồng bộ hoá sản phẩm với tài khoản Merchant Center.

Quan trọng: Quyền truy cập được mô tả cho các loại dịch vụ sau đây chỉ áp dụng cho các nhà cung cấp dịch vụ được phê duyệt. Hãy liên hệ với nhóm hỗ trợ của chúng tôi nếu bạn là nhà cung cấp dịch vụ và muốn sử dụng tính năng này. Nếu bạn đã được phê duyệt để sử dụng phương thức accounts.link cho việc quản lý sản phẩm trong Content API for Shopping, thì bạn có thể sử dụng dịch vụ này trong Merchant API mà không cần phê duyệt thêm.

  • Quản lý tài khoản: Theo mặc định, dịch vụ này cung cấp toàn ADMIN quyền.

  • Quản lý sản phẩm: Dịch vụ này cung cấp toàn bộ quyền ADMIN. Xin lưu ý rằng trong tương lai, quyền này sẽ chỉ giới hạn ở các quyền truy cập liên quan đến sản phẩm.

  • Quản lý quy trình thanh toán qua UCP (v1alpha, quyền truy cập có giới hạn): Dịch vụ này cung cấp toàn bộ quyền ADMIN. Xin lưu ý rằng trong tương lai, quyền này sẽ chỉ giới hạn ở các quyền truy cập liên quan đến quy trình thanh toán của UCP.

Cách áp dụng mối quan hệ cho các nền tảng bên thứ ba

Nếu bạn là một nền tảng bên thứ ba quản lý tài khoản thay mặt cho các doanh nghiệp khác, thì nội dung sau đây sẽ cho biết cách các khái niệm khác nhau liên kết với cấu trúc tài khoản của bạn:

  1. Nhà cung cấp dịch vụ: Tài khoản nâng cao của bạn.
  2. Tài khoản nhận dịch vụ: Tài khoản Merchant Center đại diện cho doanh nghiệp mà bạn quản lý.
  3. Dịch vụ:
    • accountAggregation: Được các nền tảng tạo cửa hàng (nền tảng thương mại điện tử), đối tác kênh, trang web thương mại và nhà bán lẻ nhiều thương hiệu sử dụng để tạo tài khoản phụ mới thay mặt cho người bán. Giao diện người dùng của Merchant Center tự động định cấu hình các công cụ xây dựng cửa hàng và đối tác kênh dưới dạng tài khoản nâng cao có accountAggregation, cho phép họ xem và quản lý tài khoản phụ trong giao diện người dùng của Merchant Center.
    • accountManagement: Được các công ty quảng cáo sử dụng để tạo hoặc liên kết với các tài khoản khách hàng độc lập do người bán sở hữu. Họ có thể xem các tài khoản này trong Merchant Center cho Công ty quảng cáo. Các loại nhà cung cấp dịch vụ khác sử dụng phương thức accounts.list trong Merchant API để xem thông tin tài khoản được liên kết.

Để biết thông tin chi tiết về cách thiết lập tài khoản nâng cao và liên kết với các tài khoản Merchant Center mới, hãy xem bài viết Tạo tài khoản.