Bạn có thể sử dụng hướng dẫn này để tích hợp Merchant API với cách triển khai Content API for Shopping hiện tại.
Bắt đầu
Hãy xem thiết kế Merchant API để biết thông tin chi tiết về Merchant API và các API phụ của API này.
Để bắt đầu sử dụng Merchant API, hãy thay đổi URL yêu cầu của bạn thành định dạng sau:
https://merchantapi.googleapis.com/{sub-API}/{version}/{resource name}:{method}…
Hãy xem hướng dẫn bắt đầu nhanh và tài liệu tham khảo về Merchant API để biết thêm thông tin.
Hỗ trợ gRPC
Merchant API hỗ trợ gRPC và REST. Bạn có thể sử dụng gRPC cho Merchant API và REST cho Content API for Shopping cùng một lúc.
Thư viện ứng dụng của Merchant API yêu cầu gRPC.
Hãy xem phần sử dụng gRPC để biết thêm thông tin.
Khả năng tương thích
Hướng dẫn này mô tả những thay đổi chung áp dụng cho toàn bộ Merchant API. Hãy xem các hướng dẫn sau đây để biết những thay đổi đối với các tính năng cụ thể:
- Di chuyển tài khoản quản lý
- Di chuyển chế độ cài đặt thông tin vận chuyển
- Di chuyển hoạt động quản lý sản phẩm
- Di chuyển tính năng quản lý nguồn dữ liệu
- Di chuyển tính năng quản lý khoảng không quảng cáo
- Di chuyển hoạt động quản lý chương trình khuyến mãi
- Di chuyển tính năng quản lý báo cáo
- Di chuyển hoạt động quản lý nguồn chuyển đổi
- Di chuyển hoạt động quản lý đối tác nguồn cấp dữ liệu địa phương
Merchant API được thiết kế để hoạt động cùng với các tính năng hiện có của Content API for Shopping phiên bản 2.1.
Ví dụ: bạn có thể sử dụng API kho hàng của người bán cùng với cách triển khai products
hiện có của Content API for Shopping phiên bản 2.1. Bạn có thể sử dụng Content API for Shopping để tải một sản phẩm mới tại cửa hàng địa phương lên (mà bạn bán tại một cửa hàng địa phương), sau đó sử dụng tài nguyên Merchant Inventories API LocalInventory
để quản lý thông tin tại cửa hàng cho sản phẩm đó.
Yêu cầu theo lô (Batch)
Merchant API không hỗ trợ phương thức customBatch
có trong Content API for Shopping. Thay vào đó, hãy xem phần Gửi nhiều yêu cầu cùng lúc hoặc thực thi các lệnh gọi không đồng bộ.
Mẫu sau đây minh hoạ cách chèn dữ liệu đầu vào về sản phẩm.
Java
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);
}
}
Nếu bạn sử dụng customBatch
trong Content API và cần tính năng này cho Merchant API, hãy cho chúng tôi biết lý do trong phản hồi.
Giá trị nhận dạng
Để phù hợp với nguyên tắc cải thiện API của Google, chúng tôi đã thực hiện một số thay đổi đối với giá trị nhận dạng cho các tài nguyên Merchant API.
name thay thế cho Id
Tất cả tài nguyên Merchant API đều sử dụng trường name
làm giá trị nhận dạng duy nhất.
Dưới đây là ví dụ về cách sử dụng trường name
trong lệnh gọi:
POST https://merchantapi.googleapis.com/inventories/v1beta/{parent}/regionalInventories:insert
Trường name
mới này được trả về dưới dạng giá trị nhận dạng tài nguyên cho tất cả lệnh gọi đọc và ghi trong Merchant API.
Ví dụ: triển khai phương thức getName()
để truy xuất name
từ một tài nguyên và lưu trữ kết quả dưới dạng biến thay vì tự tạo name
từ mã nhận dạng người bán và tài nguyên.
trường mẹ cho tài nguyên con
Trong Merchant API, tất cả tài nguyên con đều có trường parent
. Bạn có thể sử dụng trường parent
để chỉ định name
của tài nguyên cần chèn thành phần con vào, thay vì truyền toàn bộ tài nguyên mẹ. Bạn cũng có thể sử dụng trường parent
với các phương thức list
để liệt kê các tài nguyên con của parent
đó.
Ví dụ: để liệt kê kho hàng tại địa phương cho một sản phẩm cụ thể, hãy chỉ định name
của sản phẩm trong trường parent
cho phương thức list
. Trong trường hợp này, product
đã cho là parent
của các tài nguyên LocalInventory
được trả về.
Loại
Dưới đây là một số loại phổ biến được chia sẻ trên các API phụ của Merchant API.
Giá
Sau đây là những điểm thay đổi đối với Price
trong gói Merchant Common:
Content API | Merchant API | |
---|---|---|
Trường số tiền | value:string |
amountMicros:int64 |
Trường đơn vị tiền tệ | currency:string
|
currencyCode:string |
Số tiền Price
hiện được ghi lại bằng micro, trong đó 1 triệu micro tương đương với đơn vị tiêu chuẩn của đơn vị tiền tệ.
Trong Content API for Shopping, Price
là một số thập phân ở dạng chuỗi.
Tên trường số tiền đã thay đổi từ value
thành amountMicros
Tên trường đơn vị tiền tệ đã thay đổi từ currency
thành currencyCode
. Định dạng vẫn là ISO 4217.