Unity IAP的简单使用
2017-06-09 16:53
295 查看
这里我只贴出如何用代码进行购买和恢复购买并拿出订单号的方法(AppStore需要先去iTunes Connect设置商品id)
代码的使用方法如下,其实官方手册上有详细的示例代码
官方使用教程 : https://unity3d.com/cn/learn/tutorials/topics/ads-analytics/integrating-unity-iap-your-game
回执单的验证:https://docs.unity3d.com/Manual/UnityIAPValidatingReceipts.html
代码的使用方法如下,其实官方手册上有详细的示例代码
官方使用教程 : https://unity3d.com/cn/learn/tutorials/topics/ads-analytics/integrating-unity-iap-your-game
回执单的验证:https://docs.unity3d.com/Manual/UnityIAPValidatingReceipts.html
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Purchasing; using UnityEngine.Purchasing.Security; public class Test : MonoBehaviour, IStoreListener { private IStoreController mStoreController; private IExtensionProvider mExtensionProvider; ConfigurationBuilder builder; private string consumeable = "product1"; void Start() { if (mStoreController == null) { InitPurchasing(); } } //初始化 public void InitPurchasing() { if (IsInitialized()) { return; } builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance()); builder.AddProduct(consumeable, ProductType.NonConsumable); UnityPurchasing.Initialize(this, builder); } //购买 public void BuyProduct() { if (IsInitialized()) { Product produdt = mStoreController.products.WithID(consumeable); if (produdt != null && produdt.availableToPurchase) { mStoreController.InitiatePurchase(produdt); Debug.Log(produdt.metadata.localizedPrice); } else { Debug.Log("fail"); } } } //恢复购买 public void ReSotre() { if (!IsInitialized()) { return; } if (mExtensionProvider != null && (Application.platform == RuntimePlatform.IPhonePlayer || Application.platform == RuntimePlatform.OSXPlayer)) { var apple = mExtensionProvider.GetExtension<IAppleExtensions>(); apple.RestoreTransactions((result) => { // Restore purchases initiated. See ProcessPurchase for any restored transacitons. }); } } private bool IsInitialized() { return mStoreController != null && mExtensionProvider != null; } //---------------IStoreListener的四个接口的实现----------- //初始化成功 public void OnInitialized(IStoreController controller, IExtensionProvider extensions) { mStoreController = controller; mExtensionProvider = extensions; } //初始化失败 public void OnInitializeFailed(InitializationFailureReason error) { Debug.Log("初始化失败了:" + error); } //购买失败 public void OnPurchaseFailed(Product i, PurchaseFailureReason p) { Debug.Log(i.definition.id + "\n" + p); } //购买成功和恢复成功的回调,可以根据id的不同进行不同的操作 public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs e) { if (string.Equals(e.purchasedProduct.definition.id, consumeable, System.StringComparison.Ordinal)) { //获取商品的描述信息,标题,价格,带单位的(¥,$等等) //这一步一般可以放在初始化完成的回调里,用于刷新你的相关UI Debug.Log("price:" + e.purchasedProduct.metadata.localizedPriceString); Debug.Log(e.purchasedProduct.metadata.localizedTitle + e.purchasedProduct.metadata.localizedDescription); //交易号 Debug.Log("storeSpecificId:" + e.purchasedProduct.definition.storeSpecificId); //回执单 Debug.Log("receipt:" + e.purchasedProduct.receipt); //商品的id号 Debug.Log("transactionID:" + e.purchasedProduct.transactionID); Debug.Log("成功了!!!!"); //这里是获取订单号,用于存储到自己的服务器,以及恢复购买时的对比 #if UNITY_ANDROID || UNITY_IOS || UNITY_STANDALONE_OSX // Get a reference to IAppleConfiguration during IAP initialization. var appleConfig = builder.Configure<IAppleConfiguration>(); var receiptData = System.Convert.FromBase64String(appleConfig.appReceipt); AppleReceipt receipt = new AppleValidator(AppleTangle.Data()).Validate(receiptData); Debug.Log(receipt.bundleID); Debug.Log(receipt.receiptCreationDate); foreach (AppleInAppPurchaseReceipt productReceipt in receipt.inAppPurchaseReceipts) { Debug.Log("订单号:" + productReceipt.originalTransactionIdentifier); } #endif } return PurchaseProcessingResult.Complete; } }
相关文章推荐
- 使用EnterpriseLibrary的PIAB与Unity搭建简单AOP框架
- unity---EZGUI简单的使用1
- [Unity框架]PureMVC在unity中的简单使用
- Unity中简单使用Opengl
- Unity中简单使用Opengl
- Unity自带的SimpleJSon的简单使用
- Unity 学习笔记(1) -- Unity简介及简单使用
- 在 unity 中使用三种简单的方式实现实时时钟动画
- Metaio在Unity中的简单使用
- 使用PS为Unity游戏创建简单的游戏素材实例
- unity---EZGUI简单的使用1
- Unity4.3新功能:2D工具 的简单使用教程
- 用Unity开发OculusRift体验演示教程(一)——搭建简单场景并使用Oculus提供的SDK包
- Unity 3D使用GameObject创建一个简单的可移动物体
- unity关于StartCoroutine的简单线程使用
- 使用Unity2.0的Interceptor实现简单AOP
- Unity4.3 2D工具 的简单使用教程
- Unity4.3新功能:2D工具 的简单使用教程
- 初学Unity(无法响应的简单原因以及队列的使用)
- Unity 对象池简单使用