เผยแพร่: 2 ธันวาคม 2020
นอกจากจะช่วยให้แอปของคุณขายสินค้าดิจิทัลและการสมัครใช้บริการใน Play Store ได้แล้ว Google Play Billing ยังมีเครื่องมือสำหรับจัดการแคตตาล็อก ราคา และการสมัครใช้บริการ รวมถึงรายงานที่มีประโยชน์และขั้นตอนการชำระเงินที่ขับเคลื่อนโดย Play Store ซึ่งผู้ใช้คุ้นเคยอยู่แล้ว นี่เป็นข้อกำหนดสำหรับแอปพลิเคชันที่เผยแพร่ใน Play Store ซึ่งขายสินค้าดิจิทัล
Google Play Billing API มีคำศัพท์เป็นของตัวเอง รวมถึงคอมโพเนนต์ไคลเอ็นต์และแบ็กเอนด์ ส่วนนี้ครอบคลุม API เพียงส่วนเล็กๆ ที่ใช้สำหรับ Digital Goods API และกิจกรรมบนเว็บที่เชื่อถือได้ โปรดอ่านเอกสารประกอบเกี่ยวกับการเรียกเก็บเงินของ Google Play และเข้าใจแนวคิดก่อนผสานรวมเข้ากับแอปพลิเคชันเวอร์ชันที่ใช้งานจริง
ขั้นตอนพื้นฐาน
หากต้องการจัดจำหน่ายสินค้าดิจิทัลผ่าน Play Store ให้กำหนดค่าแคตตาล็อกใน Play Store และเชื่อมต่อ Play Store เป็นวิธีการชำระเงินจาก PWA
โดยทำดังนี้ในอินเทอร์เฟซของ Play Store
- คลิกผลิตภัณฑ์ในเมนู Play Console ดูไอเทมที่ซื้อในแอปและการสมัครใช้บริการที่มีอยู่
- คลิกสร้างผลิตภัณฑ์เพื่อเพิ่มผลิตภัณฑ์ใหม่
- เพิ่มรหัสผลิตภัณฑ์ ชื่อ คำอธิบาย และราคา สร้างรหัสผลิตภัณฑ์ที่มีความหมายและจดจำได้ง่าย เนื่องจากคุณต้องใช้รหัสดังกล่าวในภายหลัง รหัสจะเปลี่ยนแปลงไม่ได้เมื่อสร้างแล้ว
- หากสร้างการสมัครใช้บริการ คุณจะต้องระบุระยะเวลาการเรียกเก็บเงินด้วย คุณสามารถแสดงสิทธิประโยชน์ของการสมัครใช้บริการและเพิ่มฟีเจอร์ต่างๆ เช่น ช่วงทดลองใช้ฟรี ราคาช่วงแนะนำ ระยะเวลาผ่อนผัน และตัวเลือกการสมัครใช้บริการอีกครั้ง
- คลิกเปิดใช้งานเพื่อให้ผลิตภัณฑ์พร้อมใช้งาน
หรือจะเพิ่มผลิตภัณฑ์ด้วย Play Developers API ก็ได้หากต้องการ
เมื่อกําหนดค่าแคตตาล็อกแล้ว ขั้นตอนถัดไปคือการกําหนดค่าขั้นตอนการชำระเงินจาก PWA ใช้ Digital Goods API ร่วมกับ Payment Request API
เรียกข้อมูลราคาผลิตภัณฑ์ด้วย Digital Goods API
เมื่อใช้ Google Play Billing โปรดตรวจสอบว่าราคาที่แสดงต่อผู้ใช้ตรงกับราคาจากข้อมูลผลิตภัณฑ์ใน Store การซิงค์ราคาเหล่านั้นด้วยตนเองเป็นไปไม่ได้ ดังนั้น Digital Goods API จึงมีวิธีให้เว็บแอปพลิเคชันค้นหาราคาจากผู้ให้บริการการชำระเงินที่เกี่ยวข้อง ดังนี้
// The SKU for the product, as defined in the Play Store interface
async function populatePrice(sku) {
try {
// Check if the Digital Goods API is supported by the browser.
if (window.getDigitalGoodsService) {
// The Digital Goods API can be supported by other Payments provider.
// In this case, we're retrieving the Google Play Billing provider.
const service =
await window.getDigitalGoodsService("https://play.google.com/billing");
// Fetch product details using the `getDetails()` method.
const details = await service.getDetails([sku]);
if (details.length === 0) {
console.log(`Could not get SKU: "${sku}".`);
return false;
}
// The details contain both the price and the currenncy.
item = details[0];
const value = item.price.value;
const currency = item.price.currency;
const formattedPrice = new Intl.NumberFormat(navigator.language, {
style: 'currency', currency: currency }).format(value);
// Display the price to the user.
document.getElementById("price").innerHTML = formattedPrice;
} else {
console.error("Could not get price for SKU \"" + sku + "\".");
}
} catch (error) {
console.log(error);
}
return false;
}
คุณสามารถตรวจหาการรองรับ Digital Goods API ได้โดยตรวจสอบว่า getDigitalGoodsService()
พร้อมใช้งานบนออบเจ็กต์ window
หรือไม่
จากนั้นเรียกใช้ window.getDigitalGoodsService()
พร้อมตัวระบุการเรียกเก็บเงินของ Google Play เป็นพารามิเตอร์
ซึ่งจะแสดงอินสแตนซ์บริการสําหรับการเรียกเก็บเงินของ Google Play และผู้ให้บริการรายอื่นๆ สามารถใช้การรองรับ Digital Goods API และมีตัวระบุที่แตกต่างกันได้
สุดท้าย ให้เรียก getDetails()
ในข้อมูลอ้างอิงไปยังออบเจ็กต์ Google Play Billing โดยส่ง SKU ของรายการเป็นพารามิเตอร์ เมธอดนี้จะแสดงผลออบเจ็กต์รายละเอียดที่มีทั้งราคาและค่าสกุลเงินของสินค้าที่แสดงต่อผู้ใช้ได้
เริ่มขั้นตอนการซื้อ
Payment Request API เปิดใช้ขั้นตอนการซื้อบนเว็บ และยังใช้สำหรับการผสานรวม Google Play Billing ด้วย ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานของ Payment Request API หากคุณเพิ่งเริ่มใช้ Payment Request API
หากต้องการใช้ API กับ Google Play Billing คุณต้องเพิ่มเครื่องมือการชำระเงินซึ่งมีวิธีการที่รองรับซึ่งเรียกว่า https://play.google.com/billing
เพิ่ม SKU เป็นส่วนหนึ่งของข้อมูลสำหรับเครื่องมือ โดยทำดังนี้
const supportedInstruments = [{
supportedMethods: "https://play.google.com/billing",
data: {
sku: sku
}
}];
จากนั้นสร้างออบเจ็กต์ PaymentRequest
ตามปกติ และใช้ API ตามปกติ
const request = new PaymentRequest(supportedInstruments, details);
ยอมรับการซื้อ
เมื่อธุรกรรมเสร็จสมบูรณ์แล้ว ให้ใช้ Digital Goods API เพื่อรับทราบการชำระเงิน ออบเจ็กต์การตอบกลับจาก PaymentRequest
มีโทเค็นที่คุณใช้เพื่อรับทราบธุรกรรมได้ ดังนี้
const response = await request.show();
const token = response.details.token;
const service = await window.getDigitalGoodsService("https://play.google.com/billing");
await service.acknowledge(token, 'onetime');
Digital Goods API และ Payment Request API ไม่มีข้อมูลเกี่ยวกับตัวตนของผู้ใช้ ด้วยเหตุนี้ คุณจึงต้องเชื่อมโยงการซื้อกับผู้ใช้ในแบ็กเอนด์และตรวจสอบว่าผู้ใช้มีสิทธิ์เข้าถึงรายการที่ซื้อ เมื่อเชื่อมโยงการซื้อกับผู้ใช้ อย่าลืมบันทึกโทเค็นการซื้อ เนื่องจากคุณอาจต้องใช้เพื่อยืนยันว่ามีการยกเลิกหรือคืนเงินการซื้อ หรือเพื่อยืนยันว่าการสมัครใช้บริการยังใช้งานได้อยู่หรือไม่ โปรดดู Real Time Developer Notifications API และ Google Play Developer API เนื่องจากมีปลายทางสำหรับจัดการเคสเหล่านั้นในแบ็กเอนด์
ตรวจสอบการมีสิทธิ์ที่มีอยู่
ผู้ใช้อาจแลกรหัสโปรโมชันหรือสมัครใช้บริการผลิตภัณฑ์ของคุณอยู่แล้ว หากต้องการตรวจสอบว่าผู้ใช้มีสิทธิ์ที่เหมาะสม คุณสามารถเรียกใช้คำสั่ง listPurchases()
ในบริการสินค้าดิจิทัล ซึ่งจะแสดงรายการการซื้อทั้งหมดที่ลูกค้าดำเนินการในแอปของคุณ นอกจากนี้ยังเป็นตําแหน่งที่จะรับทราบการซื้อที่ยังไม่ได้รับการยอมรับเพื่อให้มั่นใจว่าผู้ใช้แลกสิทธิ์ของตนได้อย่างถูกต้อง
const purchases = await itemService.listPurchases();
for (p of purchases) {
if (!p.acknowledged) {
await itemService.acknowledge(p.purchaseToken, 'onetime');
}
}