ปลั๊กอิน Google Play Billing ช่วยขยายบริการภายในของ Unity และ เนื้อหาสำหรับการซื้อในแอปที่เรียกว่า Unity IAP เพื่อให้ เกมของคุณได้ด้วยฟีเจอร์ล่าสุดทั้งหมดของ Google Play Billing Library ช่วงเวลานี้ อธิบายวิธีตั้งค่าโปรเจ็กต์เพื่อใช้ปลั๊กอิน คู่มือนี้ยัง อธิบายวิธีติดตั้งใช้งานฟีเจอร์ Google Play Billing Library ในเกมของคุณใน Unity
ตั้งค่าปลั๊กอิน Google Play Billing
หากต้องการตั้งค่าปลั๊กอิน ให้ทำตามขั้นตอนในแต่ละส่วนที่ลิงก์ต่อไปนี้
- เปิดใช้เลเยอร์ Abstraction ของ Unity IAP
- ดาวน์โหลดและนำเข้าปลั๊กอิน
- กำหนดการตั้งค่าบิลด์ของปลั๊กอิน
- เปิดใช้ปลั๊กอิน
เปิดใช้เลเยอร์ Unity IAP Abtraction
ปลั๊กอิน Google Play Billing สร้างขึ้นในชั้น Abstraction ที่รวมอยู่กับ Unity IAP คุณจึงต้องเปิดใช้เลเยอร์ Abstraction นี้ก่อนดาวน์โหลด และนำเข้าปลั๊กอิน หากต้องการเปิดใช้เลเยอร์ Abstraction ของ Unity IAP ให้ทำ ดังต่อไปนี้:
- ทำตามขั้นตอนทั้งหมดในบทแนะนำสำหรับ Unity ต่อไปนี้: ตั้งค่าโปรเจ็กต์ของคุณ สำหรับบริการ Unity
- ทำตามขั้นตอนทั้งหมดในบทแนะนำสำหรับ Unity ต่อไปนี้: เปิดใช้ Unity IAP service [บริการ]
ดาวน์โหลดและนำเข้าปลั๊กอิน
ปลั๊กอินจะมีการจัดส่งเป็นแพ็กเกจ Unity ใน
.unitypackage
หากต้องการดาวน์โหลดและนำเข้าปลั๊กอิน ให้ทำตามขั้นตอนต่อไปนี้
- ดาวน์โหลดปลั๊กอิน Google Play รุ่นล่าสุดสำหรับ Unity จากที่เก็บของ เผยแพร่ใน GitHub
จากแถบเมนู Unity ให้คลิกเนื้อหา > นำเข้าแพ็กเกจ > แพ็กเกจที่กำหนดเอง
ระบุตำแหน่งที่คุณดาวน์โหลดไฟล์
.unitypackage
แล้วเลือกไฟล์นั้นในกล่องโต้ตอบนำเข้าแพ็กเกจ Unity ให้เลือกชิ้นงานทั้งหมด แล้วคลิก นำเข้า
หลังจากนำเข้าแพ็กเกจแล้ว จะมีโฟลเดอร์ใหม่ชื่อ GooglePlayPlugins (ที่ รูทของโฟลเดอร์ชิ้นงาน) ลงในชิ้นงานของโปรเจ็กต์ โฟลเดอร์นี้ มีเนื้อหาทั้งหมดของ Google Play Billing Library สำหรับปลั๊กอิน
กำหนดการตั้งค่าบิลด์
เนื่องจากปลั๊กอินขยาย Unity IAP ทำให้ Unity จะเกิดข้อขัดแย้งและล้มเหลว สร้าง Android APK เว้นแต่จะมีทรัพยากร Dependency ที่เก่ากว่าซึ่งซ้อนทับกันใน Unity IAP จะถูกนำออกจากบิลด์ ปลั๊กอินจะมีวิธีอัตโนมัติในการนำ ไลบรารีที่ขัดแย้งกันจากโปรเจ็กต์ของคุณ โปรดทำตามขั้นตอนต่อไปนี้เพื่อแก้ไขความขัดแย้งเหล่านี้ ขั้นตอนเหล่านี้:
จากแถบเมนู Unity ให้เลือก Google > Play Billing > การตั้งค่าบิลด์
ในหน้าต่างการตั้งค่าบิลด์ของ Play Billing ให้คลิกแก้ไข วิธีนี้แก้ไข เกิดข้อขัดแย้งและย้ายไฟล์ Unity IAP ที่ขัดแย้งกันไปยังไดเรกทอรีข้อมูลสำรอง หลัง และคลิกแก้ไข ปุ่มจะเปลี่ยนเป็นกู้คืน ซึ่งคุณสามารถคลิกเพื่อ กู้คืนไฟล์ต้นฉบับที่ขัดแย้ง
เปิดใช้ปลั๊กอิน
หากต้องการเปิดใช้ปลั๊กอิน ให้แทนที่การใช้งาน Google Play ของ Unity IAP ด้วย
ปลั๊กอิน Google Play Billing ตัวอย่างเช่น เมื่อใช้ผู้ซื้อ IAP สำหรับ Unity
สคริปต์
คุณจะเปลี่ยน StandardPurchaseModule
ที่ส่งผ่านไปยังเครื่องมือสร้าง IAP
เพื่อใช้ Google.Play.Billing.GooglePlayStoreModule
:
// Create a builder using the GooglePlayStoreModule.
var configurationBuilder =
ConfigurationBuilder.Instance(Google.Play.Billing.GooglePlayStoreModule.Instance());
หากเกมของคุณใช้สคริปต์ผู้ซื้อเดียวกัน สำหรับหลายแพลตฟอร์ม ควรเพิ่มการตรวจสอบแพลตฟอร์ม เพื่อให้มั่นใจว่า Unity จะใช้ เป็นเจ้าของโซลูชัน IAP สำหรับแพลตฟอร์มอื่น
ConfigurationBuilder builder;
if (Application.platform == RuntimePlatform.Android)
{
builder = ConfigurationBuilder.Instance(
Google.Play.Billing.GooglePlayStoreModule.Instance());
}
else
{
builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
}
หากคุณเผยแพร่เกมใน App Store อื่นๆ ของ Android นอกเหนือจาก Google Play จัดเก็บแล้วคุณควรแทนที่การใช้งาน IAP สำหรับ Unity เริ่มต้นก็ต่อเมื่อ คุณเลือก Google Play Store
ConfigurationBuilder builder;
if (Application.platform == RuntimePlatform.Android
&& SelectedAndoidAppStore == AppStore.GooglePlay)
{
builder = ConfigurationBuilder.Instance(
Google.Play.Billing.GooglePlayStoreModule.Instance());
}
else
{
builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
}
ใช้ฟีเจอร์ Google Play Billing Library ในเกมของคุณ
ปลั๊กอิน Google Play Billing ช่วยขยายบริการ IAP ของ Unity คุณจึงสามารถใช้ Unity API เดียวกันเพื่อจัดการเวิร์กโฟลว์การซื้อทั่วไป โปรดทราบว่ามีพร็อพเพอร์ตี้ การเปลี่ยนแปลงลักษณะการทำงานของ API เล็กน้อย เนื่องจากความแตกต่างระหว่าง Google Play Billing Library กับ IAP มาตรฐานของ Unity สำหรับ App Store อื่นๆ หากคุณเพิ่งเริ่มใช้ Unity IAP API โปรดดู "สคริปต์การซื้อ" ใน Unity IAP บทแนะนำ เพื่อดูตัวอย่างวิธีการใช้ขั้นตอนการซื้อขั้นพื้นฐาน
นอกจากนี้ Google Play Billing Library ยังมีบางฟีเจอร์เฉพาะที่ Play Store คุณจะเข้าถึงฟีเจอร์เหล่านี้ได้ผ่านอินเทอร์เฟซเพิ่มเติม ส่วนที่เหลือของส่วนนี้อธิบายวิธีใช้ Google Play Billing Library ที่ไม่ซ้ำกันเหล่านี้ ฟีเจอร์ในเกม
เปิดใช้การซื้อที่มีการเลื่อนเวลา
Google Play รองรับการซื้อที่มีการเลื่อนเวลา หรือเรียกอีกอย่างว่ารอดำเนินการ Trasacations หรือรอดำเนินการ ที่ซึ่งผู้ใช้สามารถทำการซื้อและทำการซื้อให้เสร็จสมบูรณ์ในภายหลังโดยใช้เงินสด
หากต้องการเปิดใช้งานการซื้อที่มีการเลื่อนเวลา ให้ใช้เครื่องมือสร้าง IAP ของคุณเพื่อแก้ไข
โดยเรียกใช้เมธอด EnableDeferredPurchase()
ดังนี้
// Create a builder using a GooglePlayStoreModule.
var configurationBuilder =
ConfigurationBuilder.Instance(Google.Play.Billing.GooglePlayStoreModule.Instance());
// Enable deferred purchases
configurationBuilder.Configure<Google.Play.Billing.IGooglePlayConfiguration>()
.EnableDeferredPurchase();
ต่อไป ให้ใช้การเรียกกลับการซื้อที่มีการเลื่อนเวลาโดยใช้ส่วนขยาย Play Store ดังนี้
// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();
// Set the deferred purchases callback.
_playStoreExtensions.SetDeferredPurchaseListener(
delegate(Product product)
{
// Do not grant the item here. Instead, record the purchase and remind
// the user to complete the transaction in the Play Store.
});
ส่งผ่านรหัสบัญชีที่มีการปรับให้ยากต่อการอ่าน (Obfuscate) ไปยัง Google Play
คุณสามารถส่งรหัสบัญชีผู้ใช้ที่ปรับให้ยากต่อการอ่าน (Obfuscate) ไปยัง Google Play เพื่ออำนวยความสะดวกในการละเมิดได้ เช่น การดูว่าอุปกรณ์จำนวนมากกำลังทำการซื้อสินค้าเดียวกันหรือไม่ ในช่วงเวลาสั้นๆ
หากต้องการส่งรหัสบัญชีที่ปรับให้ยากต่อการอ่าน (Obfuscate) ให้เรียกใช้เมธอด SetObfuscatedAccountId()
จาก API ส่วนขยายให้ทำดังนี้
// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();
// Pass an obfuscated account ID.
_playStoreExtensions.SetObfuscatedAccountId(obfuscatedAccountId);
ส่งผ่านรหัสโปรไฟล์ที่มีการปรับให้ยากต่อการอ่าน (Obfuscate) ไปยัง Google Play
คุณสามารถส่งรหัสโปรไฟล์ที่มีการปรับให้ยากต่อการอ่าน (Obfuscate) ไปยัง Google Play เพื่ออำนวยความสะดวกในการประพฤติมิชอบได้ เช่น การดูว่าอุปกรณ์จำนวนมากกำลังทำการซื้อสินค้าเดียวกันหรือไม่ ในช่วงเวลาสั้นๆ ซึ่งคล้ายกับการส่งคำสั่งที่ซับซ้อน รหัสบัญชีผู้ใช้ ในทั้งสองกรณี รหัสแสดงถึง ผู้ใช้รายเดียว แต่รหัสโปรไฟล์จะให้คุณระบุผู้ใช้รายเดียวโดยไม่ซ้ำกัน ได้หลายโปรไฟล์ภายในแอปเดียว หลังจากส่ง รหัสโปรไฟล์ที่ปรับให้ยากต่อการอ่าน (Obfuscate) ใน Google Play คุณสามารถเรียกดูรหัสนั้นได้ภายหลังใน ใบเสร็จการซื้อ
หากต้องการส่งรหัสโปรไฟล์ที่ปรับให้ยากต่อการอ่าน (Obfuscate) ให้ใช้
เครื่องมือสร้าง IAP เพื่อแก้ไขการกำหนดค่าโมดูลโดยการเรียกใช้
เมธอด SetObfuscatedProfileId()
:
// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();
// Pass an obfuscated profile ID.
_playStoreExtensions.SetObfuscatedProfileId(obfuscatedProfileId);
ยืนยันการเปลี่ยนแปลงราคาสำหรับการสมัครใช้บริการ
Google Play ช่วยให้คุณสามารถเปลี่ยนแปลงราคา
การสมัครใช้บริการ บัญชี
ผู้ใช้เกมต้องยืนยันการเปลี่ยนแปลงราคาใดๆ ก่อน การเปลี่ยนแปลงจึงจะมีผล ถึง
แจ้งให้ผู้ใช้ยืนยันการเปลี่ยนแปลงราคาการสมัครใช้บริการ โทรหา
เมธอด ConfirmSubscriptionPriceChange()
:
// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();
_playStoreExtensions.ConfirmSubscriptionPriceChange(productId,
delegate (bool success)
{
// Returns whether the user has accepted the new price or not.
});
การเปลี่ยนแปลงลักษณะการทำงานของ Unity API
เมื่อคุณใช้ปลั๊กอิน Google Play Billing API ส่วนใหญ่จะทำงาน เหมือนกับการติดตั้งใช้งาน IAP มาตรฐานของ Unity สําหรับ App Store อื่นๆ อย่างไรก็ตาม ในบางกรณี API จะทำงานต่างออกไป ส่วนนี้ จะอธิบายถึงความแตกต่างของพฤติกรรมเหล่านี้
ไม่รองรับเพย์โหลดของนักพัฒนาซอฟต์แวร์
เพย์โหลดของนักพัฒนาซอฟต์แวร์ Google Play ที่เลิกใช้งานแล้วและแทนที่ด้วยทางเลือกอื่น ที่มีความหมายและบริบทมากขึ้น ด้วยเหตุนี้ เพย์โหลดของนักพัฒนาจึง ไม่รองรับ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับทางเลือก โปรดดูหน้าที่เกี่ยวข้องกับ เพย์โหลดของนักพัฒนาซอฟต์แวร์
คุณยังคงใช้อินเทอร์เฟซเดิมที่กำหนดโดยมาตรฐานของ Unity ได้ต่อไป
การใช้ IAP สำหรับ App Store อื่นๆ รวมถึง IStoreController
เมื่อคุณ
เริ่มต้นการซื้อ คุณยังสามารถใช้ IStoreController
และโทรหา
เมธอด InitiatePurchase()
:
public void InitiatePurchase(Purchasing.Product product, string payload);
อย่างไรก็ตาม เพย์โหลดที่คุณส่งจะไม่มีผลใดๆ (จะไม่ปรากฏใน ใบเสร็จสุดท้าย)
ไม่รองรับ SubscriptionManager
IAP สำหรับ Unity มอบ SubscriptionManager
สำหรับจัดการการสมัครใช้บริการ เนื่องจากการใช้ IAP มาตรฐานของ Unity
คลาสนี้ใช้เพย์โหลดของนักพัฒนาซอฟต์แวร์ ระบบไม่รองรับคลาสนี้ คุณยังสามารถ
สร้างชั้นเรียนนี้ แต่คุณอาจได้รับข้อมูลที่ไม่น่าเชื่อถือเมื่อใช้
ของเมธอด Getter ของคลาส
UpdateSubscription มีการเปลี่ยนแปลง API เล็กน้อย
ปลั๊กอิน Google Play Billing ไม่รองรับการใช้
SubscriptionManager.UpdateSubscription()
และ
SubscriptionManager.UpdateSubscriptionInGooglePlayStore()
วิธีการอัปเกรด
และดาวน์เกรดการสมัครใช้บริการของคุณ ถ้าเกมของคุณเรียกวิธีการเหล่านี้
GooglePlayStoreUnsupportedException
โยนแล้ว
Google Play Billing Library มี API ทางเลือกสำหรับใช้แทน API เหล่านี้
หากต้องการอัปเกรดหรือดาวน์เกรดการสมัครใช้บริการ โปรดโทรหา UpdateSubscription()
โดยใช้โหมดตามสัดส่วน:
void UpdateSubscription(Product oldProduct, Product newProduct,
GooglePlayStoreProrationMode prorationMode = GooglePlayStoreProrationMode.Unknown);
คุณจะรวมการเรียกใช้เมธอดนี้ด้วยการตรวจสอบแพลตฟอร์มหรือในการตรวจจับบล็อกก็ได้
เมื่อจับ GooglePlayStoreUnsupportedException
ได้
ดูข้อมูลเพิ่มเติมและตัวอย่างวิธีใช้โหมดตามสัดส่วนได้ที่ตั้งค่า แบบคิดสัดส่วน