[Unity]内购插件Unibill
因为工作需要,最近一直在研究Unibill这个插件,分享一个研究成果。
苹果内购流程就不详细述说了,如果有需要的童鞋可以去看看点击打开链接,里面讲的很详细,这里就不细说了。
物品的信息可能通过上图手动添加,也可动态添加,需要注意的是物品Id必顺和iTunes申请的一致,否则会导致购买失败
从Unibill接收数据
Unibill初使化完成调用(Unibiller.Initialise()),并有返回值
SUCCESS:初使化成功,可以进行购买
SUCCESS_WITH_ERRORS:有一个或多个错误,不影响购物,可通过Unibiller去检索错误。
CRITICAL_ERROR: 初使化失败,会在XCode控制台输出错误信息。
如果初使化成功,就可以通过按钮进行购买,进行购买的函数是
需要传入的参数是物品的ID和开发都平台,ID是必填,开发者平台可不填,如何获得购买的物品ID,旧版本unibill会收到服务器发送的一个可购买列表,新版本把这个函数已经移除了,只能通过Unibiller.AllPurchasableItems获得本地物品列表(也可通过AllNonConsumablePurchasableItems获得非消耗物品列表,AllConsumablePurchasableItems可消耗物品列表),所以这个上面物品的ID必顺和iTunes完全一致。
购买之后,会进入iTunes的购买界面,这个不用我们进行操作,iTunes会进行处理。
购买成功,返回一个物品列表,里面包含物品的各种信息。
取消购买。
购买失败,返回购买失败的物品列表,如果购买失败,最好检查 一下物品的ID。
publicstaticevent Action<PurchasableItem> onPurchaseRefunded;退款,用户购买物品介绍和实际购买金额不符造成的损失
publicstaticevent Action<bool> onTransactionsRestored;恢复购买,只有未消耗品才有此功能(用户把游戏卸载后,重新安装,恢复购买才应该有作用),返回为true时,需要判断Unibiller.getPurchaseCount("levelPack1") > 0(这个获得的Count是通过苹果平台获取到的,大于0说明用户已经购买过),可以恢复,false不可以进行恢复,恢复购买函数Unibiller.restoreTransactions();
如果想知道某个物品在平台上购买了多少次,可通过Unibiller.getPurchaseCount("levelPack1")这个函数查询,传入参数是物品的ID。
Unibiller.clearTransactions();消除本地采购记录
以上是不需要和自己服务器进行联通的情况,如果需要和服务器进入验证,需要在购买成功后向自己服务器进行一下校正,首先要把购买成功后的信息解析出来,
返回一个购买数据,需要从receipt中解析出“Status”,如果status==0说明购买成功,如果返回其他说明购买失败,具体返回数据是什么意思,大家可以百度一下
IEnumerator SuccessCheck(PurchaseEvent e ){#if SANDOBX_TESTlogstring += e.PurchasedItem.name.ToString();#endifDebug.Log("从服务器获得的Receipt"+e.Receipt);WWWForm Post = new WWWForm();string josnstring = string.Format("{{\"receipt-data\":\"{0}\"}}",e.Receipt);Post.AddField("Receipt",josnstring);Debug.Log("服务器Jonstring"+josnstring);string str = "http://"网站地址"/VerifyReceipt_SandBox.aspx";WWW SendCheck = new WWW(str,Post);Debug.Log(str);yield return SendCheck;if(SendCheck == null|| SendCheck.error != null){Debug.Log("效验失败");#if SANDOBX_TESTlogstring += "效验错误:" + SendCheck.error + "\n";#endifif(BuyFailed != null){BuyFailed(e.PurchasedItem.Id,Unibiller.GetPurchaseCount(e.PurchasedItem),-1);}yield break;}Debug.Log("从服务器获得的ScndCheck"+SendCheck.text);Dictionary<string,object> SendCheckDir = (Dictionary<string, object>)Unibill.Impl.MiniJSON.jsonDecode(SendCheck.text);//SendCheck.text.dictionaryFromJson();//.dictionaryFromJsonDebug.Log(SendCheckDir["status"].ToString());if(SendCheckDir == null){Debug.Log("SendCheckDir "+SendCheckDir);}else if(SendCheckDir["status"].ToString().CompareTo("0") == 0){#if SANDOBX_TESTlogstring += "效验成功\n";#endif// TalkingDataManager.PaySuccess(ISuccess.transactionIdentifier);if(BuySuccess != null){BuySuccess(e.PurchasedItem.Id,Unibiller.GetPurchaseCount(e.PurchasedItem));}}else{#if SANDOBX_TESTlogstring += "效验失败\n";#endifif(BuyFailed != null){BuyFailed(e.PurchasedItem.Id,Unibiller.GetPurchaseCount(e.PurchasedItem),(int)SendCheckDir["status"]);}}}
[Unity]内购插件Unibill相关推荐
- unity内购-Google支付(unity In-App Purchasing)
unity In-App Purchasing 支付 支持二次验证,json解析完之后,把解析出来的参数发给服务器,因为是unity封装的sdk,code参数需要在购买成功之后的回调里给服务器发个in ...
- Unity 之 Mac App Store 内购过程解析(购买非消耗道具 | 恢复购买 | 支付验证)
Unity 之 Mac App Store 内购过程解析(恢复购买) 准备工作 一,具体实现 1.1 场景搭建 1.2 代码实现 1.3 打包设置 二,打包测试 2.1 实现步骤说明 2.2 Mac签 ...
- ios 内购正式环境_iOS内购-部分玩家无法恢复购买
起因是这样,自去年12月份,就陆续有玩家反馈以下问题购买了商品,却无法获得,也无法恢复购买 兑换码无法兑换到商品 重现:在设备1上兑换了A商品,恢复购买和再次免费购买,是无效的,而在设备2上用同一个账 ...
- Unity如何接入应用内购In-AppPurchase
一.前言 很多游戏需要接入内购IAP,对于苹果端,我们直接对接苹果就行了,但是android平台太多,国内,我们需要接入支付宝,微信,或者华为支付,小米支付等.国外,我们需要接入谷歌支付,亚马逊等等, ...
- Unity接入GooglePlay内购V4(源生Android方式)
Unity接GooglePlay In-App Billing坑还是蛮多的,各种坑. 接的方式目前来看有三种: 采用Unity IAP插件,开启Unity的IAP Service 采用Android源 ...
- Unity与IOS内购恢复问题
Unity与IOS内购恢复问题 IOS这方面也接触了一段时间了,发现IOS内购最大的坑了就是恢复内购的问题.在asset store商店上面的所有关于iap的插件,其实都有相应的接口和函数,但是作为刚 ...
- Unity项目添加广告,内购测试并上线APP Store
Ⅰ.添加广告并真机测试 1.用示例广告ID演示Admob Unity 插件 参考(admob官方文字教程) 导入插件包 设置Admob应用ID 示例广告id(测试时务必用示例广告id) 注意导出的ap ...
- 【Unity】Google内购
目录 一.创建空安卓库工程 二.Unity配置 三.注意事项 版本更新注意事项 服务器相关(相关文章如下) 支付相关错误码 https://developer.android.com/google/p ...
- Unity接入苹果内购(IAP)
Unity接入苹果内购(IAP) 前言 苹果支付流程 配置App 配置商品 协议.税务和银行业务 沙盒测试账号 Unity(IAP) 测试 前言 第一次发帖,有点激动嘿嘿!话不多说直接奔主题,项目中需 ...
最新文章
- visual studio code跳转到定义处插件
- 理解OAuth 2.0--转
- 阿里云云治理中心正式上线,助力企业快速云落地
- Scala入门到精通——第十九节 隐式转换与隐式参数(二)
- mysql数据库读写操作_一看就会,MySQL数据库的基本操作(二)
- mac下卸载jdk1.7
- java 建造者实际中的用法_java中j建造者模式详解和使用方法
- Spark UI无法查看到slave节点
- 李宏毅机器学习——无监督学习(四)
- 机器人学导论—机器人相关术语
- 本人常用资源整理(ing...)
- java解析返回报文_Java解析json报文实例解析
- HashMap头插法
- 广州小程序开发公司哪家好?广州小程序开发公司排行前十?
- 对金融基础知识的小总结
- Android-Q显示白平衡
- android.view.ContextThemeWrapper cannot be cast to android.app.Activity
- 做短视频怎么赚钱,盈利模式包括哪些模式,如何做短视频自媒体赚钱
- 芜湖赛宝机器人研究院_中国赛宝官方网站
- 深度优先搜索(DFS)和广度优先搜索(BFS)两种算法c++