Merchant API นำเสนอวิธีจัดการข้อมูลสินค้าที่มีประสิทธิภาพและใช้งานง่ายยิ่งขึ้น การเปลี่ยนแปลงหลักคือการแยกข้อมูลผลิตภัณฑ์ออกเป็น 2 แหล่งข้อมูลที่แตกต่างกัน ได้แก่ ProductInput สำหรับการส่งข้อมูล และ Product สำหรับการดูเวอร์ชันที่ประมวลผลขั้นสุดท้าย ซึ่งรวมถึงสถานะและปัญหาของผลิตภัณฑ์ โครงสร้างใหม่นี้จะช่วยให้คุณคาดการณ์และเข้าใจประสบการณ์การใช้งานได้มากขึ้น
คู่มือนี้จะอธิบายความแตกต่างที่สำคัญเพื่อช่วยคุณย้ายข้อมูลการผสานรวมจาก Content API for Shopping ดูคำแนะนำโดยละเอียดเกี่ยวกับการใช้ฟีเจอร์ใหม่ได้ที่หัวข้อจัดการผลิตภัณฑ์
ความแตกต่างที่สำคัญ
การเปลี่ยนแปลงที่สำคัญที่สุดเกี่ยวกับวิธีจัดการผลิตภัณฑ์ใน Merchant API เมื่อเทียบกับ Content API for Shopping มีดังนี้
แหล่งข้อมูลเฉพาะสำหรับข้อมูลที่ป้อนและข้อมูลที่ประมวลผล: Merchant API แบ่งการจัดการผลิตภัณฑ์ออกเป็น 2 แหล่งข้อมูล คุณใช้ทรัพยากร
ProductInputเพื่อแทรก อัปเดต และลบข้อมูลสินค้าได้ คุณสามารถใช้ทรัพยากรProductแบบอ่านอย่างเดียวเพื่อดูผลิตภัณฑ์สุดท้ายหลังจากที่ Google ประมวลผลข้อมูลที่คุณป้อน ใช้กฎ และรวมข้อมูลจากแหล่งที่มาเสริมการเข้ารหัสชื่อสินค้า: คุณสามารถใช้การเข้ารหัส base64url แบบไม่มีการเติม (RFC 4648 ส่วนที่ 5) สำหรับทั้งช่อง
ProductInput.nameและProduct.nameในกรณีที่ชื่อสินค้ามีอักขระที่ Merchant API ใช้หรืออักขระที่สงวนไว้สำหรับ URL คุณต้องเข้ารหัส ตัวอย่างเช่น คุณต้องเข้ารหัสชื่อผลิตภัณฑ์หากมีอักขระต่อไปนี้% . + / : ~ , ( * ! ) & ? = @ # $สถานะผลิตภัณฑ์ที่ผสานรวม: ระบบจะนำบริการ
productstatusesออก ตอนนี้ปัญหาการตรวจสอบสินค้าและสถานะปลายทางจะรวมอยู่ในทรัพยากรProductโดยตรงภายในช่องproductStatusซึ่งช่วยให้ดึงข้อมูลได้ง่ายขึ้นการอัปเดตผลิตภัณฑ์ที่คาดการณ์ได้: เมธอด
productInputs.patchใหม่จะแก้ไขอินพุตสินค้าที่เฉพาะเจาะจงโดยตรง ซึ่งเป็นการปรับปรุงที่สำคัญเมื่อเทียบกับ Content API for Shopping ที่การอัปเดตอาจถูกเขียนทับโดยไม่คาดคิดจากการอัปโหลดฟีดอื่นๆ ใน Merchant API การอัปเดตจะยังคงอยู่จนกว่าจะมีการอัปเดตหรือลบข้อมูลสินค้าที่เฉพาะเจาะจงนั้นอีกครั้ง ระบบจะใช้การอัปเดตผลิตภัณฑ์กับทรัพยากรProductInputแทนทรัพยากรProductที่ประมวลผลแล้วเลือกแหล่งข้อมูลเพื่อการจัดการข้อมูลที่สะอาดยิ่งขึ้น: ตอนนี้การดำเนินการเขียน
productInputsทั้งหมดต้องใช้พารามิเตอร์การค้นหาdataSourceเพื่อให้ระบุแหล่งข้อมูลที่คุณกำลังแก้ไขได้อย่างชัดเจน ซึ่งจะเป็นประโยชน์อย่างยิ่งหากคุณมีแหล่งข้อมูลหลายแหล่งตัวระบุทรัพยากรใหม่: ตอนนี้ระบบจะระบุผลิตภัณฑ์ด้วยทรัพยากร RESTful
nameแทนช่องidรูปแบบคือaccounts/{account}/products/{product}ไม่มีกลุ่มที่กำหนดเอง: เมธอด
custombatchจะใช้งานไม่ได้อีกต่อไป คุณใช้คำขอที่โหลดแบบอะซิงโครนัสหรือการจัดกลุ่ม HTTP เพื่อส่งคำขอหลายรายการในการเรียก HTTP เดียวได้
หลักเกณฑ์เกี่ยวกับแหล่งข้อมูลระหว่างการย้ายข้อมูล
ก่อนย้ายข้อมูลแหล่งข้อมูล เราขอแนะนำอย่างยิ่งให้คุณเลือกกลยุทธ์แหล่งข้อมูล
โปรดทำตามคำแนะนำต่อไปนี้เพื่อให้การย้ายข้อมูลเป็นไปอย่างราบรื่นและป้องกันปัญหาต่างๆ เช่น การขโมยข้อเสนอ
ทดแทนข้อมูลในฐานข้อมูล: แทนที่จะเรียกใช้
dataSources.listก่อนการดำเนินการกับผลิตภัณฑ์ทุกครั้ง เราขอแนะนำอย่างยิ่งให้คุณทดแทนข้อมูลในฐานข้อมูลในเครื่องแบบครั้งเดียว เพิ่มช่องชื่อdataSourceลงในระเบียนผลิตภัณฑ์แต่ละรายการเพื่อให้คุณระบุตัวระบุที่ถูกต้องในคำขอได้โดยตรงรวมและใช้แหล่งข้อมูลสำหรับป้ายกำกับและภาษาใดก็ได้: Merchant API ช่วยให้คุณสร้างแหล่งข้อมูลได้โดยไม่ต้องระบุป้ายกำกับแหล่งข้อมูลและภาษา จึงช่วยให้แทรกผลิตภัณฑ์ที่มีป้ายกำกับแหล่งข้อมูลและภาษาของแหล่งข้อมูลใดก็ได้ พิจารณาใช้แหล่งข้อมูลเดียวสำหรับป้ายกำกับและภาษาใดก็ได้
ปกป้องผลิตภัณฑ์: หากใช้กฎแหล่งข้อมูล ให้เรียกใช้
products.getเพื่อค้นหาdataSourceที่เชื่อมโยงกับผลิตภัณฑ์อย่างถูกต้องก่อนอัปเดตหรือลบ ซึ่งจะช่วยให้มั่นใจได้ว่าคุณกำลังแก้ไขแหล่งที่มาที่ต้องการและป้องกันการขโมยข้อเสนอโดยไม่ตั้งใจ
คำขอ
ส่วนนี้จะเปรียบเทียบรูปแบบคำขอสำหรับ Content API for Shopping และ Merchant API
| รายละเอียดสำหรับคำขอ | Content API for Shopping | Merchant API |
|---|---|---|
| ซื้อผลิตภัณฑ์ | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} |
GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products/{product} |
| แสดงรายการสินค้า | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products |
GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products |
| แทรกผลิตภัณฑ์ | POST https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products |
POST https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs:insert |
| อัปเดตผลิตภัณฑ์ | PATCH https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} |
PATCH https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs/{productinput} |
| ลบผลิตภัณฑ์ | DELETE https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} |
DELETE https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs/{productinput} |
| ดูสถานะของผลิตภัณฑ์ | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/productstatuses/{productId} |
GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products/{product} |
| แสดงสถานะผลิตภัณฑ์ | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/productstatuses |
GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products |
| จัดกลุ่มคำขอหลายรายการ | POST https://shoppingcontent.googleapis.com/content/v2.1/products/custombatch |
ใช้คำขอที่โหลดแบบอะซิงโครนัสหรือการจัดกลุ่ม HTTP |
รหัสระบุ
รูปแบบของตัวระบุสินค้าใน Merchant API ได้เปลี่ยนเป็นชื่อทรัพยากร REST มาตรฐาน
| คำอธิบายตัวระบุ | Content API for Shopping | Merchant API |
|---|---|---|
| รหัสสินค้า | สตริงที่ประกอบด้วยกลุ่มที่คั่นด้วยโคลอน (:)รูปแบบ: channel:contentLanguage:targetCountry:offerId หรือ channel:contentLanguage:feedLabel:offerIdตัวอย่าง: online:en:US:sku123 |
สตริง name ของทรัพยากร RESTรูปแบบ: accounts/{account}/products/{product} โดยที่ {product} คือ contentLanguage~feedLabel~offerIdตัวอย่าง: accounts/12345/products/en~US~sku123การเข้ารหัส: แนะนำให้ใช้การเข้ารหัส base64url แบบไม่มีการเติม และจำเป็นในกรณีที่รหัสสินค้ามีอักขระที่ Merchant API ใช้หรืออักขระที่สงวนไว้สำหรับ URL |
เมธอด
ตารางนี้แสดงเมธอด Content API for Shopping และเมธอดที่เทียบเท่าใน Merchant API
| วิธีการใช้ Content API for Shopping | เมธอด Merchant API | ความพร้อมใช้งานและหมายเหตุ |
|---|---|---|
products.get |
products.get |
ดึงข้อมูลผลิตภัณฑ์ที่ประมวลผลขั้นสุดท้าย |
products.list |
products.list |
แสดงรายการผลิตภัณฑ์สุดท้ายที่ประมวลผลแล้ว |
products.insert |
productInputs.insert |
แทรกอินพุตผลิตภัณฑ์ ต้องมี dataSource |
products.update |
productInputs.patch |
ลักษณะการทำงานจะแตกต่างกันอย่างมาก โดยจะอัปเดตอินพุตผลิตภัณฑ์ที่เฉพาะเจาะจงและคงอยู่ถาวร |
products.delete |
productInputs.delete |
ลบข้อมูลสินค้าที่เฉพาะเจาะจง ต้องมี dataSource |
products.custombatch |
ไม่พร้อมใช้งาน | ใช้คำขอที่โหลดแบบอะซิงโครนัสหรือการจัดกลุ่ม HTTP |
productstatuses.get |
products.get |
ระบบจะนำบริการ productstatuses ออก ตอนนี้ข้อมูลสถานะเป็นส่วนหนึ่งของทรัพยากร Product แล้ว |
productstatuses.list |
products.list |
ระบบจะนำบริการ productstatuses ออก ตอนนี้ข้อมูลสถานะเป็นส่วนหนึ่งของทรัพยากร Product แล้ว |
productstatuses.custombatch |
ไม่พร้อมใช้งาน | ใช้คำขอที่โหลดแบบอะซิงโครนัสหรือการจัดกลุ่ม HTTP |
การเปลี่ยนแปลงฟิลด์โดยละเอียด
ตารางนี้จะไฮไลต์ช่องสำคัญที่มีการเปลี่ยนแปลง เพิ่ม หรือนำออกใน Merchant API
| Content API for Shopping | Merchant API | คำอธิบาย |
|---|---|---|
id |
name |
ตอนนี้ตัวระบุหลักสำหรับผลิตภัณฑ์คือทรัพยากร REST name ขอแนะนำให้ใช้การเข้ารหัส base64url แบบไม่มีการเติม และจำเป็นในกรณีที่ชื่อสินค้ามีอักขระที่ Merchant API ใช้หรืออักขระที่สงวนไว้สำหรับ URL |
แอตทริบิวต์ข้อกำหนดในการจัดทำข้อมูลสินค้าระดับบนสุด (เช่น title, price, link) |
วัตถุ productAttributes รายการ |
คุณสมบัติของสินค้า เช่น title, price และ link ไม่ใช่ช่องระดับบนสุดอีกต่อไป ตอนนี้เมตริกเหล่านี้จะจัดกลุ่มอยู่ภายในออบเจ็กต์ productAttributes ทั้งในทรัพยากร Product และ ProductInput ซึ่งจะช่วยให้โครงสร้างทรัพยากรเป็นระเบียบและชัดเจนยิ่งขึ้น |
targetCountry |
feedLabel |
ตอนนี้ชื่อทรัพยากรจะใช้ feedLabel แทน targetCountry เพื่อให้สอดคล้องกับฟังก์ชันการทำงานของ Merchant Center |
feedId |
dataSource (พารามิเตอร์การค้นหา) |
ตอนนี้ชื่อ dataSource เป็นพารามิเตอร์การค้นหาที่จำเป็นสำหรับเมธอดการเขียน productInputs ทั้งหมด (insert, update, delete) |
channel |
ไม่พร้อมใช้งาน ใช้ legacy_local สำหรับผลิตภัณฑ์ในร้านเท่านั้น |
ฟิลด์ channel ไม่มีอยู่ใน Merchant API อีกต่อไป ผลิตภัณฑ์ที่มีช่องทาง LOCAL ใน Content API for Shopping ควรตั้งค่าช่อง legacy_local เป็น "จริง" แทน |
| ไม่พร้อมใช้งาน | versionNumber |
ฟิลด์ตัวเลือกใหม่ใน ProductInput ซึ่งใช้เพื่อป้องกันการแทรกที่ไม่เป็นไปตามลำดับลงในแหล่งข้อมูลหลักได้ |
ช่องประเภท string ที่มีชุดค่าที่กำหนดไว้ |
ช่องประเภท enum ที่มีชุดค่าที่กำหนดไว้ |
ตอนนี้ช่องภายในคุณสมบัติของสินค้าที่มีชุดค่าที่กำหนด (เช่น excluded_destinations, availability) เป็นประเภท enum แล้ว |