Content API for Shopping থেকে Merchant API-তে মাইগ্রেট করা

এই নির্দেশিকায়, শপিংয়ের জন্য কন্টেন্ট API থেকে ব্যবসার ডেটা ম্যানেজমেন্টের জন্য Merchant API-তে মাইগ্রেশন প্রসেস ব্যাখ্যা করা হয়েছে।

আপনার আগে থেকে থাকা Shopping-এর জন্য Content API ইমপ্লিমেন্টেশনকে Merchant API-তে মাইগ্রেট করার জন্য আপনি এই গাইড ব্যবহার করতে পারবেন। Merchant API এবং এর সাব-API-এর বিবরণ সম্পর্কে আরও জানতে, Merchant API ডিজাইন দেখুন।

শুরু করুন

Merchant API ব্যবহার করা শুরু করতে, আপনার অনুরোধ URL-কে নিম্নলিখিত ফর্ম্যাটে পরিবর্তন করুন:

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

Merchant API ব্যবহার করতে, আপনাকে অবশ্যই ডেভেলপার রেজিস্ট্রেশন পদ্ধতি ব্যবহার করে আপনার Merchant Center অ্যাকাউন্ট এবং আপনার Google Cloud প্রোজেক্ট লিঙ্ক করতে হবে, যেমনটি নিচে দেখানো হয়েছে:

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

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

আরও তথ্যের জন্য, দ্রুত শুরু করার নির্দেশিকা এবং Merchant API রেফারেন্স দেখুন।

Content API for Shopping-এর তুলনায় উন্নতি

Merchant API আপনাকে Merchant Center-এ ওয়ার্কফ্লো অটোমেট ও স্ট্রিমলাইন করতে দেয় এবং Shopping-এর জন্য Content API-এর তুলনায় উন্নত ক্ষমতা প্রদান করে।

গুরুত্বপূর্ণ ব্যবহারিক ক্ষেত্র:

  • অটোমেটিক অ্যাকাউন্ট ম্যানেজমেন্ট
  • অটোমেটেড প্রোডাক্ট ম্যানেজমেন্ট
  • অটোমেটিক ইনভেনটরি ম্যানেজমেন্ট
  • কাস্টম রিপোর্টিং

উন্নতির মূল ক্ষেত্র:

  • নতুন ফিচার সহ সাব-API, যার মধ্যে রয়েছে:
    • অর্ডার ট্র্যাক করা গ্রাহকদের সঠিক ও নির্ভুল শিপিংয়ের আনুমানিক সময় জানাতে, ব্যবসার অর্ডার ট্র্যাক করার ইতিহাসকে সমর্থন করে। এছাড়াও, এর সিগন্যাল ফ্রি ও দ্রুত শিপিং সহ উন্নত তালিকা তৈরি করার সুবিধা দেয়।
    • সমস্যার সমাধান Merchant Center UI-তে যেভাবে উপলভ্য, সেই একই ভাবে ডায়াগনস্টিক কন্টেন্ট ও সহায়তা অ্যাকশনে অ্যাক্সেস দেয়।
    • অ্যাকাউন্ট সাব-API-তে নতুন রিসোর্স।
    • OmnichannelSettings ওমনিচ্যানেল পরিবেশনের জন্য অ্যাকাউন্ট কনফিগারেশন ম্যানেজ করে, যেমন ফ্রি স্থানীয় তালিকা (FLL) এবং স্থানীয় ইনভেনটরি বিজ্ঞাপন (LIA)।
    • LfpProviders ইনভেনটরি ডেটার জন্য স্থানীয় ফিড পার্টনারশিপ (LFP) পার্টনারদের সাথে কানেক্ট করে।
    • GbpAccounts স্থানীয় স্টোরের ডেটার জন্য Google Business Profile অ্যাকাউন্টের সাথে কানেক্ট করে।
    • OnlineReturnPolicy আপনার অনলাইন নীতি তৈরি, মুছে দেওয়া ও আপডেট করার সুবিধা দেয়।
  • ইনভেনটরি, প্রোডাক্ট ডেটা ও অন্যান্য API-এর জন্য নতুন পদ্ধতি, এর মধ্যে এগুলি অন্তর্ভুক্ত:
    • Products sub-API-তে একটি নতুন পদ্ধতি।
    • ProductsUpdate আপনাকে ProductInput-এর জন্য প্রয়োজনীয় সব ফিল্ড না দিয়েই আলাদা আলাদা প্রোডাক্ট আপডেট করতে দেয়।
  • শুধু প্রাথমিক ডেটা সোর্স নয়, একাধিক ডেটা সোর্স তৈরি করার ক্ষমতা, যেমন:
  • প্রোডাক্ট রিভিউ ও মার্চেন্ট রিভিউ আপলোড করার সুবিধা চালু করা হয়েছে
  • Merchant API-এর সাহায্যে, আপনি অ্যাকাউন্ট ডেটায় পরিবর্তনের জন্য বিজ্ঞপ্তি চালু করতে পারবেন

কী পরিবর্তন করা হয়েছে

  • এপিআই কল পিছু সর্বাধিক pageSize সারি ২৫০ থেকে ১০০০ পর্যন্ত বাড়ানো হয়েছে।
  • প্রোডাক্ট যোগ করা, প্রচার, প্রোডাক্ট রিভিউ এবং DataSources তৈরি হওয়ার পরে মার্চেন্ট রিভিউয়ের ক্ষেত্রে যে বিলম্ব হতো তা সমাধান করা হয়েছে।
  • clickPotentialRank-এর জন্য আপডেট করা সংজ্ঞা প্রকাশ করা হয়েছে productView টেবিলে, যা রিপোর্টিং সাব-API-এর অধীনে আছে:
    • clickPotential-এর উপর ভিত্তি করে প্রোডাক্টের র‍্যাংকিং ১ থেকে ১০০০-এর মধ্যে মান অনুযায়ী স্বাভাবিক করা হয়।
  • 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 ফিচারের সাথে কাজ করার জন্য ডিজাইন করা হয়েছে।

যেমন, আপনি নিজের আগে থেকে থাকা Content API for Shopping v2.1 products ইমপ্লিমেন্টেশনের পাশাপাশি Merchant Inventories API ব্যবহার করতে পারবেন। আপনি নতুন লোকাল প্রোডাক্ট আপলোড (যা আপনি কোনও লোকাল স্টোরে বিক্রি করেন) করার জন্য Shopping-এর জন্য Content API ব্যবহার করতে পারেন, তারপর সেই প্রোডাক্টের জন্য ইন-স্টোর তথ্য ম্যানেজ করতে Merchant Inventories API LocalInventory রিসোর্স ব্যবহার করতে পারেন।

Content API-এর তুলনায় স্ট্রাকচারাল উন্নতি

Merchant API নিম্নলিখিত বিষয়গুলিতে Content API-এর থেকে উন্নত:

এইসব পরিবর্তন আরও বিস্তারিতভাবে বিবেচনা করুন।

ভার্সনিং ও সাব-API

Merchant API-তে ভার্সনিং এবং সাব-API-এর ধারণা দেওয়া হয়েছে। এর মডুলার ডিজাইন ব্যবহার করা সহজ করে তোলে, কারণ এটি আপনাকে প্রয়োজনীয় সাব-API-তে ফোকাস করতে এবং নতুন ভার্সনে আরও সহজে ভবিষ্যতের মাইগ্রেশন করতে দেয়। আপনার অনুরোধ URL-এর সাথে ভার্সনিং প্রয়োগ করা হবে। এই স্ট্র্যাটেজিটি Google Ads API অভিজ্ঞতার মতো।

আরও শক্তিশালী অনুরোধ

Merchant API URL অনুরোধের জন্য Merchant API কল করতে আরও প্যারামিটার প্রয়োজন। এর মধ্যে রিসোর্স, ভার্সন, নাম (আইডেন্টিফায়ার) ও পদ্ধতি (নন-স্ট্যান্ডার্ড পদ্ধতি) অন্তর্ভুক্ত। এই বিষয়ে আরও জানতে, অ্যাকাউন্ট ও প্রোডাক্ট আইডেন্টিফায়ার এবং উদাহরণ দেখুন।

শনাক্তকারীর জন্য AIP নীতি

Content API for Shopping রিসোর্স শনাক্ত করতে আইডি ব্যবহার করলেও (যেমন, merchantId, productId), Merchant API, AIP-এর সাথে অ্যালাইন করতে name আইডেন্টিফায়ার ব্যবহার করে (দেখুন API উন্নত করার নীতি)।

{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/v1/{PARENT}/regionalInventories:insert

Content API for Shopping products.get কীভাবে অনুরোধ পরিবর্তন করে তা টেবিল থেকে জানতে পারবেন:

Content API for Shopping Merchant API
GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} GET https://merchantapi.googleapis.com/products/v1/{name}

আরও বিবরণের জন্য, পরিচয়কারী পরিবর্তন পর্যালোচনা করুন।

আরেকটি উদাহরণ হিসেবে, Merchant API ব্যবহার করে en~US~1234 শনাক্তকারী সহ কোনও প্রোডাক্ট Merchant Center আইডি 4321 থেকে রিট্রিভ করলে তা নিম্নলিখিতভাবে দেখা যাবে:

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

যেখানে {name}, accounts/4321/products/en~US~1234-এর সমান। এই নতুন নামের ফিল্ড Merchant API-তে সব রিড ও রাইট কলের জন্য রিসোর্স শনাক্তকারী হিসেবে রিটার্ন করা হয়।

না।

Content API for Shopping-এ, কোলন (:) প্রোডাক্টের নামে একটি ডিলিমিটার বোঝায় অন্যদিকে Merchant API-তে, টিল্ড (~) এই ফাংশনটি পারফর্ম করে। মার্চেন্ট API আইডেন্টিফায়ারে channel অংশটি নেই।

যেমন, Content API for Shopping-এ প্রোডাক্ট আইডি:

channel:contentLanguage:feedLabel:offerId।

-এ Merchant API-তে নিম্নলিখিত হয়ে যায়:

contentLanguage~feedLabel~offerId।

চাইল্ড রিসোর্সের জন্য পেরেন্ট ফিল্ড

Merchant API-তে, সব চাইল্ড রিসোর্সে parent ফিল্ড থাকে। সম্পূর্ণ পেরেন্ট রিসোর্স পাস করার পরিবর্তে, আপনি parent ফিল্ড ব্যবহার করে, যে রিসোর্সে সন্তানকে যোগ করতে চান তার {name} উল্লেখ করতে পারেন। এছাড়াও, আপনি list-এর সাথে parent ফিল্ড ব্যবহার করতে পারেন

যেমন, কোনও প্রোডাক্টের জন্য স্থানীয় ইনভেনটরি তালিকাভুক্ত করতে, list পদ্ধতির জন্য parent ফিল্ডে প্রোডাক্টের name উল্লেখ করুন। এই ক্ষেত্রে, প্রদত্ত product হল ফেরত আসা parent-এর LocalInventory রিসোর্স।

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

প্রোডাক্ট en~US~1234 ও অ্যাকাউন্ট 4321-এর জন্য সব লোকাল ইনভেনটরি রিট্রিভ করতে অনুরোধটি এইরকম হবে

    GET
    https://merchantapi.googleapis.com/inventories/v1/accounts/4321/products/en~US~1234/localInventories

অভিভাবক হলেন accounts/{account}/products/{product}. মনে রাখবেন, এই ক্ষেত্রে localInventories রিসোর্সে নাম শনাক্তকারীতে দুটি পেরেন্ট অন্তর্ভুক্ত আছে (accounts/ এবং products/), কারণ অ্যাকাউন্টটি হল প্রোডাক্ট রিসোর্সের পেরেন্ট।

সাধারণ enum

সাধারণ এনুম ব্যবহার করলে আরও বেশি সামঞ্জস্য বজায় থাকে।

আপনার রিসোর্স কোন কোন সারফেসে দেখানো হবে তা Destination.DestinationEnum ফিল্ডে উল্লেখ করা হয়। DestinationEnum গন্তব্য টার্গেটিংয়ের জন্য উপলভ্য সব ভ্যালুর তালিকা তৈরি করে এবং এটি সাব-API জুড়ে ইউনিফায়েড, যেমন প্রোমোশন অ্যাট্রিবিউট।

আপনার অ্যাকাউন্ট ও প্রোডাক্ট সংক্রান্ত সমস্যা যে প্রসঙ্গে প্রযোজ্য, তা ReportingContext.ReportingContextEnum ফিল্ডে দেখানো হয়। রিপোর্টিং পদ্ধতি জুড়ে এই ফিল্ড ব্যবহার করা হয় (যেমন, IssueSeverityPerReportingContext-এর জন্য)।

পুরনো ভার্সনের সাথে মানানসই

আপনি Merchant API ব্যবহার করা শুরু করলে, আপনার আগে থেকে থাকা Shopping-এর জন্য কন্টেন্ট API ইন্টিগ্রেশন কোনও বাধা ছাড়াই কাজ করা চালিয়ে যাবে। আরও তথ্যের জন্য, কম্প্যাটিবিলিটি দেখুন।

আপনার সাব-API Merchant API-তে মাইগ্রেট করার পরে, আমরা সাজেস্ট করি যে মাইগ্রেট করা সাব-API-এর জন্য শুধুমাত্র Merchant API ব্যবহার করুন।

রিমোট প্রসিডিওর কল (gRPC) উপলভ্যতা

Merchant API-এর সাথে ইন্টিগ্রেট করার জন্য নতুন সাজেস্ট করা উপায় হল gRPC।

এর সুবিধাগুলির মধ্যে নিম্নলিখিত বিষয়গুলি অন্তর্ভুক্ত:

কাস্টম ব্যাচিং, বিল্ট-ইন ব্যাচিং হয়ে যায়

আপনি অ্যাসিঙ্ক্রোনাস কল ব্যবহার করলে ব্যাচিং আরও দক্ষতার সাথে পারফর্ম করে। Merchant API-তে ব্যাচিং পাওয়ার জন্য প্যারালাল কল ব্যবহার করা এবং কীভাবে একসাথে করা অনুরোধের জন্য কোড রিফ্যাক্টর করতে হয় সেই সম্পর্কে আরও জানুন।

আপনার মাইগ্রেশন প্রসেস দ্রুততর করতে, আমরা ক্লায়েন্ট লাইব্রেরি ব্যবহার করার সাজেশন দিই।

Content API for Shopping-এ ফিচার করা customBatch পদ্ধতি Merchant API-তে কাজ করে না। পরিবর্তে, একসাথে একাধিক অনুরোধ পাঠান অথবা আপনার কল অ্যাসিঙ্ক্রোনাস হিসেবে এক্সিকিউট করুন।

দেখুন

নিচের 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.api.gax.grpc.ChannelPoolSettings;
import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.common.util.concurrent.MoreExecutors;
import com.google.shopping.merchant.products.v1.Availability;
import com.google.shopping.merchant.products.v1.Condition;
import com.google.shopping.merchant.products.v1.InsertProductInputRequest;
import com.google.shopping.merchant.products.v1.ProductAttributes;
import com.google.shopping.merchant.products.v1.ProductInput;
import com.google.shopping.merchant.products.v1.ProductInputsServiceClient;
import com.google.shopping.merchant.products.v1.ProductInputsServiceSettings;
import com.google.shopping.merchant.products.v1.Shipping;
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();

    ProductAttributes attributes =
        ProductAttributes.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(Availability.IN_STOCK)
            .setCondition(Condition.NEW)
            .setGoogleProductCategory("Media > Books")
            .addGtins("9780007350896")
            .addShipping(shipping)
            .addShipping(shipping2)
            .build();

    return ProductInput.newBuilder()
        .setContentLanguage("en")
        .setFeedLabel("CH")
        .setOfferId(generateRandomString())
        .setProductAttributes(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 a channel provider. This provider manages a pool of gRPC channels
    // to enhance throughput for bulk operations. Each individual channel in the pool
    // can handle up to approximately 100 concurrent requests.
    //
    // Channel: A single connection pathway to the service.
    // Pool: A collection of multiple channels managed by this provider.
    //   Requests are distributed across the channels in the pool.
    //
    // We recommend estimating the number of concurrent requests you'll make, divide by 50 (50%
    // utilization of channel capacity), and set the pool size to that number.
    InstantiatingGrpcChannelProvider channelProvider =
        InstantiatingGrpcChannelProvider.newBuilder()
            .setChannelPoolSettings(ChannelPoolSettings.staticallySized(30))
            .build();

    // Creates service settings using the credentials retrieved above.
    ProductInputsServiceSettings productInputsServiceSettings =
        ProductInputsServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .setTransportChannelProvider(channelProvider)
            .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-তে দেখা যাবে। (কিছু ব্যতিক্রম থাকবে, যেমন ২০২৫ সালের বার্ষিক ফিড স্পেক।)

Merchant API-এর এক্সক্লুসিভ ফিচারের মধ্যে এগুলি পড়ে

দাম

মার্চেন্ট কমন প্যাকেজে Price-এর জন্য কী কী পরিবর্তন করা হয়েছে তা এখানে দেওয়া হল:

Content API for Shopping Merchant API
টাকার পরিমাণ ফিল্ড value:string amountMicros:int64
কারেন্সি ফিল্ড currency:string currencyCode:string

Price-এর পরিমাণ এখন মাইক্রোতে রেকর্ড করা হয়, যেখানে ১ মিলিয়ন মাইক্রো আপনার মুদ্রার স্ট্যান্ডার্ড ইউনিটের সমান।

Content API for Shopping-এ, Price হল একটি দশমিক সংখ্যা যা একটি স্ট্রিংয়ের আকারে থাকে।

অ্যামাউন্ট ফিল্ডের নাম value থেকে amountMicros-এ পরিবর্তন করা হয়েছে

মুদ্রা ফিল্ডের নাম পরিবর্তন করে currency থেকে currencyCode করা হয়েছে। ফর্ম্যাট ISO 4217-এর মতোই আছে।

লেটেস্ট আপডেট ও ঘোষণা

আরও বিস্তারিত আপডেটের জন্য, প্রতিটি সাব-এপিআইয়ের জন্য নির্দিষ্ট রিলিজ নোট দেখুন। আরও নিয়মিতভাবে Merchant API-এর এগ্রিগেট করা আপডেট পেতে, আমাদের লেটেস্ট আপডেট দেখুন।

আরও নির্দিষ্ট বিবরণ এবং Merchant API সম্পর্কে আরও জানতে, আমাদের ডেভেলপার সাইটের ওভারভিউ এবং সামগ্রিক মাইগ্রেশন নির্দেশিকা দেখুন।

Merchant API ও এর সাব-API সম্পর্কে বিস্তারিত জানতে Merchant API ডিজাইন দেখুন।