ConfirmingSubscriptionPriceChange.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. using System;
  2. using UnityEngine;
  3. using UnityEngine.Purchasing;
  4. using UnityEngine.UI;
  5. namespace Samples.Purchasing.GooglePlay.ConfirmingSubscriptionPriceChange
  6. {
  7. [RequireComponent(typeof(UserWarningGooglePlayStore))]
  8. public class ConfirmingSubscriptionPriceChange : MonoBehaviour, IStoreListener
  9. {
  10. IStoreController m_StoreController;
  11. IGooglePlayStoreExtensions m_GooglePlayStoreExtensions;
  12. public string subscriptionProductId = "com.mycompany.mygame.my_vip_pass_subscription";
  13. public Text isSubscribedText;
  14. void Start()
  15. {
  16. InitializePurchasing();
  17. UpdateWarningMessage();
  18. }
  19. void InitializePurchasing()
  20. {
  21. var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
  22. builder.AddProduct(subscriptionProductId, ProductType.Subscription);
  23. UnityPurchasing.Initialize(this, builder);
  24. }
  25. public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
  26. {
  27. Debug.Log("In-App Purchasing successfully initialized");
  28. m_StoreController = controller;
  29. m_GooglePlayStoreExtensions = extensions.GetExtension<IGooglePlayStoreExtensions>();
  30. UpdateUI();
  31. }
  32. public void ConfirmPriceChange()
  33. {
  34. m_GooglePlayStoreExtensions.ConfirmSubscriptionPriceChange(subscriptionProductId, OnConfirmedPriceChange);
  35. }
  36. static void OnConfirmedPriceChange(bool result)
  37. {
  38. if (result)
  39. {
  40. //The subscription price change was confirmed.
  41. //The subscription will therefore be renewed.
  42. Debug.Log("Confirm Price Change Successful");
  43. }
  44. else
  45. {
  46. Debug.Log("Confirm Price Change Failed");
  47. }
  48. }
  49. public void BuySubscription()
  50. {
  51. m_StoreController.InitiatePurchase(subscriptionProductId);
  52. }
  53. public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args)
  54. {
  55. var product = args.purchasedProduct;
  56. Debug.Log($"Processing Purchase: {product.definition.id}");
  57. UpdateUI();
  58. return PurchaseProcessingResult.Complete;
  59. }
  60. void UpdateUI()
  61. {
  62. isSubscribedText.text = IsSubscribedTo(subscriptionProductId) ? "You are subscribed" : "You are not subscribed";
  63. }
  64. bool IsSubscribedTo(string subscriptionId)
  65. {
  66. var subscription = m_StoreController.products.WithStoreSpecificID(subscriptionId);
  67. if (subscription.receipt == null)
  68. {
  69. return false;
  70. }
  71. var subscriptionManager = new SubscriptionManager(subscription, null);
  72. var info = subscriptionManager.getSubscriptionInfo();
  73. return info.isSubscribed() == Result.True;
  74. }
  75. public void OnInitializeFailed(InitializationFailureReason error)
  76. {
  77. Debug.Log($"In-App Purchasing initialize failed: {error}");
  78. }
  79. public void OnPurchaseFailed(Product product, PurchaseFailureReason failureReason)
  80. {
  81. Debug.Log($"Purchase failed - Product: '{product.definition.id}', PurchaseFailureReason: {failureReason}");
  82. }
  83. void UpdateWarningMessage()
  84. {
  85. GetComponent<UserWarningGooglePlayStore>().UpdateWarningText();
  86. }
  87. }
  88. }