Content API for Shopping से Merchant API पर माइग्रेट करना

इस गाइड में, कारोबार के डेटा को मैनेज करने के लिए, Content API for Shopping से Merchant API पर माइग्रेट करने की प्रोसेस के बारे में बताया गया है.

इस गाइड का इस्तेमाल करके, Content API for Shopping को Merchant API पर माइग्रेट किया जा सकता है. Merchant API और इसके सब-एपीआई के बारे में ज़्यादा जानकारी के लिए, Merchant API का डिज़ाइन देखें.

अपनी प्रोफ़ाइल बनाना शुरू करें

Merchant API का इस्तेमाल शुरू करने के लिए, अपने अनुरोध के यूआरएल को इस फ़ॉर्मैट में बदलें:

https://merchantapi.googleapis.com/{SUB_API}/{VERSION}/{RESOURCE_NAME}:{METHOD}

Merchant API का इस्तेमाल करने के लिए, आपको डेवलपर रजिस्ट्रेशन के तरीके का इस्तेमाल करके, अपने Merchant Center खाते और Google Cloud प्रोजेक्ट को लिंक करना होगा. इसके लिए, यह तरीका अपनाएं:

POST https://merchantapi.googleapis.com/accounts/v1beta/accounts/{ACCOUNT_ID}/developerRegistration:registerGcp

{
  developer_email:"example-email@example.com"
}

ज़्यादा जानकारी के लिए, क्विकस्टार्ट गाइड और Merchant API का रेफ़रंस देखें.

Merchant API (बीटा वर्शन) में नए अपडेट देखें.

Content API for Shopping में किए गए सुधार

Merchant API की मदद से, Merchant Center में वर्कफ़्लो को अपने-आप चलाया और आसान बनाया जा सकता है. साथ ही, Content API for Shopping की तुलना में बेहतर सुविधाएं भी मिलती हैं.

इस्तेमाल के मुख्य उदाहरण:

  • खाते का अपने-आप मैनेज होना
  • प्रॉडक्ट का अपने-आप मैनेज होना
  • ऑटोमेटेड इन्वेंट्री मैनेजमेंट
  • कस्टम रिपोर्टिंग

सुधार के लिए मुख्य बातें:

  • नई सुविधाओं वाले सब-एपीआई, जिनमें ये शामिल हैं:
    • ऑर्डर ट्रैकिंग की सुविधा से, कारोबार के ऑर्डर ट्रैकिंग के इतिहास का इस्तेमाल किया जा सकता है. इससे, ग्राहकों को शिपिंग में लगने वाले समय का सटीक अनुमान दिया जा सकता है. इन सिग्नल की मदद से, मुफ़्त और तेज़ शिपिंग की सुविधा के साथ बेहतर लिस्टिंग भी दिखाई जा सकती हैं.
    • समस्या हल करने के लिए, डाइग्नोस्टिक्स कॉन्टेंट और सहायता से जुड़ी कार्रवाइयों का ऐक्सेस उसी तरह मिलता है जिस तरह Merchant Center के यूज़र इंटरफ़ेस (यूआई) में मिलता है.
    • Product Studio (ALPHA), प्रॉडक्ट के टाइटल और ब्यौरे जनरेट करने और उन्हें ऑप्टिमाइज़ करने के लिए, genAI का इस्तेमाल करता है. ऐक्सेस का अनुरोध करने के लिए, आपको इस फ़ॉर्म पर हस्ताक्षर करने होंगे.
    • Accounts sub-API में नए संसाधन.
    • OmnichannelSettings कई तरीकों से खरीदारी करने की सुविधा के लिए, खाते के कॉन्फ़िगरेशन को मैनेज करता है. जैसे, मुफ़्त में दिखाई जाने वाली स्थानीय लिस्टिंग (एफ़एलएल) और स्थानीय इन्वेंट्री विज्ञापन (एलआईए).
    • LfpProviders इन्वेंट्री डेटा के लिए, Local Feeds Partnership (LFP) पार्टनर से कनेक्ट करता है.
    • GbpAccounts स्थानीय स्टोर के डेटा के लिए, Google Business Profile खाते से कनेक्ट होता है.
    • OnlineReturnPolicy इसकी मदद से, ऑनलाइन नीतियां बनाई जा सकती हैं, मिटाई जा सकती हैं, और अपडेट की जा सकती हैं.
  • इन्वेंट्री, प्रॉडक्ट डेटा, और अन्य एपीआई के लिए नए तरीके. इनमें ये शामिल हैं:
    • प्रॉडक्ट सब-एपीआई में एक नया तरीका.
    • ProductsUpdate की मदद से, अलग-अलग प्रॉडक्ट अपडेट किए जा सकते हैं. इसके लिए, आपको ProductInput के लिए ज़रूरी सभी फ़ील्ड की जानकारी देने की ज़रूरत नहीं है.
  • न सिर्फ़ प्राइमरी डेटा सोर्स, बल्कि एक से ज़्यादा डेटा सोर्स बनाने की सुविधा, जैसे कि:
  • प्रॉडक्ट की समीक्षाएं और कारोबारी/कंपनी की समीक्षाएं अपलोड करने की सुविधा
  • Merchant API की मदद से, खाते के डेटा में होने वाले बदलावों के लिए सूचनाएं चालू की जा सकती हैं

खातों में ये बदलाव हुए हैं:

  • हर एपीआई कॉल के लिए, ज़्यादा से ज़्यादा pageSize की संख्या 250 से बढ़ाकर 1,000 पंक्तियां कर दी गई है.
  • DataSources बनाने के बाद, प्रॉडक्ट इंसर्शन, प्रमोशन, प्रॉडक्ट की समीक्षाओं, और कारोबारी/कंपनी की समीक्षाओं में होने वाली देरी को ठीक कर दिया गया है.

आने वाले समय में क्या होगा:

  • DataSources और प्रॉडक्ट के लिए, चैनल फ़ील्ड का इस्तेमाल बंद कर दिया गया है. साथ ही, इसे आने वाले समय में हटा दिया जाएगा.
  • रिपोर्टिंग सब-एपीआई के तहत, productView टेबल में clickPotentialRank के लिए अपडेट की गई परिभाषा लॉन्च की गई: * clickPotential के आधार पर प्रॉडक्ट की रैंकिंग को सामान्य रूप से 1 से 1,000 के बीच की वैल्यू में बदल दिया गया है.
    • कम clickPotentialRank वाले प्रॉडक्ट, अब भी खोज क्वेरी की शर्तें पूरी करने वाले व्यापारी/कंपनी/कारोबारी के प्रॉडक्ट में सबसे ज़्यादा क्लिक पाने की संभावना रखते हैं. यह कोई ऐसा बदलाव नहीं है जिससे आपके काम में रुकावट आए. इसे 1 जुलाई, 2025 को लॉन्च किया जा सकता है.
  • AccountRelationship के AccountIdAlias की मदद से, खाते के जटिल स्ट्रक्चर को बेहतर तरीके से मैनेज किया जा सकता है. उदाहरण के लिए, मार्केटप्लेस, मर्चेंट के इंटरनल आईडी, जैसे कि खाता आईडी के बजाय, उपयोगकर्ता के तय किए गए उपनाम का इस्तेमाल करते हैं.

gRPC के साथ काम करने की सुविधा

Merchant API, gRPC और REST के साथ काम करता है. Merchant API के लिए gRPC और Content API for Shopping के लिए REST का एक साथ इस्तेमाल किया जा सकता है.

Merchant API की क्लाइंट लाइब्रेरी के लिए, gRPC की ज़रूरत होती है.

ज़्यादा जानकारी के लिए, gRPC के बारे में खास जानकारी देखें.

इनके साथ काम करता है

इस गाइड में, Merchant API के पूरे वर्शन पर लागू होने वाले सामान्य बदलावों के बारे में बताया गया है.

Merchant API को Content API for Shopping की मौजूदा सुविधाओं के साथ काम करने के लिए डिज़ाइन किया गया है.

उदाहरण के लिए, Merchant Inventories API का इस्तेमाल, Content API for Shopping के मौजूदा वर्शन 2.1 products के साथ किया जा सकता है. नया स्थानीय प्रॉडक्ट (जिसे किसी स्थानीय स्टोर में बेचा जाता है) अपलोड करने के लिए, Content API for Shopping का इस्तेमाल किया जा सकता है. इसके बाद, उस प्रॉडक्ट के लिए स्टोर में मौजूद जानकारी मैनेज करने के लिए, Merchant Inventories API LocalInventory संसाधन का इस्तेमाल किया जा सकता है.

Content API के मुकाबले बेहतर सुविधाएं

Merchant API, Content API की तुलना में इन मामलों में बेहतर है:

इन बदलावों के बारे में ज़्यादा जानें.

वर्शन और सब-एपीआई

Merchant API में, वर्शन और सब-एपीआई के कॉन्सेप्ट शामिल हैं. इसके मॉड्यूलर डिज़ाइन की मदद से, ज़रूरी सब-एपीआई पर फ़ोकस किया जा सकता है. इससे, इसे इस्तेमाल करना आसान हो जाता है. साथ ही, आने वाले समय में नए वर्शन पर माइग्रेट करना भी आसान हो जाता है. वर्शन, आपके रिक्वेस्ट यूआरएल के साथ लागू किए जाएंगे.यह रणनीति, Google Ads API के अनुभव से मिलती-जुलती है.

ज़्यादा बेहतर अनुरोध

Merchant API को कॉल करने के लिए, Merchant API के यूआरएल अनुरोधों में ज़्यादा पैरामीटर की ज़रूरत होती है. इसमें संसाधन, वर्शन, नाम (आइडेंटिफ़ायर), और तरीका (गैर-स्टैंडर्ड तरीके) शामिल हैं. इस बारे में ज़्यादा जानने के लिए, खाता और प्रॉडक्ट आइडेंटिफ़ायर और उदाहरण देखें.

आइडेंटिफ़ायर के लिए एआईपी के सिद्धांत

Content API for Shopping, संसाधनों (उदाहरण के लिए, merchantId, productId) की पहचान करने के लिए आईडी का इस्तेमाल करता है. वहीं, Merchant API, एआईपी के साथ अलाइन करने के लिए name आइडेंटिफ़ायर का इस्तेमाल करता है. एपीआई को बेहतर बनाने के सिद्धांत देखें.

{name} आइडेंटिफ़ायर में, रिसॉर्स आइडेंटिफ़ायर और उसका पैरंट (या संभावित तौर पर एक से ज़्यादा पैरंट) शामिल होता है, ताकि {name}, accounts/{account}/products/{product} के बराबर हो

सभी रीड और राइट कॉल, name फ़ील्ड को रिसॉर्स आइडेंटिफ़ायर के तौर पर दिखाते हैं.

{name} में कलेक्शन आइडेंटिफ़ायर accounts/ और products/ भी शामिल हैं.

Merchant API, Merchant Center आईडी के लिए {account} और प्रॉडक्ट आइडेंटिफ़ायर के लिए {product} का इस्तेमाल करता है.

उदाहरण के लिए, किसी संसाधन से name को वापस पाने के लिए getName() तरीका लागू करें. साथ ही, व्यापारी/कंपनी और संसाधन आईडी से name को खुद बनाने के बजाय, आउटपुट को वैरिएबल के तौर पर सेव करें.

कॉल में name फ़ील्ड का इस्तेमाल करने का उदाहरण यहां दिया गया है:

   POST https://merchantapi.googleapis.com/inventories/v1beta/{PARENT}/regionalInventories:insert

टेबल में दिखाया गया है कि Content API for Shopping products.get के अनुरोध में क्या बदलाव हुए हैं:

Shopping के लिए Content API Merchant API
GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} GET https://merchantapi.googleapis.com/products/v1beta/{name}

ज़्यादा जानकारी के लिए, आइडेंटिफ़ायर में हुए बदलाव देखें.

एक और उदाहरण के तौर पर, Merchant API का इस्तेमाल करके Merchant Center आईडी 4321 से, आइडेंटिफ़ायर online~en~US~1234 वाला प्रॉडक्ट वापस लाने का तरीका इस तरह दिखेगा:

    GET
    https://merchantapi.googleapis.com/products/v1beta/accounts/4321/products/online~en~US~1234

जहां {name}, accounts/4321/products/online~en~US~1234 के बराबर है. Merchant API में, पढ़ने और लिखने के सभी कॉल के लिए, नाम वाले इस नए फ़ील्ड को संसाधन आइडेंटिफ़ायर के तौर पर दिखाया जाता है.

Content API for Shopping में, कोलन (:) प्रॉडक्ट के नाम में डेलिमिटर के तौर पर काम करता है, जबकि Merchant API में, टिल्ड (~) यह काम करता है.

उदाहरण के लिए, Content API for Shopping में प्रॉडक्ट आईडी:

channel:contentLanguage:feedLabel:offerId.

Merchant Center API में, यह इस तरह दिखता है:

channel~contentLanguage~feedLabel~offerId.

चाइल्ड रिसॉर्स के लिए पैरंट फ़ील्ड

Merchant API में, सभी चाइल्ड रिसॉर्स में parent फ़ील्ड होता है. पूरे पैरंट रिसॉर्स को पास करने के बजाय, parent फ़ील्ड का इस्तेमाल करके, उस रिसॉर्स का {name} तय किया जा सकता है जिसमें चाइल्ड रिसॉर्स को डालना है. parent फ़ील्ड का इस्तेमाल, list के साथ भी किया जा सकता है

उदाहरण के लिए, किसी प्रॉडक्ट की स्थानीय इन्वेंट्री की सूची बनाने के लिए, list वाले तरीके के लिए, parent फ़ील्ड में प्रॉडक्ट का name डालें. इस मामले में, दिया गया product, दिखाए गए LocalInventory संसाधनों का parent है.

    GET
    https://merchantapi.googleapis.com/inventories/v1beta/{parent}/localInventories

प्रॉडक्ट online~en~US~1234' और खाते 4321 के लिए सभी स्थानीय इन्वेंट्री वापस पाने के लिए, अनुरोध इस तरह दिखेगा

    GET
    https://merchantapi.googleapis.com/inventories/v1beta/accounts/4321/products/online~en~US~1234/localInventories</code>

पैरंट accounts/{account}/products/{product} है. ध्यान दें कि इस मामले में, नाम आइडेंटिफ़ायर (accounts/ और products/) में localInventories संसाधन के दो पैरंट शामिल हैं, क्योंकि खाता प्रॉडक्ट संसाधन का पैरंट है.

सामान्य एनम

सामान्य एनम का इस्तेमाल करने से, डेटा को एक जैसा रखने में मदद मिलती है.

Destination.DestinationEnum फ़ील्ड से यह पता चलता है कि आपके संसाधन किन प्लैटफ़ॉर्म पर दिखाए जाएं. DestinationEnum, डेस्टिनेशन टारगेटिंग के लिए सभी उपलब्ध वैल्यू की सूची बनाता है. साथ ही, यह सभी सब-एपीआई के लिए एक जैसा होता है. उदाहरण के लिए, प्रमोशन एट्रिब्यूट के लिए.

ReportingContext.ReportingContextEnum फ़ील्ड, उस संदर्भ को दिखाता है जिस पर आपके खाते और प्रॉडक्ट की समस्याएं लागू होती हैं. इस फ़ील्ड का इस्तेमाल, रिपोर्टिंग के सभी तरीकों में किया जाता है. उदाहरण के लिए, IssueSeverityPerReportingContext के लिए.

पुराने सिस्टम के साथ काम करने की सुविधा

Merchant API का इस्तेमाल शुरू करने पर, Content API for Shopping के मौजूदा इंटिग्रेशन पर कोई असर नहीं पड़ता. ज़्यादा जानकारी के लिए, काम करने की सुविधा देखें.

अपने सब-एपीआई को Merchant API पर माइग्रेट करने के बाद, हमारा सुझाव है कि आप माइग्रेट किए गए सब-एपीआई के लिए सिर्फ़ Merchant API का इस्तेमाल करें.

रिमोट प्रोसीज़र कॉल (gRPC) की उपलब्धता

Merchant API के साथ इंटिग्रेट करने के लिए, gRPC का सुझाव दिया जाता है.

इसके फ़ायदे ये हैं:

कस्टम बैचिंग, पहले से मौजूद बैचिंग की सुविधा में बदल जाती है

एक साथ कई अनुरोध करने की सुविधा, असाइनॉन कॉल का इस्तेमाल करने पर ज़्यादा बेहतर तरीके से काम करती है. Merchant API में एक साथ कई अनुरोध करने के लिए, एक साथ कई अनुरोध करने की सुविधा का इस्तेमाल करने के बारे में ज़्यादा जानें. साथ ही, एक साथ कई अनुरोधों के लिए कोड को फिर से तैयार करने का तरीका जानें.

माइग्रेशन को तेज़ी से पूरा करने के लिए, हमारा सुझाव है कि आप क्लाइंट लाइब्रेरी का इस्तेमाल करें.

Merchant API, customBatch के उस तरीके के साथ काम नहीं करता जो Content API for Shopping में दिखाया गया है. इसके बजाय, एक साथ कई अनुरोध भेजें लेख पढ़ें या कॉल को अलग-अलग समय पर चलाएं.

यहां दिए गए Java सैंपल में, प्रॉडक्ट इनपुट डालने का तरीका बताया गया है.

   import com.google.api.core.ApiFuture;
import com.google.api.core.ApiFutureCallback;
import com.google.api.core.ApiFutures;
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.common.util.concurrent.MoreExecutors;
import com.google.shopping.merchant.products.v1beta.Attributes;
import com.google.shopping.merchant.products.v1beta.InsertProductInputRequest;
import com.google.shopping.merchant.products.v1beta.ProductInput;
import com.google.shopping.merchant.products.v1beta.ProductInputsServiceClient;
import com.google.shopping.merchant.products.v1beta.ProductInputsServiceSettings;
import com.google.shopping.merchant.products.v1beta.Shipping;
import com.google.shopping.type.Channel.ChannelEnum;
import com.google.shopping.type.Price;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/** This class demonstrates how to insert a product input */
public class InsertProductInputAsyncSample {

  private static String getParent(String accountId) {
    return String.format("accounts/%s", accountId);
  }

  private static String generateRandomString() {
    String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    Random random = new Random();
    StringBuilder sb = new StringBuilder(8);
    for (int i = 0; i < 8; i++) {
      sb.append(characters.charAt(random.nextInt(characters.length())));
    }
    return sb.toString();
  }

  private static ProductInput createRandomProduct() {
    Price price = Price.newBuilder().setAmountMicros(33_450_000).setCurrencyCode("USD").build();

    Shipping shipping =
        Shipping.newBuilder().setPrice(price).setCountry("GB").setService("1st class post").build();

    Shipping shipping2 =
        Shipping.newBuilder().setPrice(price).setCountry("FR").setService("1st class post").build();

    Attributes attributes =
        Attributes.newBuilder()
            .setTitle("A Tale of Two Cities")
            .setDescription("A classic novel about the French Revolution")
            .setLink("https://exampleWebsite.com/tale-of-two-cities.html")
            .setImageLink("https://exampleWebsite.com/tale-of-two-cities.jpg")
            .setAvailability("in stock")
            .setCondition("new")
            .setGoogleProductCategory("Media > Books")
            .addGtin("9780007350896")
            .addShipping(shipping)
            .addShipping(shipping2)
            .build();

    return ProductInput.newBuilder()
        .setChannel(ChannelEnum.ONLINE)
        .setContentLanguage("en")
        .setFeedLabel("CH")
        .setOfferId(generateRandomString())
        .setAttributes(attributes)
        .build();
  }

  public static void asyncInsertProductInput(Config config, String dataSource) throws Exception {

    // Obtains OAuth token based on the user's configuration.
    GoogleCredentials credential = new Authenticator().authenticate();

    // Creates service settings using the credentials retrieved above.
    ProductInputsServiceSettings productInputsServiceSettings =
        ProductInputsServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Creates parent to identify where to insert the product.
    String parent = getParent(config.getAccountId().toString());

    // Calls the API and catches and prints any network failures/errors.
    try (ProductInputsServiceClient productInputsServiceClient =
        ProductInputsServiceClient.create(productInputsServiceSettings)) {

      // Creates five insert product input requests with random product IDs.
      List<InsertProductInputRequest> requests = new ArrayList<>(5);
      for (int i = 0; i < 5; i++) {
        InsertProductInputRequest request =
            InsertProductInputRequest.newBuilder()
                .setParent(parent)
                // You can only insert products into datasource types of Input "API", and of Type
                // "Primary" or "Supplemental."
                // This field takes the `name` field of the datasource.
                .setDataSource(dataSource)
                // If this product is already owned by another datasource, when re-inserting, the
                // new datasource will take ownership of the product.
                .setProductInput(createRandomProduct())
                .build();

        requests.add(request);
      }

      System.out.println("Sending insert product input requests");
      List<ApiFuture<ProductInput>> futures =
          requests.stream()
              .map(
                  request ->
                      productInputsServiceClient.insertProductInputCallable().futureCall(request))
              .collect(Collectors.toList());

      // Creates callback to handle the responses when all are ready.
      ApiFuture<List<ProductInput>> responses = ApiFutures.allAsList(futures);
      ApiFutures.addCallback(
          responses,
          new ApiFutureCallback<List<ProductInput>>() {
            @Override
            public void onSuccess(List<ProductInput> results) {
              System.out.println("Inserted products below");
              System.out.println(results);
            }

            @Override
            public void onFailure(Throwable throwable) {
              System.out.println(throwable);
            }
          },
          MoreExecutors.directExecutor());

    } catch (Exception e) {
      System.out.println(e);
    }
  }

  public static void main(String[] args) throws Exception {
    Config config = Config.load();
    // Identifies the data source that will own the product input.
    String dataSource = "accounts/" + config.getAccountId() + "/dataSources/{datasourceId}";

    asyncInsertProductInput(config, dataSource);
  }
}

अगर Content API में customBatch का इस्तेमाल किया जाता है और आपको Merchant API के लिए इस सुविधा की ज़रूरत है, तो हमें सुझाव/राय/शिकायत/राय में इसकी वजह बताएं.

अनन्य विशेषताएं

आने वाले समय में मिलने वाली सुविधाएं, सिर्फ़ Merchant API में दिखेंगी. हालांकि, कुछ अपवाद भी होंगे. जैसे, 2025 का सालाना फ़ीड स्पेसिफ़िकेशन.

Merchant API की खास सुविधाओं में ये शामिल हैं

  • Reviews API. अपने प्रॉडक्ट और स्टोर की रेटिंग लागू करने और मैनेज करने के लिए, समीक्षाओं का इस्तेमाल करें. ज़्यादा जानकारी के लिए, सेलर की समीक्षा और प्रॉडक्ट की समीक्षा लेख पढ़ें.
  • सूचनाएं: खाते के प्रॉडक्ट डेटा में हुए बदलावों के बारे में पुश नोटिफ़िकेशन पाने के लिए साइन अप करें.

कीमत

Merchant Common पैकेज में Price के लिए ये बदलाव किए गए हैं:

Shopping के लिए Content API Merchant API
रकम वाला फ़ील्ड value:string amountMicros:int64
मुद्रा फ़ील्ड currency:string currencyCode:string

Price की रकम अब माइक्रो में रिकॉर्ड की जाती है. यहां 10 लाख माइक्रो, आपकी मुद्रा की स्टैंडर्ड यूनिट के बराबर होते हैं.

Content API for Shopping में, Price एक दशमलव संख्या थी, जो स्ट्रिंग के तौर पर थी.

रकम वाले फ़ील्ड का नाम value से बदलकर amountMicros हो गया है

मुद्रा फ़ील्ड का नाम currency से बदलकर currencyCode हो गया है. ISO 4217 फ़ॉर्मैट का इस्तेमाल करना जारी रखें.

नए अपडेट और सूचनाएं

ज़्यादा जानकारी के लिए, हर सब-एपीआई के रिलीज़ नोट देखें. Merchant API के बारे में ज़्यादा अपडेट पाने के लिए, हमारे नए अपडेट देखें.

ज़्यादा जानकारी के लिए और Merchant API के बारे में ज़्यादा जानने के लिए, हमारी डेवलपर साइट की खास जानकारी और डेटा को दूसरी जगह भेजने से जुड़ी गाइड देखें.

Merchant API और इसके सब-एपीआई के बारे में जानकारी के लिए, Merchant API का डिज़ाइन देखें.