میتوانید از این راهنما برای ادغام Merchant API با Content API موجود برای اجرای خرید استفاده کنید.
شروع کنید
برای جزئیات بیشتر درباره Merchant API و APIهای فرعی آن، به طراحی Merchant API مراجعه کنید.
برای شروع استفاده از Merchant API، URL های درخواست خود را به فرمت زیر تغییر دهید:
https://merchantapi.googleapis.com/{sub-API}/{version}/{resource name}:{method}…
برای اطلاعات بیشتر به راهنمای شروع سریع و مرجع Merchant API مراجعه کنید.
پشتیبانی از gRPC
Merchant API از gRPC و REST پشتیبانی می کند. میتوانید همزمان از gRPC برای Merchant API و REST برای Content API برای خرید استفاده کنید.
کتابخانه های مشتری API Merchant به gRPC نیاز دارند.
برای اطلاعات بیشتر به استفاده از gRPC مراجعه کنید.
سازگاری
این راهنما تغییرات کلی را که برای کل Merchant API اعمال می شود، توضیح می دهد. برای تغییرات در ویژگیهای خاص به راهنمای زیر مراجعه کنید:
- مهاجرت مدیریت حساب ها
- انتقال تنظیمات حمل و نقل
- مدیریت محصولات مهاجرت
- مهاجرت مدیریت منابع داده
- مهاجرت مدیریت موجودی
- مدیریت تبلیغات مهاجرت
- مدیریت گزارش دهی مهاجرت
- انتقال مدیریت منابع تبدیل
- مهاجرت مدیریت مشارکت خوراک محلی
Merchant API طوری طراحی شده است که در کنار ویژگی های Content API موجود برای خرید نسخه 2.1 کار کند.
برای مثال، میتوانید از Merchant Inventories API در کنار Content API موجود برای اجرای products
خرید نسخه 2.1 استفاده کنید. ممکن است از Content API برای خرید برای آپلود یک محصول محلی جدید (که در یک فروشگاه محلی می فروشید) استفاده کنید، سپس از منبع Merchant Inventories API LocalInventory
برای مدیریت اطلاعات موجود در فروشگاه برای آن محصول استفاده کنید.
درخواست های دسته ای
Merchant API از روش customBatch
که در Content API برای خرید ارائه شده است پشتیبانی نمی کند. درعوض، به ارسال چندین درخواست به صورت همزمان مراجعه کنید یا تماس های خود را به صورت ناهمزمان اجرا کنید.
نمونه زیر نحوه درج ورودی محصول را نشان می دهد.
جاوا
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 "FILE", 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);
}
}
اگر از customBatch
در Content API استفاده میکنید و به این ویژگی برای Merchant API نیاز دارید، دلیل آن را در بازخورد خود به ما بگویید.
شناسه ها
برای همسویی با اصول بهبود API Google، برخی از تغییرات را در شناسههای منابع Merchant API ایجاد کردهایم.
نام جایگزین شناسه می شود
همه منابع Merchant API از فیلد name
به عنوان شناسه منحصر به فرد خود استفاده می کنند.
در اینجا مثالی از نحوه استفاده از فیلد name
در تماس های خود آورده شده است:
POST https://merchantapi.googleapis.com/inventories/v1beta/{parent}/regionalInventories:insert
این فیلد name
جدید به عنوان شناسه منبع برای همه تماسهای خواندن و نوشتن در Merchant API برگردانده میشود.
به عنوان مثال، یک متد getName()
را برای بازیابی name
از یک منبع پیاده سازی کنید و خروجی را به عنوان متغیر ذخیره کنید به جای اینکه خودتان name
را از تاجر و شناسه منبع بسازید.
فیلدهای والد برای منابع فرزند
در Merchant API، همه منابع فرزند دارای فیلد parent
هستند. می توانید از فیلد parent
برای تعیین name
منبع برای درج فرزند به جای ارسال کل منبع والد استفاده کنید. همچنین میتوانید از فیلد parent
با روشهای list
برای فهرست کردن منابع فرزند آن parent
استفاده کنید.
به عنوان مثال، برای فهرست کردن موجودیهای محلی برای یک محصول معین، name
محصول را در فیلد parent
برای روش list
مشخص کنید. در این حالت، product
داده شده، parent
منابع LocalInventory
بازگشتی است.
انواع
در اینجا برخی از انواع رایج مشترک در میان APIهای فرعی Merchant API آورده شده است.
قیمت
این چیزی است که برای Price
در بسته Merchant Common تغییر کرده است:
Content API | Merchant API | |
---|---|---|
فیلد مقدار | value:string | amountMicros:int64 |
فیلد ارز | currency:string | currencyCode:string |
مقدار Price
اکنون بر حسب میکرو ثبت می شود، که در آن 1 میلیون میکرو معادل واحد استاندارد ارز شما است.
در Content API برای خرید، Price
یک عدد اعشاری به شکل یک رشته بود.
نام فیلد مقدار از value
به amountMicros
تغییر کرده است
نام فیلد ارز از currency
به currencyCode
تغییر کرده است. فرمت به عنوان ISO 4217 باقی می ماند.