কেনাকাটার জন্য সামগ্রী API থেকে মার্চেন্ট API-এ স্থানান্তর করুন৷

এই নির্দেশিকাটি শপিং-এর জন্য কন্টেন্ট এপিআই থেকে ব্যবসায়িক ডেটা ব্যবস্থাপনার জন্য মার্চেন্ট এপিআই-তে স্থানান্তরের প্রক্রিয়া ব্যাখ্যা করে।

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

শুরু করুন

মার্চেন্ট এপিআই ব্যবহার শুরু করতে, আপনার রিকোয়েস্ট ইউআরএলগুলো নিম্নলিখিত ফরম্যাটে পরিবর্তন করুন:

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

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

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

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

আরও তথ্যের জন্য, কুইকস্টার্ট গাইড এবং মার্চেন্ট এপিআই রেফারেন্স দেখুন।

শপিং এর জন্য কন্টেন্ট এপিআই এর চেয়ে উন্নত সংস্করণ

মার্চেন্ট এপিআই আপনাকে মার্চেন্ট সেন্টারের ওয়ার্কফ্লো স্বয়ংক্রিয় ও সুবিন্যস্ত করতে সাহায্য করে এবং শপিং-এর জন্য কন্টেন্ট এপিআই-এর চেয়ে উন্নততর সক্ষমতা প্রদান করে।

মূল ব্যবহারের ক্ষেত্রসমূহ:

  • স্বয়ংক্রিয় অ্যাকাউন্ট ব্যবস্থাপনা
  • স্বয়ংক্রিয় পণ্য ব্যবস্থাপনা
  • স্বয়ংক্রিয় ইনভেন্টরি ব্যবস্থাপনা
  • কাস্টম রিপোর্টিং

উন্নয়নের প্রধান ক্ষেত্রসমূহ:

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

  • প্রতিটি এপিআই কলের জন্য সর্বোচ্চ pageSize ২৫০ থেকে বাড়িয়ে ১০০০ সারি করা হয়েছে।
  • DataSources তৈরির পর প্রোডাক্ট অন্তর্ভুক্তি, প্রোমোশন, প্রোডাক্ট রিভিউ এবং মার্চেন্ট রিভিউ-এর ক্ষেত্রে যে বিলম্ব হচ্ছিল, তা সমাধান করা হয়েছে।
  • রিপোর্টিং সাব-এপিআই- এর অধীনে productView টেবিলে clickPotentialRank এর একটি হালনাগাদকৃত সংজ্ঞা চালু করা হয়েছে:
    • clickPotential উপর ভিত্তি করে পণ্যগুলির র‍্যাঙ্কিংকে ১ থেকে ১০০০-এর মধ্যবর্তী মানে স্বাভাবিক করা হয়।
  • AccountRelationship রিসোর্সের AccountIdAlias ​​জটিল অ্যাকাউন্ট কাঠামোকে আরও ভালোভাবে পরিচালনা করা সম্ভব করে তোলে। উদাহরণস্বরূপ, মার্কেটপ্লেসগুলো মার্চেন্টের অভ্যন্তরীণ আইডি, যেমন অ্যাকাউন্ট আইডির পরিবর্তে, একটি ব্যবহারকারী-সংজ্ঞায়িত অ্যালিয়াস ব্যবহার করে।

gRPC সমর্থন

মার্চেন্ট এপিআই gRPC এবং REST সমর্থন করে। আপনি একই সাথে মার্চেন্ট এপিআই-এর জন্য gRPC এবং শপিং-এর কন্টেন্ট এপিআই-এর জন্য REST ব্যবহার করতে পারেন।

মার্চেন্ট এপিআই ক্লায়েন্ট লাইব্রেরিগুলোর জন্য gRPC প্রয়োজন।

আরও তথ্যের জন্য, gRPC ওভারভিউ দেখুন।

সামঞ্জস্যতা

এই নির্দেশিকায় সম্পূর্ণ মার্চেন্ট এপিআই-এর ক্ষেত্রে প্রযোজ্য সাধারণ পরিবর্তনগুলো বর্ণনা করা হয়েছে।

শপিং ফিচারগুলোর জন্য মার্চেন্ট এপিআই-টি বিদ্যমান কন্টেন্ট এপিআই-এর পাশাপাশি কাজ করার জন্য ডিজাইন করা হয়েছে।

উদাহরণস্বরূপ, আপনি আপনার বিদ্যমান Content API for Shopping v2.1 products ইমপ্লিমেন্টেশনের পাশাপাশি মার্চেন্ট ইনভেন্টরিজ এপিআই (Merchant Inventories API) ব্যবহার করতে পারেন। আপনি Content API for Shopping ব্যবহার করে একটি নতুন স্থানীয় পণ্য (যা আপনি একটি স্থানীয় দোকানে বিক্রি করেন) আপলোড করতে পারেন, এবং তারপর সেই পণ্যের ইন-স্টোর তথ্য পরিচালনা করার জন্য মার্চেন্ট ইনভেন্টরিজ এপিআই-এর LocalInventory রিসোর্সটি ব্যবহার করতে পারেন।

কন্টেন্ট এপিআই-এর তুলনায় উন্নতি

নিম্নলিখিত ক্ষেত্রগুলিতে মার্চেন্ট এপিআই, কন্টেন্ট এপিআই-এর চেয়ে উন্নত:

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

ভার্সনিং এবং সাব-এপিআই

মার্চেন্ট এপিআই ভার্সনিং এবং সাব-এপিআই- এর ধারণা নিয়ে এসেছে। এর মডিউলার ডিজাইন ব্যবহারের সুবিধা বাড়ায়, কারণ এটি আপনাকে আপনার প্রয়োজনীয় সাব-এপিআইগুলোর উপর মনোযোগ দিতে এবং ভবিষ্যতে নতুন ভার্সনে সহজে মাইগ্রেশন করতে সক্ষম করে। আপনার রিকোয়েস্ট ইউআরএলগুলোতে ভার্সনিং প্রয়োগ করা হবে। এই কৌশলটি গুগল অ্যাডস এপিআই-এর অভিজ্ঞতার অনুরূপ।

আরও জোরালো অনুরোধ

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

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

শপিং-এর জন্য কন্টেন্ট এপিআই রিসোর্স শনাক্ত করতে আইডি ব্যবহার করলেও (যেমন, merchantId , productId ), মার্চেন্ট এপিআই এআইপি-এর সাথে সামঞ্জস্য রাখতে একটি name শনাক্তকারী ব্যবহার করে ( এপিআই উন্নয়ন নীতিসমূহ দেখুন)।

{name} আইডেন্টিফায়ারের মধ্যে রিসোর্স আইডেন্টিফায়ার এবং এর প্যারেন্ট (অথবা একাধিক প্যারেন্ট) অন্তর্ভুক্ত থাকে, যেমন {name} সমান accounts/{account}/products/{product}

সমস্ত রিড এবং রাইট কল রিসোর্স আইডেন্টিফায়ার হিসেবে name ফিল্ডটি ফেরত দেয়।

{name} এর মধ্যে accounts/ এবং products/ নামক কালেকশন আইডেন্টিফায়ারগুলোও অন্তর্ভুক্ত রয়েছে।

মার্চেন্ট এপিআই মার্চেন্ট সেন্টার আইডি বোঝাতে {account} এবং প্রোডাক্ট আইডেন্টিফায়ার বোঝাতে {product} ব্যবহার করে।

উদাহরণস্বরূপ, কোনো রিসোর্স থেকে name পুনরুদ্ধার করার জন্য একটি getName() মেথড ইমপ্লিমেন্ট করুন এবং মার্চেন্ট ও রিসোর্স আইডি থেকে নিজে থেকে name তৈরি করার পরিবর্তে আউটপুটটি একটি ভেরিয়েবল হিসেবে সংরক্ষণ করুন।

আপনার কলে name ফিল্ডটি কীভাবে ব্যবহার করবেন তার একটি উদাহরণ নিচে দেওয়া হলো:

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

সারণিটি দেখায় কিভাবে শপিং products.get কন্টেন্ট এপিআই-এর get অনুরোধ পরিবর্তিত হয়:

কেনাকাটার জন্য কন্টেন্ট এপিআই মার্চেন্ট এপিআই
GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} GET https://merchantapi.googleapis.com/products/v1/{name}

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

আরেকটি উদাহরণ হিসেবে, মার্চেন্ট এপিআই ব্যবহার করে মার্চেন্ট সেন্টার আইডি 4321 থেকে en~US~1234 আইডেন্টিফায়ারযুক্ত একটি প্রোডাক্ট পুনরুদ্ধার করার প্রক্রিয়াটি নিম্নরূপ হবে:

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

যেখানে {name} হলো accounts/4321/products/en~US~1234 সমান। এই নতুন নেম ফিল্ডটি মার্চেন্ট এপিআই-এর সমস্ত রিড এবং রাইট কলের জন্য রিসোর্স আইডেন্টিফায়ার হিসেবে রিটার্ন করা হয়।

শপিং-এর কন্টেন্ট এপিআই-তে পণ্যের নামে কোলন (:) একটি বিভাজক হিসেবে ব্যবহৃত হয়, অপরদিকে মার্চেন্ট এপিআই-তে টিল্ড (~) এই কাজটি করে থাকে। মার্চেন্ট এপিআই আইডেন্টিফায়ারে channel অংশটি থাকে না।

উদাহরণস্বরূপ, শপিং-এর জন্য কন্টেন্ট এপিআই-তে প্রোডাক্ট আইডি:

channel:contentLanguage:feedLabel:offerId .

মার্চেন্ট এপিআই-তে নিম্নলিখিতটি ঘটে:

contentLanguage~feedLabel~offerId .

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

মার্চেন্ট এপিআই-তে, সমস্ত চাইল্ড রিসোর্সের একটি parent ফিল্ড থাকে। সম্পূর্ণ প্যারেন্ট রিসোর্সটি পাস করার পরিবর্তে, আপনি যে রিসোর্সের মধ্যে চাইল্ডটি যুক্ত করতে চান, তার {name} নির্দিষ্ট করার জন্য ' parent ফিল্ডটি ব্যবহার করতে পারেন। এছাড়াও আপনি ' parent ফিল্ডটি list সাথেও ব্যবহার করতে পারেন।

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

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

en~US~1234' পণ্য এবং 4321 অ্যাকাউন্টের জন্য সমস্ত স্থানীয় ইনভেন্টরি পুনরুদ্ধার করতে অনুরোধটি দেখতে এইরকম হবে

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

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

সাধারণ এনাম

সাধারণ এনামের ব্যবহার অধিকতর সামঞ্জস্য প্রদান করে।

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

ReportingContext.ReportingContextEnum ফিল্ডটি সেই প্রেক্ষাপটকে নির্দেশ করে, যার অধীনে আপনার অ্যাকাউন্ট এবং পণ্যের সমস্যাগুলো প্রযোজ্য। এই ফিল্ডটি বিভিন্ন রিপোর্টিং পদ্ধতিতে ব্যবহৃত হয় (উদাহরণস্বরূপ, IssueSeverityPerReportingContext জন্য)।

পূর্ববর্তী সংস্করণের সাথে সামঞ্জস্যতা

আপনি মার্চেন্ট এপিআই ব্যবহার শুরু করলেও, আপনার বিদ্যমান কন্টেন্ট এপিআই ফর শপিং ইন্টিগ্রেশন কোনো বাধা ছাড়াই কাজ করতে থাকবে। আরও তথ্যের জন্য, সামঞ্জস্যতা (Compatibility) দেখুন।

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

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

মার্চেন্ট এপিআই-এর সাথে ইন্টিগ্রেট করার জন্য gRPC হলো নতুন প্রস্তাবিত পদ্ধতি।

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

কাস্টম ব্যাচিং বিল্ট-ইন ব্যাচিং-এ পরিণত হয়

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

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

মার্চেন্ট এপিআই, শপিং-এর জন্য কন্টেন্ট এপিআই-তে থাকা customBatch মেথডটি সমর্থন করে না। এর পরিবর্তে, একসাথে একাধিক অনুরোধ পাঠান অথবা আপনার কলগুলো অ্যাসিঙ্ক্রোনাসভাবে সম্পাদন করুন দেখুন।

নিম্নলিখিত জাভা নমুনাটি দেখায় কিভাবে একটি পণ্যের ইনপুট প্রবেশ করাতে হয়:

   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.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().setPoolSize(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);
  }
}

আপনি যদি কন্টেন্ট এপিআই-তে customBatch ব্যবহার করেন এবং মার্চেন্ট এপিআই-এর জন্য এই ফিচারটির প্রয়োজন হয়, তবে আপনার ফিডব্যাকে এর কারণ আমাদের জানান।

বিশেষ বৈশিষ্ট্য

ভবিষ্যতের ফিচারগুলো শুধুমাত্র মার্চেন্ট এপিআই-তে দেখা যাবে। (এর কিছু ব্যতিক্রম থাকবে, যেমন ২০২৫ সালের বার্ষিক ফিড স্পেক ।)

মার্চেন্ট এপিআই-এর বিশেষ বৈশিষ্ট্যগুলির মধ্যে রয়েছে

  • রিভিউ এপিআই। আপনার পণ্য এবং দোকানের রেটিং প্রয়োগ ও পরিচালনা করতে রিভিউ ব্যবহার করুন। আরও তথ্যের জন্য বিক্রেতার রিভিউ এবং পণ্যের রিভিউ দেখুন।
  • বিজ্ঞপ্তি : অ্যাকাউন্টের পণ্যের তথ্যে কোনো পরিবর্তন হলে পুশ নোটিফিকেশন পেতে সাইন আপ করুন।

মূল্য

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

কেনাকাটার জন্য কন্টেন্ট এপিআই মার্চেন্ট এপিআই
পরিমাণ ক্ষেত্র value:string amountMicros:int64
মুদ্রা ক্ষেত্র currency:string currencyCode:string

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

শপিং-এর কন্টেন্ট এপিআই-তে, Price একটি স্ট্রিং আকারে দশমিক সংখ্যা ছিল।

amount ফিল্ডের নাম value থেকে amountMicros এ পরিবর্তন করা হয়েছে।

কারেন্সি ফিল্ডের নাম currency থেকে পরিবর্তন করে currencyCode হয়েছে। ফরম্যাটটি ISO 4217 অপরিবর্তিত রয়েছে।

সর্বশেষ আপডেট এবং ঘোষণা

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

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

মার্চেন্ট এপিআই এবং এর সাব-এপিআইগুলো সম্পর্কে বিস্তারিত জানতে মার্চেন্ট এপিআই ডিজাইন দেখুন।