因为工作需要,最近一直在研究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相关推荐

  1. unity内购-Google支付(unity In-App Purchasing)

    unity In-App Purchasing 支付 支持二次验证,json解析完之后,把解析出来的参数发给服务器,因为是unity封装的sdk,code参数需要在购买成功之后的回调里给服务器发个in ...

  2. Unity 之 Mac App Store 内购过程解析(购买非消耗道具 | 恢复购买 | 支付验证)

    Unity 之 Mac App Store 内购过程解析(恢复购买) 准备工作 一,具体实现 1.1 场景搭建 1.2 代码实现 1.3 打包设置 二,打包测试 2.1 实现步骤说明 2.2 Mac签 ...

  3. ios 内购正式环境_iOS内购-部分玩家无法恢复购买

    起因是这样,自去年12月份,就陆续有玩家反馈以下问题购买了商品,却无法获得,也无法恢复购买 兑换码无法兑换到商品 重现:在设备1上兑换了A商品,恢复购买和再次免费购买,是无效的,而在设备2上用同一个账 ...

  4. Unity如何接入应用内购In-AppPurchase

    一.前言 很多游戏需要接入内购IAP,对于苹果端,我们直接对接苹果就行了,但是android平台太多,国内,我们需要接入支付宝,微信,或者华为支付,小米支付等.国外,我们需要接入谷歌支付,亚马逊等等, ...

  5. Unity接入GooglePlay内购V4(源生Android方式)

    Unity接GooglePlay In-App Billing坑还是蛮多的,各种坑. 接的方式目前来看有三种: 采用Unity IAP插件,开启Unity的IAP Service 采用Android源 ...

  6. Unity与IOS内购恢复问题

    Unity与IOS内购恢复问题 IOS这方面也接触了一段时间了,发现IOS内购最大的坑了就是恢复内购的问题.在asset store商店上面的所有关于iap的插件,其实都有相应的接口和函数,但是作为刚 ...

  7. Unity项目添加广告,内购测试并上线APP Store

    Ⅰ.添加广告并真机测试 1.用示例广告ID演示Admob Unity 插件 参考(admob官方文字教程) 导入插件包 设置Admob应用ID 示例广告id(测试时务必用示例广告id) 注意导出的ap ...

  8. 【Unity】Google内购

    目录 一.创建空安卓库工程 二.Unity配置 三.注意事项 版本更新注意事项 服务器相关(相关文章如下) 支付相关错误码 https://developer.android.com/google/p ...

  9. Unity接入苹果内购(IAP)

    Unity接入苹果内购(IAP) 前言 苹果支付流程 配置App 配置商品 协议.税务和银行业务 沙盒测试账号 Unity(IAP) 测试 前言 第一次发帖,有点激动嘿嘿!话不多说直接奔主题,项目中需 ...

最新文章

  1. visual studio code跳转到定义处插件
  2. 理解OAuth 2.0--转
  3. 阿里云云治理中心正式上线,助力企业快速云落地
  4. Scala入门到精通——第十九节 隐式转换与隐式参数(二)
  5. mysql数据库读写操作_一看就会,MySQL数据库的基本操作(二)
  6. mac下卸载jdk1.7
  7. java 建造者实际中的用法_java中j建造者模式详解和使用方法
  8. Spark UI无法查看到slave节点
  9. 李宏毅机器学习——无监督学习(四)
  10. 机器人学导论—机器人相关术语
  11. 本人常用资源整理(ing...)
  12. java解析返回报文_Java解析json报文实例解析
  13. HashMap头插法
  14. 广州小程序开发公司哪家好?广州小程序开发公司排行前十?
  15. 对金融基础知识的小总结
  16. Android-Q显示白平衡
  17. android.view.ContextThemeWrapper cannot be cast to android.app.Activity
  18. 做短视频怎么赚钱,盈利模式包括哪些模式,如何做短视频自媒体赚钱
  19. 芜湖赛宝机器人研究院_中国赛宝官方网站
  20. 深度优先搜索(DFS)和广度优先搜索(BFS)两种算法c++

热门文章

  1. civa机器人是什么_【小学英语-Civa机器人】|和Civa机器人一起学习,快乐成长
  2. Java 刷题笔记——singly ListNode
  3. unity初识之Quaternion和旋转
  4. mysql是否truncate分区_MySQL分区管理
  5. 突发新闻实时监控聚合显示方法
  6. 示波器表笔旁边的夹子是什么_示波器探头怎么接?
  7. DSP/SYSBIOS的一点解读
  8. Jena RDF API 使用教程
  9. 工作中的工作心得随时分享(2)
  10. 699指纹识别手机是一种吊打行为