Google支付接入时的坑

如需转载请注明出处,谢谢合作。

1,Google支付时客户端传给Google的OrderID,在使用purchase.getOrderID()时得到的不是客户端传给Google的而是Google自己生成的,用getDeveloperPayLoad()得到的才是客户端的OrderId。相当于developerPayLoad()是Google提供给开发人员用来存储开发人员想要存储数据的。

2Google支付时在登录的时候必须创建一个activity,而这个activity并不能继承unityPlayerActivity,所以只能再新建一个登录页面用来承载登录的相关信息,并在初始化的时候把登录按钮绑定到这个页面,this.findViewByID(R.id.btn).setOnClickListener(this).

3Android Studio 打包出来的是一个.arr文件,需要把libs/.arr文件删除,不然会引用冲突。

4在Build项目的时候需要在Unity中把以前的SDK的.jar文件禁用掉。找到以前SDK的.jar文件,取消勾选Android这个选项。

5Google支付需要在支付完成的时候进行消耗商品,消耗的时候要得到所有支付完成的商品,这时需要把inventory这个类中的GetAllPurchase()方法改成Public,至于为甚要得到所有支付完成的商品是为了防止漏单,因为有些玩家在支付后就直接退出了,这样游戏服务器并没有来得及返回数据导致玩家支付成功但是没有得到商品,所以就需要在初始化SDK的时候遍历一下所有的Purchase再把得到的相关数据发送给游戏服务器验证。

6只接入的最后报了一个“缺少Handler的Getprepare()的调用”,则在IabHelper类中ConsumeAsyncInternal方法中加入final Handler handler=new Handler(Looper.getMainLooper())。

7在Consume时不需要提前把商品信息保存到本地,Google会帮你保存到Inventory中,初始化SDK的时候可以获得,通过调用mIabHelper.queryInventoryAsync()可以得到,

8具体的支付流程:

https://developer.android.com/training/in-app-billing/purchase-iab-products.html可以参考谷歌官方文档。

猜你喜欢

转载自blog.csdn.net/tc3819171/article/details/52760372