অ্যাকাউন্ট সম্পর্ক ম্যানেজ করা

আপনার Merchant Center অ্যাকাউন্ট ও অন্যান্য পরিষেবা প্রদানকারীর মধ্যে সম্পর্ক ম্যানেজ করতে আপনি Accounts API ব্যবহার করতে পারবেন। সম্পর্ক হল একটি আনুষ্ঠানিক কানেকশন যা কোনও পরিষেবা প্রদানকারীকে আপনার ব্যবসার জন্য নির্দিষ্ট পরিষেবা অফার করতে দেয়। পরিষেবা, প্রোডাক্ট ম্যানেজমেন্ট বা ক্যাম্পেন ম্যানেজমেন্টের মতো পরিষেবা প্রদানকারীকে দেওয়া অনুমতি ও ক্ষমতাকে সংজ্ঞায়িত করে। যেমন, আপনার Merchant Center অ্যাকাউন্টকে Google Ads অ্যাকাউন্টের সাথে লিঙ্ক করলে, বিজ্ঞাপন ক্যাম্পেন চালানোর জন্য অ্যাকাউন্টটি আপনার প্রোডাক্ট ডেটা ব্যবহার করতে পারবে।

সম্পর্কের মধ্যে নিম্নলিখিত অ্যাট্রিবিউট থাকে:

  • যে Merchant Center অ্যাকাউন্ট পরিষেবা পাচ্ছে
  • পরিষেবা প্রদানকারী
  • Merchant Center অ্যাকাউন্টে প্রদান করা পরিষেবা বা পরিষেবার সেট

উপনাম

পরিষেবা প্রদানকারী, তারা যে অ্যাকাউন্ট পরিষেবা দেয় সেটির সাথে একটি ছদ্মনাম যোগ করতে পারে (এটি হল seller_id ফিল্ডের সমতুল্য যা Content API for Shopping-এ অ্যাকাউন্ট সম্পদে উপস্থিত ছিল)। AccountRelationship রিসোর্সের মধ্যে ঐচ্ছিক account_id_alias ফিল্ড ব্যবহার করে উপনাম অ্যাসাইন করা যেতে পারে এবং এটি কাস্টম শনাক্তকারী হিসেবে কাজ করে। অ্যালিয়াসে ১ থেকে ৫০টি অক্ষর থাকতে হবে যেগুলি ASCII অক্ষর, দশমিক সংখ্যা, হাইফেন, আন্ডারস্কোর, ফুল স্টপ বা টিল্ড ([A-Za-z0-9_~.-]{1,50}) থেকে বেছে নেওয়া হয়েছে।

অ্যাকাউন্টের ছদ্মনাম ব্যবহার করে সেটি অ্যাক্সেস করার URL স্ট্রাকচার হল GET /accounts/v1/accounts/{provider}~{account_id_alias}।

পরিষেবা

অ্যাকাউন্ট API-তে, অ্যাকাউন্ট নিম্নলিখিত পরিষেবাগুলি পেতে পারে। আপনি অ্যাকাউন্ট তৈরি করার সময় এইসব পরিষেবার মধ্যে অনেকগুলিকে যোগ করতে পারবেন।

  • অ্যাকাউন্ট এগ্রিগেশন: এই পরিষেবা একটি উন্নত অ্যাকাউন্টকে অন্য একটি অ্যাকাউন্টের সাথে লিঙ্ক করে, উন্নত অ্যাকাউন্টকে সম্পূর্ণ, সীমাহীন অ্যাক্সেস প্রদান করে। এটি সাধারণত মার্কেটপ্লেস, মাল্টি-ব্র্যান্ড রিটেলার বা আন্তর্জাতিক রিটেলারদের দ্বারা ব্যবহার করা হয় যাদের নেস্টেড অ্যাকাউন্টের উপর সেন্ট্রালাইজড কন্ট্রোল প্রয়োজন। আপনি ই-কমার্স প্ল্যাটফর্ম বা চ্যানেল পার্টনার হলে, আমরা এর পরিবর্তে accountManagement ব্যবহার করার সাজেশন দিই। অ্যাকাউন্ট এগ্রিগেশন ব্যবহার করে অ্যাকাউন্ট তৈরি করলে, externalAccountId বাদ দিতে হবে।

  • ক্যাম্পেন ম্যানেজমেন্ট: এই পরিষেবা একটি Merchant Center অ্যাকাউন্ট ও একটি Google Ads অ্যাকাউন্টের মধ্যে লিঙ্ক মডেল করে, এর ফলে বিজ্ঞাপন ক্যাম্পেন চালানোর জন্য প্রয়োজনীয় প্রোডাক্ট ও অ্যাকাউন্ট ডেটাতে Ads অ্যাকাউন্টের অ্যাক্সেস থাকে। এই ক্ষেত্রে পরিষেবা প্রদানকারী হল GOOGLE_ADS এবং externalAccountId হল Google Ads অ্যাকাউন্টের আইডি । আগে থেকে থাকা অ্যাকাউন্টের জন্যও এই পরিষেবা সাজেস্ট করা হতে পারে।

  • তুলনামূলক কেনাকাটা: এটি Merchant Center অ্যাকাউন্ট পরিচালনা করে এমন একটি তুলনামূলক কেনাকাটার পরিষেবার (CSS) সাথে সম্পর্ককে বোঝায়।

  • স্থানীয় তালিকা ম্যানেজমেন্ট: এটি 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 অ্যাকাউন্টের সাথে লিঙ্ক করতে হয় সেই সম্পর্কে আরও জানতে, অ্যাকাউন্ট তৈরি করুন দেখুন।