Ejemplo n.º 1
0
    public void OnPurchaseFailed(Product product, PurchaseFailureReason p)
    {
        Debug.Log(string.Format("IAP::OnPurchaseFailed PurchaseFailureReason:{0}", p));
        int    purchaseType = 0;
        string udid         = "";

#if UNITY_IOS || UNITY_IPHONE
        purchaseType = 1;   //Apple Store  EPlatformType.EPlatformType_AppStore
        udid         = IOSUtil.iosGetOpenUDID();
#elif UNITY_ANDROID
        purchaseType = 2;   //Google Play  EPlatformType.EPlatformType_GooglePlay
        udid         = AndroidUtil.GetOpenUDID();
#endif
        var transactionID = product.transactionID;
        var pid           = product.definition.id;

        //Write cache
        FileBilling.Instance.ReadFile();
        FileBilling.CReceiptInfo entry = new FileBilling.CReceiptInfo();
        entry.RoleId        = _roleId;
        entry.ProductId     = pid;
        entry.BillingType   = purchaseType;
        entry.IsSucceed     = false;
        entry.TransactionId = transactionID;
        FileBilling.Instance.Update(purchaseType, entry);
        FileBilling.Instance.WriteFile();

        PostVerifyData(_roleId, _roleId, purchaseType, pid, transactionID, udid, "", "", false, false);

        // Callback
        PURCHASE_INFO info = new PURCHASE_INFO();
        info.iBillingType     = purchaseType;
        info.strTransactionId = product.transactionID;
        _fnPurchaseCallback(false, info);
    }
Ejemplo n.º 2
0
    public static int DoFillBillTest(IntPtr L)
    {
        int       count = LuaDLL.lua_gettop(L);
        const int nRet  = 0;

        if (count == 0)
        {
            Debug.Log("Read DoFillBillTest=======================");
            FileBilling.Instance.ReadFile();
            var entry = FileBilling.Instance.Get(1);
            if (entry != null)
            {
                Debug.Log(string.Format("Read Bill : {0}", entry.Receipt));
            }
        }
        else if (count == 1 && LuaScriptMgr.CheckTypes(L, 1, typeof(string)))
        {
            string strReceipt = LuaScriptMgr.GetString(L, 1);

            FileBilling.Instance.ReadFile();
            FileBilling.CReceiptInfo entry = new FileBilling.CReceiptInfo();
            entry.BillingType = 1;
            entry.Receipt     = strReceipt;
            FileBilling.Instance.Update(1, entry);
            FileBilling.Instance.WriteFile();

            Debug.Log("Write DoFillBillTest======================");
        }
        else
        {
            LogParamError("DoFillBillTest", count);
        }
        return(GameUtilWrap.CheckReturnNum(L, count, nRet));
    }
Ejemplo n.º 3
0
    public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs e)
    {
        //获取并解析你需要上传的数据。解析成string类型
        var wrapper = (Dictionary <string, object>)MiniJson.JsonDecode(e.purchasedProduct.receipt);

        if (null == wrapper)
        {
            return(PurchaseProcessingResult.Complete);
        }
        var store = (string)wrapper ["Store"];
        //下面的payload 即为IOS的验证商品信息的数据。即我们需要上传的部分。
        var payload       = (string)wrapper ["Payload"];   // For Apple this will be the base64 encoded ASN.1 receipt
        var pid           = e.purchasedProduct.definition.id;
        var transactionID = e.purchasedProduct.transactionID;

        int    purchaseType = 0;
        string receipt      = "";
        string udid         = OSUtility.GetOpenUDID();
        string signature    = "";

#if UNITY_IOS || UNITY_IPHONE
        purchaseType = 1;   //Apple Store  EPlatformType.EPlatformType_AppStore
        receipt      = payload;

        Debug.Log(string.Format("PID = {0} Payload = {1}", pid, receipt));
#elif UNITY_ANDROID
        purchaseType = 2;   //Google Play  EPlatformType.EPlatformType_GooglePlay

        var gpDetails = (Dictionary <string, object>)MiniJson.JsonDecode(payload);
        receipt   = (string)gpDetails["signature"];     // 服务器待验证 签名数据
        signature = (string)gpDetails["json"];          // 服务器待验证 订单信息
#endif

        //Write cache
        FileBilling.Instance.ReadFile();
        FileBilling.CReceiptInfo entry = new FileBilling.CReceiptInfo();
        entry.RoleId        = _roleId;
        entry.ProductId     = pid;
        entry.IsSucceed     = true;
        entry.BillingType   = purchaseType;
        entry.Receipt       = payload;
        entry.TransactionId = transactionID;
        FileBilling.Instance.Update(purchaseType, entry);
        FileBilling.Instance.WriteFile();

        // Post receipt for verify
        bool bPostSucceed = PostVerifyData(_roleId, _roleId, purchaseType, pid, transactionID, udid, receipt, signature, false, true);

        PURCHASE_INFO info = new PURCHASE_INFO();
        info.iBillingType     = purchaseType;
        info.strTransactionId = transactionID;
        info.strProductId     = pid;
        info.strReceipt       = receipt;
        _fnPurchaseCallback(true, info);

        return(PurchaseProcessingResult.Complete);
    }