Unity3D:Google支付遇到的坑

接IOS支付的时候很顺利,接谷歌支付的时候走了很多弯路,在这里记录下来:

1,首次发布谷歌支付账号的时候,需要在权限中添加com.android.vending.BILLING。具体是在AndroidManifest中添加

<uses-permission android:name="com.android.vending.BILLING" />

2,只有支付审核通过的包,才能拉起支付信息!!!

3,支付demo可以在编辑器运行,价钱都是0.01,支付会直接调取成功回调:如果走不通,检查下逻辑问题,比如说网络线程里面调用了主逻辑里面的函数之类。

4,支付需要确认回调,否则商品扣款会在三天后返回到玩家账户~~

  //购买成功的回调
    public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs e)
    {       

        SetCurrentProductID(e.purchasedProduct.definition.id);
        ConfirmPendingPurchase();
        Debug.Log("unity receipt:" + e.purchasedProduct.receipt);
        BuySuccess();
        return PurchaseProcessingResult.Pending;
} 

/// <summary>
    /// 确认服务器数据保存成功
    /// </summary>
    /// <param name="productId"></param>
    public void ConfirmPendingPurchase()
    {
        Debug.LogError("Error!!! : unity确认支付完成:" + currentProductId);     
        controller.ConfirmPendingPurchase(controller.products.WithID(currentProductId));
    }

4,对于支付成功返回的数据,Unity提供有解析的方法,即:

MiniJson.JsonDecode

这些代码提供的信息,或许对你接入 AppsFlyer等数据SDK有帮助:

  var receipt = (Dictionary<string, object>)MiniJson.JsonDecode(e.purchasedProduct.receipt);
        var store = (string)receipt["Store"];
        var transactionID = (string)receipt["TransactionID"];
        var payload = (string)receipt["Payload"];
        var details = (Dictionary<string, object>)MiniJson.JsonDecode(payload);
        var receiptJson = (string)details["json"];
        var signature = (string)details["signature"];

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值