खाते के संबंध मैनेज करना

Accounts API का इस्तेमाल करके, अपने Merchant Center खाते और अन्य सेवा देने वाली कंपनियों के बीच के संबंध मैनेज किए जा सकते हैं. संबंध एक फ़ॉर्मल कनेक्शन होता है. इससे सेवा देने वाली कंपनी, आपके कारोबार को कुछ खास सेवाएं दे पाती है. सेवा से यह तय होता है कि सेवा देने वाली कंपनी को कौनसी अनुमतियां और सुविधाएं दी गई हैं. जैसे, प्रॉडक्ट मैनेजमेंट या कैंपेन मैनेजमेंट. उदाहरण के लिए, Merchant Center खाते को Google Ads खाते से लिंक करने पर, Google Ads खाते को विज्ञापन कैंपेन चलाने के लिए आपके प्रॉडक्ट डेटा का इस्तेमाल करने की अनुमति मिल जाती है.

रिलेशनशिप में ये एट्रिब्यूट शामिल होते हैं:

  • वह Merchant Center खाता जिसे सेवा मिल रही है
  • सेवा देने वाला व्यक्ति या कंपनी
  • Merchant Center खाते को दी जा रही सेवा या सेवाओं का सेट

उपनाम

सेवा देने वाली कंपनियां, उन खातों से कोई उपनाम जोड़ सकती हैं जिनके लिए वे सेवाएं देती हैं. यह Content API for Shopping में account संसाधन में मौजूद seller_id फ़ील्ड के बराबर है. एलियास को AccountRelationship रिसॉर्स में मौजूद, वैकल्पिक account_id_alias फ़ील्ड का इस्तेमाल करके असाइन किया जा सकता है. यह कस्टम आइडेंटिफ़ायर के तौर पर काम करता है. एलियास में 1 से 50 वर्ण होने चाहिए. साथ ही, इसमें ASCII वर्णमाला के अक्षर, दशमलव वाले अंक, हाइफ़न, अंडरस्कोर, फ़ुल स्टॉप या टिल्ड ([A-Za-z0-9_~.-]{1,50}) का इस्तेमाल किया जाना चाहिए.

किसी खाते को उसके उपनाम का इस्तेमाल करके ऐक्सेस करने के लिए, यूआरएल स्ट्रक्चर GET /accounts/v1/accounts/{provider}~{account_id_alias} है.

सेवाएं

Accounts API में, खातों को ये सेवाएं मिल सकती हैं. खाता बनाते समय, इनमें से कई सेवाएं जोड़ी जा सकती हैं.

  • खाता एग्रीगेशन: यह सेवा, ऐडवांस खाते को किसी दूसरे खाते से लिंक करती है. इससे ऐडवांस खाते को पूरा और बिना किसी पाबंदी के ऐक्सेस मिल जाता है. आम तौर पर, इसका इस्तेमाल मार्केटप्लेस, एक से ज़्यादा ब्रैंड वाले खुदरा दुकानदार या अंतरराष्ट्रीय खुदरा दुकानदार करते हैं. इन्हें नेस्ट किए गए खातों पर एक साथ कंट्रोल करने की ज़रूरत होती है. अगर आप कोई ई-कॉमर्स प्लैटफ़ॉर्म या चैनल पार्टनर हैं, तो हमारा सुझाव है कि आप accountManagement का इस्तेमाल करें. खाता एग्रीगेशन का इस्तेमाल करके खाता बनाते समय, externalAccountId को शामिल नहीं किया जाना चाहिए.

  • कैंपेन मैनेजमेंट: यह सेवा, Merchant Center खाते और Google Ads खाते के बीच लिंक को मॉडल करती है. इससे Google Ads खाते को विज्ञापन कैंपेन चलाने के लिए ज़रूरी प्रॉडक्ट और खाते के डेटा का ऐक्सेस मिलता है. इस मामले में, सेवा देने वाली कंपनी GOOGLE_ADS है और externalAccountId, Google Ads खाते का आईडी है. यह सेवा किसी मौजूदा खाते के लिए भी सुझाई जा सकती है.

  • कीमत की तुलना करने की सुविधा: इससे पता चलता है कि Merchant Center खाता, कंपैरिज़न शॉपिंग सर्विस (सीएसएस) के साथ जुड़ा हुआ है.

  • स्थानीय लिस्टिंग मैनेज करना: इससे पता चलता है कि Google Business Profile का इस्तेमाल करके, स्थानीय इन्वेंट्री और लिस्टिंग को मैनेज करने के लिए, स्टोर मैनेजर के साथ क्या संबंध है.

  • खाता मैनेजमेंट: इस सेवा की मदद से, सेवा देने वाली कंपनी Merchant Center खाते पर एडमिन से जुड़ी कार्रवाइयां कर सकती है. जैसे, खाते की सेटिंग कॉन्फ़िगर करना, उपयोगकर्ताओं को मैनेज करना या कारोबार की जानकारी अपडेट करना. कारोबार, दिए गए ऐक्सेस को सीमित भी कर सकता है. खाता बनाने के दौरान इस सेवा का इस्तेमाल करने पर, यह सेवा, सेवा देने वाली कंपनी से लिंक किया गया एक खाता बनाती है. ई-कॉमर्स प्लैटफ़ॉर्म और चैनल पार्टनर के लिए, यह तरीका अपनाने का सुझाव दिया जाता है. इसे किसी मौजूदा खाते के लिए भी सुझाया जा सकता है.

  • प्रॉडक्ट मैनेजमेंट: इस सेवा की मदद से, सेवा देने वाली कंपनियां प्रॉडक्ट और उनसे जुड़ी सुविधाओं को मैनेज कर सकती हैं. जैसे, डेटा सोर्स और नियम. खाता बनाते समय इसे जोड़ने पर, आम तौर पर इसे accountManagement या accountAggregation के साथ जोड़ा जाता है. यह सेवा किसी मौजूदा खाते के लिए भी सुझाई जा सकती है.

इमेज में दो लोग हाथ मिलाते हुए दिख रहे हैं

कोई सेवा देने के लिए, सेवा देने वाले खाते और सेवा पाने वाले खाते, दोनों को कनेक्शन को अनुमति देनी होगी. अनुमति देने की इस प्रोसेस को हैंडशेक कहा जाता है.

हैंडशेक की प्रोसेस में दो चरण होते हैं:

  1. एक पक्ष, सेवा लिंक करने का अनुरोध करता है.
  2. दूसरा पक्ष, प्रस्ताव को स्वीकार या अस्वीकार करता है.

प्रस्ताव स्वीकार किए जाने के बाद, सेवा को मंज़ूरी मिल जाती है और इसे पूरी तरह से स्थापित मान लिया जाता है. सेवा देने वाले व्यक्ति या कंपनी को दिया गया कोई भी ऐक्सेस का अधिकार, अब ज़रूरी शर्तें पूरी करने वाले उपयोगकर्ताओं को दिया जाता है. इसके बारे में जानने के लिए, नीचे ऐक्सेस के अधिकार देखें.

ध्यान दें कि प्रस्ताव बनाने, उसे अस्वीकार करने या स्वीकार करने वाले व्यक्ति के पास, उस खाते के लिए ADMIN ऐक्सेस करने के अधिकार होने चाहिए जिससे यह प्रोसेस शुरू की गई है. इसलिए, अगर सेवा देने वाली कंपनी कोई सेवा उपलब्ध कराती है, तो सेवा का सुझाव देने वाले व्यक्ति के पास, सेवा देने वाली कंपनी के खाते में ADMIN की भूमिका होनी चाहिए. साथ ही, सुझाव को स्वीकार या अस्वीकार करने वाले व्यक्ति के पास, सुझाव पाने वाले खाते में ADMIN की भूमिका होनी चाहिए.

यहां दिए गए सैंपल में, खाता सेवा का सुझाव देने का तरीका बताया गया है:

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

सेवा के हिसाब से हाथ मिलाने का व्यवहार

यहां हर सेवा के लिए, हैंडशेक से जुड़ी ज़रूरी शर्तों के बारे में बताया गया है:

  • खाता एग्रीगेशन: इस सेवा को सिर्फ़ खाता बनाते समय सेट अप किया जा सकता है. सेवा देने वाला व्यक्ति या कंपनी का खाता, ऐडवांस खाता होना चाहिए. साथ ही, सेवा को अपने-आप मंज़ूरी मिल जाती है, क्योंकि ऐडवांस खाते के उपयोगकर्ताओं के पास बनाए जा रहे खाते का पूरा ADMIN ऐक्सेस होता है.

  • कीमत की तुलना करके खरीदारी करना: createAndConfigure का इस्तेमाल करके खाता बनाते समय, इस सेवा को जोड़ने पर इसे अपने-आप मंज़ूरी मिल जाती है.

  • कैंपेन मैनेजमेंट: यह सामान्य हैंडशेक प्रोसेस को फ़ॉलो करता है. हालांकि, इसमें एक सिस्टम (उदाहरण के लिए, Google Ads) में प्रपोज़ल बनाए जाते हैं और दूसरे सिस्टम (उदाहरण के लिए, Merchant Center या Merchant API के ज़रिए) में उन्हें मंज़ूरी दी जाती है.

  • लोकल लिस्टिंग मैनेज करना: इस सेवा के लिए, हैंडशेक का सुझाव एक खास तरीके से दिया जाता है. साथ ही, मंज़ूरी दूसरे सिस्टम में दी जाती है. उदाहरण के लिए, Google Business Profile. इस बारे में ज़्यादा जानकारी पाने के लिए, Google Business Profile को लिंक करने से जुड़ी गाइड पढ़ें.

  • खाता मैनेजमेंट: इस सेवा के लिए, propose का इस्तेमाल करते समय, सामान्य हैंडशेक प्रोसेस लागू होती है. अगर खाता बनाते समय createAndConfigure का इस्तेमाल करके सेवा जोड़ी जाती है, तो इसे अपने-आप स्वीकार कर लिया जाता है.

  • प्रॉडक्ट मैनेजमेंट: इस सेवा के लिए, हैंडशेक की सामान्य प्रोसेस लागू होती है. इसमें एक पक्ष की ओर से प्रस्ताव दिया जाता है और दूसरा पक्ष उसे स्वीकार करता है.

ऐक्सेस के अधिकार

सेवा देने वाली हर कंपनी, सेवा का इस्तेमाल करने वाले लोगों को उस खाते का ऐक्सेस देती है जिसके लिए सेवा दी जा रही है. ऐक्सेस का लेवल इस तरह से तय होता है:

  • खाता एग्रीगेशन: यह सेवा, ADMIN के सभी अधिकार देती है.

  • कैंपेन मैनेजमेंट: यह सेवा, सीमित ऐक्सेस का अधिकार देती है. इससे लिंक किए गए Ads खाते को प्रॉडक्ट और खाते की बुनियादी जानकारी को ऐक्सेस करने की अनुमति मिलती है.

  • कीमत की तुलना करना: यह सेवा, डिफ़ॉल्ट रूप से ADMIN के सभी अधिकार देती है. हालांकि, कारोबार Merchant Center में दिए गए ऐक्सेस को सीमित कर सकता है.

  • लोकल लिस्टिंग मैनेज करने की सेवा: इस सेवा के तहत, सीधे तौर पर ऐक्सेस करने का अधिकार नहीं मिलता. इसके बजाय, यह लिस्टिंग को Merchant Center खाते के साथ अपने प्रॉडक्ट सिंक करने में सक्षम बनाती है.

अहम जानकारी: यहाँ बताई गई सेवाएँ सिर्फ़ उन सेवा देने वाली कंपनियों के लिए उपलब्ध हैं जिन्हें मंज़ूरी मिली है. अगर आप सेवा देने वाली कंपनी हैं और आपको इस सुविधा का इस्तेमाल करना है, तो हमारी सहायता टीम से संपर्क करें. अगर आपको Content API for Shopping में प्रॉडक्ट मैनेज करने के लिए, accounts.link तरीके का इस्तेमाल करने की अनुमति पहले ही मिल चुकी है, तो Merchant API में इस सेवा का इस्तेमाल किया जा सकता है. इसके लिए, आपको अनुमति लेने की ज़रूरत नहीं होगी.

  • खाता मैनेजमेंट: यह सेवा, डिफ़ॉल्ट रूप से ADMIN के सभी अधिकार देती है.

  • प्रॉडक्ट मैनेजमेंट: यह सेवा, ADMIN के सभी अधिकार देती है. ध्यान दें कि आने वाले समय में, यह सिर्फ़ प्रॉडक्ट से जुड़े ऐक्सेस के अधिकारों तक सीमित होगा.

तीसरे पक्ष के प्लैटफ़ॉर्म के लिए, कारोबारी संबंधों से जुड़ी जानकारी कैसे लागू होती है

अगर आप तीसरे पक्ष के ऐसे प्लैटफ़ॉर्म हैं जो अन्य कारोबारों की ओर से खातों को मैनेज करता है, तो यहां बताया गया है कि अलग-अलग कॉन्सेप्ट, आपके खाते के स्ट्रक्चर से कैसे मैप होते हैं:

  1. सेवा देने वाला व्यक्ति या कंपनी: आपका ऐडवांस खाता.
  2. सेवा पाने वाला खाता: यह एक ऐसा Merchant Center खाता होता है जो आपके मैनेज किए जा रहे कारोबार को दिखाता है.
  3. सेवा:
    • accountManagement: यह ई-कॉमर्स प्लैटफ़ॉर्म और चैनल पार्टनर के लिए सुझाई गई सेवा है. ये लोग या कंपनियां, कारोबारियों या कंपनियों की ओर से नए खाते बनाती हैं. इससे एक ऐसा खाता बनता है जिसका मालिकाना हक कारोबारी या कंपनी के पास होता है. हालांकि, इसे मैनेज करने के लिए आपके खाते से लिंक किया जाता है. यह इस उदाहरण के लिए, Merchant Center के पसंदीदा स्ट्रक्चर के मुताबिक है.
    • accountAggregation: यह सेवा, आपके ऐडवांस खाते को किसी दूसरे खाते से लिंक करती है. यह सुविधा काम करती है, लेकिन ई-कॉमर्स प्लैटफ़ॉर्म और चैनल पार्टनर के लिए इसका सुझाव नहीं दिया जाता.

ऐडवांस खाता सेट अप करने और उसे नए Merchant Center खातों से लिंक करने के बारे में जानकारी पाने के लिए, खाते बनाएं लेख पढ़ें.