示例#1
0
    private void VerifyItemTransaction(object source = null, ElapsedEventArgs e = null)
    {
        if (TransactionTemp.Count > 0)
        {
            CurrentVerifyTransaction = TransactionTemp[0];

            StartTimeoutTimer();

            JsonData paramObj = new JsonData();
            paramObj["userID"]        = CurrentVerifyTransaction.userID;
            paramObj["receipt"]       = CurrentVerifyTransaction.payLoad;
            paramObj["transactionID"] = CurrentVerifyTransaction.transactionID;
            paramObj["price"]         = CurrentVerifyTransaction.price;

            IAPRpcProxy.VerifyTransaction(paramObj, VerifyTransactionResultCallback);
        }
        else
        {
            //!!! 全部漏单处理完毕

            string logStr = "全部漏单处理完毕";
            //if (Manager) Manager.log(logStr);
            LogManager.Log(logStr);

            IsRuning = false;

            StopRetryTimer(true);
        }
    }
示例#2
0
    /// <summary>
    /// 本地添加一条订单记录, 防止漏单
    /// </summary>
    /// <param name="userID"></param>
    /// <param name="payLoad"></param>
    public void AddItemIAPTransaction(string userID, string transactionID, string payLoad, string price)
    {
        string logStr = "";

        if (userID == null || userID == "" || transactionID == null || transactionID == "" || payLoad == null || payLoad == "" || price == null || price == "")
        {
            logStr = "数据错误,无法添加订单记录: 用户ID:" + userID + ", 订单ID:" + transactionID + ", 收据:" + payLoad + ", 价钱:" + price;
            //if (Manager) Manager.log(logStr);
            LogManager.Log(logStr);
            return;
        }
        IAPVerifyTempItem Transaction = new IAPVerifyTempItem();

        Transaction.userID        = userID;
        Transaction.transactionID = transactionID;
        Transaction.payLoad       = payLoad;
        Transaction.price         = price;
        TransactionTemp.Add(Transaction);

        SaveDataUtils.Save <IAPVerifyProxy>();

        logStr = "本地添加一条订单记录, 防止漏单: 用户ID:" + userID + ", 订单ID:" + transactionID + ", 当前有" + TransactionTemp.Count + "条待处理订单(漏单)";
        //if (Manager) Manager.log(logStr);
        LogManager.Log(logStr);
    }
示例#3
0
    /// <summary>
    /// 从本地取出
    /// </summary>
    /// <param name="json"></param>
    public void LoadFromJson(string json)
    {
        if (string.IsNullOrEmpty(json) || IsRuning)
        {
            return;
        }
        if (TransactionTemp != null)
        {
            TransactionTemp.Clear();
        }
        else
        {
            TransactionTemp = new List <IAPVerifyTempItem>();
        }
        JsonData data = JsonMapper.ToObject(json);

        foreach (JsonData tempData in data)
        {
            IAPVerifyTempItem item = new IAPVerifyTempItem();
            item.userID        = tempData.TryGetString("UserID");
            item.transactionID = tempData.TryGetString("TransactionID");
            item.payLoad       = tempData.TryGetString("PayLoad");
            item.price         = tempData.TryGetString("price");
            TransactionTemp.Add(item);
        }
        if (TransactionTemp.Count > 0)
        {
            string logStr = "开始处理本地" + TransactionTemp.Count + "条漏单:" + json;
            //if (Manager) Manager.log(logStr);
            LogManager.Log(logStr);

            IsRuning = true;
            StartRetry(false);
        }
    }
示例#4
0
    /// <summary>
    /// 验证结果
    /// </summary>
    /// <param name="rpcResultObj"></param>
    private void VerifyTransactionResultCallback(SnapRpcDataVO rpcResultObj)
    {
        StopTimeoutTimer();
        JsonData data = rpcResultObj.data;

        if (rpcResultObj.code == RpcDataCode.RequestFinish)
        {
            string logStr = "验证完成, 有效交易:" + rpcResultObj.code + "(" + rpcResultObj.message + ")";
            if (Manager)
            {
                Manager.log(logStr);
            }
            LogManager.Log(logStr);

            if (Manager)
            {
                Manager.BuyFinishGoToGameLoic();
            }
        }
        else
        {
            string logStr = "验证失败, 无效交易:" + rpcResultObj.code + "(" + rpcResultObj.message + ")";
            if (Manager)
            {
                Manager.log(logStr);
            }
            LogManager.Log(logStr);
        }

        //!!! Item漏单处理完毕

        //收据验证完成, 清除本地
        RemoveItemIAPTransaction(CurrentVerifyTransaction.userID, CurrentVerifyTransaction.transactionID);
        CurrentVerifyTransaction = null;
        //继续巡查
        VerifyItemTransaction();
        if (Manager)
        {
            Manager.clear();
        }
    }