QDAppStore.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using UnityEngine.Purchasing;
  2. using UnityEngine;
  3. namespace GFGGame
  4. {
  5. public class QDAppStore
  6. {
  7. public static void InitPlatform()
  8. {
  9. IAPManager.Instance.InitializePurchasing();
  10. }
  11. public static void Pay(int buyID, int count, string orderID, long Price)
  12. {
  13. IAPManager.Instance.Pay(buyID, count, orderID, Price);
  14. }
  15. }
  16. public class IAPManager : SingletonBase<IAPManager>, IStoreListener
  17. {
  18. IStoreController m_StoreController; // The Unity Purchasing system.
  19. public void Pay(int buyID, int count, string orderID, long Price)
  20. {
  21. Debug.Log($"Pay {buyID}");
  22. m_StoreController.InitiatePurchase(buyID + "");
  23. }
  24. public void InitializePurchasing()
  25. {
  26. Debug.Log("InitializePurchasing");
  27. var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
  28. builder.AddProduct("10001", ProductType.Consumable);
  29. UnityPurchasing.Initialize(this, builder);
  30. }
  31. public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
  32. {
  33. Debug.Log("In-App Purchasing successfully initialized");
  34. m_StoreController = controller;
  35. EventAgent.DispatchEvent(ConstMessage.ON_PLATFORM_SDK_INITED, true);
  36. }
  37. public void OnInitializeFailed(InitializationFailureReason error)
  38. {
  39. Debug.Log($"In-App Purchasing initialize failed: {error}");
  40. EventAgent.DispatchEvent(ConstMessage.ON_PLATFORM_SDK_INITED, false);
  41. }
  42. public void OnPurchaseFailed(Product product, PurchaseFailureReason failureReason)
  43. {
  44. Debug.Log($"Purchase failed - Product: '{product.definition.id}', PurchaseFailureReason: {failureReason}");
  45. }
  46. public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args)
  47. {
  48. //Retrieve the purchased product
  49. var product = args.purchasedProduct;
  50. Debug.Log($"Purchase Complete - Product: {product.definition.id}");
  51. //We return Complete, informing IAP that the processing on our side is done and the transaction can be closed.
  52. return PurchaseProcessingResult.Complete;
  53. }
  54. }
  55. }