เผยแพร่: 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');
}
}