Unity端
这里需要使用Unity内置的IAP插件,下载IAP插件的方式:Window–>Services–>In-App Purchasing(这个就是unity内置的内购插件),点击把OFF->ON
点击之后会有个询问是否是对13岁以下儿童设计的游戏,按照情况勾选,之后点击continue进入安装界面,点击input安装
下面的Options是谷歌商店支付相关的,可以空着不用管它。
下载好插件之后会包含IAP内购的Demo,可以点击查看效果,此Demo在Unity上运行点击购买会出现一个fakeStore界面,在真机测试中会弹出正常IP的支付界面。
此时当你下载好IAP插件点击Window后会发现多出来一个UnityIAP选项,这时插件就已经安装好了。
当安装好插件后,有两种方式实现IAP内购:
一、使用IAPButton按钮
这种方法可以在层级界面点击右键可以看到UnityIAP->IAPButton,在要生成支付按钮的位置生成它,它就是一个挂载IAPButton脚本的Button按钮。
Product ID是设置在Unity端你要购买物品的ID,它是与你在APPStore上设置的购买项目在Unity端的映射,这个ID可以自己设定,点击下面IAP Catalog可以设定这个映射关系。
ID就是上文中所说的Product ID,Type是在APPStore生成内购物品时的哪几种类型,在下面是物品描述,在下面的Store ID Overrides就是在各个平台的商店里物品的正式ID了,第一个就是苹果APPStore的。再然后最下面Apple Configuration选择的是购买物品的费用,和你APPStore选一样的就行了。
IAPButton图中ButtonType有两种,当前的是交易类型按钮,还有一种是Restore按钮,用来查询和重置非消耗项目物品时使用。
在下面有两个On Purchase Complete和On Purchase Failed,这两个分别可以添加回调成功和失败后要执行的事件,使用方法就跟Button按钮最下面的On Click一模一样。
然后运行点击这个按钮就可以触发内购了。(这种方式的OK了,就是这么智能。。。。但是这种方法要设定好这个IAPButton,我们的项目先进行的安卓端的测试,UI界面已经都设置好了,要使用的话我需要把之前的的Button都改一下,好像挺麻烦的,所以用下面代码控制更灵活一点)
二、使用代码控制
下面就来用代码实现IAP内购
下面我先贴一下代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Purchasing;
/// <summary>
/// 这是通用方式,通过读取catalog里面的信息,获取所有商品信息
/// </summary>
public class ApplePayModule: MonoBehaviour, IStoreListener
{
private static ApplePayModule m_instance;
public static ApplePayModule Instance { get { return m_instance; } }
private static IStoreController m_StoreController;
private static IExtensionProvider m_StoreExtensionProvider;
bool blnRestore = false;//用来表示
bool blnPressRestore = false;//用来区分是否按了 restore 按钮