示例#1
0
        public int AlipayCallback(AlipayRechargeRecord alipayRecord)
        {
            StoneOrderRunnable runnable = FindOrderByOrderName(alipayRecord.out_trade_no);
            int result = CheckOrderStateBeforePay(runnable, alipayRecord.out_trade_no, alipayRecord.user_name, alipayRecord.value_rmb);

            if (result == OperResult.RESULTCODE_ORDER_BUY_SUCCEED)
            {
                return(result);
            }
            if (result != OperResult.RESULTCODE_TRUE)
            {
                LogHelper.Instance.AddInfoLog("玩家[" + alipayRecord.user_name + "] 支付宝购买矿石失败。原因为:" + OperResult.GetMsg(result) + "。支付宝信息:" + alipayRecord.ToString() + (runnable == null ? "" : "LockedByUserName:" + runnable.LockedOrder.LockedByUserName));

                return(result);
            }

            string sellerUserName = "";
            var    trans          = MyDBHelper.Instance.CreateTrans();

            try
            {
                DBProvider.AlipayRecordDBProvider.SaveAlipayRechargeRecord(alipayRecord, trans);

                //订单处理
                var buyOrder = runnable.Pay(trans);
                if (buyOrder == null)
                {
                    trans.Rollback();

                    LogHelper.Instance.AddInfoLog("支付宝支付矿石订单失败1。原因为:订单支付失败。alipayRecord: " + alipayRecord.ToString());
                    //如果支付失败,先将订单设为异常。
                    this.SetStoneOrderPayException(alipayRecord.user_name, alipayRecord.out_trade_no);
                    return(OperResult.RESULTCODE_FALSE);
                }

                sellerUserName = buyOrder.StonesOrder.SellerUserName;

                //更新用户信息
                result = PlayerController.Instance.PayStoneOrder(true, alipayRecord.user_name, buyOrder, trans);
                if (result != OperResult.RESULTCODE_TRUE)
                {
                    trans.Rollback();

                    PlayerController.Instance.RefreshFortune(alipayRecord.user_name);
                    PlayerController.Instance.RefreshFortune(sellerUserName);
                    LogHelper.Instance.AddInfoLog("支付宝支付矿石订单失败2。原因为:" + OperResult.GetMsg(result) + "。alipayRecord: " + alipayRecord.ToString());

                    //如果支付失败,先将订单设为异常。
                    this.SetStoneOrderPayException(alipayRecord.user_name, alipayRecord.out_trade_no);
                    return(result);
                }
                this.RemoveRecord(buyOrder.StonesOrder.OrderNumber);

                trans.Commit();

                LogHelper.Instance.AddInfoLog("玩家[" + alipayRecord.user_name + "] 用支付宝成功购买了,玩家[" + runnable.SellOrder.SellerUserName + "] 出售的矿石" + runnable.SellOrder.SellStonesCount + ", no: " + runnable.SellOrder.OrderNumber);
                AddLogNotifyPlayer(alipayRecord.user_name, runnable.OrderNumber, buyOrder);

                return(OperResult.RESULTCODE_TRUE);
            }
            catch (Exception exc)
            {
                result = OperResult.RESULTCODE_EXCEPTION;
                trans.Rollback();

                PlayerController.Instance.RefreshFortune(alipayRecord.user_name);
                if (!string.IsNullOrEmpty(sellerUserName))
                {
                    PlayerController.Instance.RefreshFortune(sellerUserName);
                }
                //如果支付失败,先将订单设为异常。
                this.SetStoneOrderPayException(alipayRecord.user_name, alipayRecord.out_trade_no);
                LogHelper.Instance.AddErrorLog("玩家[" + alipayRecord.user_name + "] 支付宝购买矿石回调异常. 支付宝信息: " + alipayRecord.ToString(), exc);
                return(result);
            }
            finally
            {
                if (trans != null)
                {
                    trans.Dispose();
                }
            }
        }
示例#2
0
        public int AlipayCallback(AlipayRechargeRecord alipayRecord)
        {
            GoldCoinRechargeRecord rechargeRecord = FindRecordByOrderNumber(alipayRecord.out_trade_no);

            if (rechargeRecord == null)
            {
                rechargeRecord = DBProvider.GoldCoinRecordDBProvider.GetGoldCoinRechargeRecord(alipayRecord.user_name, alipayRecord.out_trade_no);
                if (rechargeRecord != null)
                {
                    return(OperResult.RESULTCODE_ORDER_BUY_SUCCEED);
                }

                LogHelper.Instance.AddInfoLog("玩家[" + alipayRecord.user_name + "] 支付宝购买金币回调,找不到订单。支付宝信息:" + alipayRecord.ToString());
                return(OperResult.RESULTCODE_ORDER_NOT_EXIST);
            }
            CustomerMySqlTransaction myTrans = null;

            try
            {
                int value = OperResult.RESULTCODE_FALSE;
                myTrans = MyDBHelper.Instance.CreateTrans();

                alipayRecord.user_name = rechargeRecord.UserName;
                if (alipayRecord.out_trade_no == rechargeRecord.OrderNumber &&
                    alipayRecord.value_rmb >= rechargeRecord.SpendRMB)
                {
                    rechargeRecord.PayTime = DateTime.Now;
                    value = PlayerController.Instance.RechargeGoldCoinByAlipay(rechargeRecord.UserName, alipayRecord.total_fee, (int)rechargeRecord.SpendRMB, (int)(rechargeRecord.SpendRMB * GlobalConfig.GameConfig.RMB_GoldCoin), myTrans);
                    if (value == OperResult.RESULTCODE_TRUE)
                    {
                        DBProvider.GoldCoinRecordDBProvider.SaveFinalGoldCoinRechargeRecord(rechargeRecord, myTrans);
                        DBProvider.GoldCoinRecordDBProvider.DeleteTempGoldCoinRechargeTradeRecord(rechargeRecord.OrderNumber, myTrans);
                        this.RemoveRecord(alipayRecord.out_trade_no);

                        string tokenBuyer = ClientManager.GetToken(rechargeRecord.UserName);
                        if (GoldCoinOrderPaySucceedNotify != null)
                        {
                            GoldCoinOrderPaySucceedNotify(tokenBuyer, rechargeRecord.OrderNumber);
                        }

                        LogHelper.Instance.AddInfoLog("玩家[" + alipayRecord.user_name + "] 成功充值" + rechargeRecord.GainGoldCoin + "金币。ano: " + alipayRecord.alipay_trade_no);
                    }
                    else
                    {
                        LogHelper.Instance.AddInfoLog("玩家[" + alipayRecord.user_name + "] 金币充值失败,原因为:" + OperResult.GetMsg(value) + "。ano: " + alipayRecord.alipay_trade_no);
                    }
                }

                DBProvider.AlipayRecordDBProvider.SaveAlipayRechargeRecord(alipayRecord, myTrans);

                myTrans.Commit();
                return(value);
            }
            catch (Exception exc)
            {
                myTrans.Rollback();
                PlayerController.Instance.RefreshFortune(alipayRecord.user_name);

                LogHelper.Instance.AddErrorLog("玩家[" + alipayRecord.user_name + "] 支付宝金币充值,回调异常。AlipayInfo : " + alipayRecord.ToString(), exc);
                return(OperResult.RESULTCODE_EXCEPTION);
            }
            finally
            {
                if (myTrans != null)
                {
                    myTrans.Dispose();
                }
            }
        }
示例#3
0
        /// <summary>
        /// 此处只需处理RMB支付。Alipay支付的情况,在锁定订单时已经将支付链接返回,客户端可直接链接支付。
        /// </summary>
        /// <param name="buyer"></param>
        /// <param name="orderNumber"></param>
        /// <param name="rmb"></param>
        /// <returns></returns>
        public int PayStoneOrderByRMB(string buyerUserName, string orderNumber, decimal rmb)
        {
            int    result         = OperResult.RESULTCODE_FALSE;
            var    trans          = MyDBHelper.Instance.CreateTrans();
            string sellerUserName = "";

            try
            {
                StoneOrderRunnable runnable = FindOrderByOrderName(orderNumber);
                result = CheckOrderStateBeforePay(runnable, orderNumber, buyerUserName, rmb);
                if (result == OperResult.RESULTCODE_ORDER_BUY_SUCCEED)
                {
                    return(result);
                }
                if (result != OperResult.RESULTCODE_TRUE)
                {
                    LogHelper.Instance.AddInfoLog("玩家[" + buyerUserName + "] 灵币购买矿石失败。原因为:" + OperResult.GetMsg(result) + "。" + (runnable == null ? "" : "LockedByUserName:" + runnable.LockedOrder.LockedByUserName));
                    return(result);
                }

                result = PlayerController.Instance.CheckSellStone_BeforeBuy(buyerUserName, orderNumber, rmb);
                if (result != OperResult.RESULTCODE_TRUE)
                {
                    return(result);
                }

                var buyOrder = runnable.Pay(trans);
                if (buyOrder == null)
                {
                    trans.Rollback();
                    LogHelper.Instance.AddInfoLog("灵币支付矿石订单失败1。原因为:" + OperResult.GetMsg(result) + "。OrderNumber: " + orderNumber + "; buyerUserName:"******"灵币支付矿石订单失败2。原因为:" + OperResult.GetMsg(result) + "。OrderNumber: " + orderNumber + "; buyerUserName:"******"PayStoneTrade Exception. OrderNumber: " + orderNumber, exc);
                return(result);
            }
            finally
            {
                if (trans != null)
                {
                    trans.Dispose();
                }
            }
        }
        public int AlipayCallback(AlipayRechargeRecord alipay, RemoteServerType serverType)
        {
            int result = OperResult.RESULTCODE_FALSE;

            MyDBHelper.Instance.TransactionDataBaseOper(myTrans =>
            {
                DBProvider.AlipayRecordDBProvider.SaveAlipayRechargeRecord(alipay, myTrans);

                LogHelper.Instance.AddInfoLog("玩家 [" + alipay.user_name + "] 支付宝充值购买远程协助服务," + serverType.ToString() + ", Alipay:" + alipay.ToString());
                result = OperResult.RESULTCODE_TRUE;
                return(result);
            },
                                                        exc =>
            {
                if (exc != null)
                {
                    LogHelper.Instance.AddErrorLog("远程协助1服务付款回调异常,AlipayInfo: " + alipay.ToString() + "; serverType: " + serverType.ToString(), exc);
                }
                result = OperResult.RESULTCODE_EXCEPTION;
            });
            if (result != OperResult.RESULTCODE_TRUE)
            {
                return(result);
            }

            var serverItem = this.GetUserRemoteServerItem(serverType);

            if (serverItem == null)
            {
                LogHelper.Instance.AddInfoLog("玩家 [" + alipay.user_name + "] 支付宝充值购买远程协助服务失败1,原因为:" + OperResult.GetMsg(OperResult.RESULTCODE_BUYREMOTESERVER_FAILED_SERVERTYPEERROR));
                return(OperResult.RESULTCODE_BUYREMOTESERVER_FAILED_SERVERTYPEERROR);
            }
            if (alipay.total_fee != serverItem.PayMoneyYuan)
            {
                LogHelper.Instance.AddInfoLog("玩家 [" + alipay.user_name + "] 支付宝充值购买远程协助服务失败2,原因为:" + OperResult.GetMsg(OperResult.RESULTCODE_BUYREMOTESERVER_FAILED_PAYEDMONEYERROR));
                return(OperResult.RESULTCODE_BUYREMOTESERVER_FAILED_PAYEDMONEYERROR);
            }

            var playerRunner = PlayerController.Instance.GetRunnable(alipay.user_name);

            if (playerRunner == null)
            {
                LogHelper.Instance.AddInfoLog("玩家 [" + alipay.user_name + "] 支付宝充值购买远程协助服务失败3,原因为:" + OperResult.GetMsg(OperResult.RESULTCODE_USER_NOT_EXIST));
                return(OperResult.RESULTCODE_USER_NOT_EXIST);
            }

            int getShoppingCredits = (int)alipay.total_fee * GlobalConfig.GameConfig.RemoteServerRechargeReturnShoppingCreditsTimes;

            MyDBHelper.Instance.TransactionDataBaseOper(myTrans =>
            {
                result = playerRunner.BuyRemoteServer(alipay, serverType, myTrans);
                if (result != OperResult.RESULTCODE_TRUE)
                {
                    LogHelper.Instance.AddInfoLog("玩家 [" + alipay.user_name + "] 支付宝充值购买远程协助服务失败4,原因为:" + OperResult.GetMsg(result));
                    return(result);
                }

                //玩家购买远程服务充值三层返利,
                if (!string.IsNullOrEmpty(playerRunner.BasePlayer.SimpleInfo.ReferrerUserName))
                {
                    //上一级
                    var parent1PlayerRunner = PlayerController.Instance.GetRunnable(playerRunner.BasePlayer.SimpleInfo.ReferrerUserName);
                    if (parent1PlayerRunner != null)
                    {
                        parent1PlayerRunner.BuyShoppingCreditAwardParent(getShoppingCredits * GlobalConfig.GameConfig.BuyRemoteServiceAwardRMBConfig[0], myTrans);

                        //上二级
                        if (!string.IsNullOrEmpty(parent1PlayerRunner.BasePlayer.SimpleInfo.ReferrerUserName))
                        {
                            var parent2PlayerRunner = PlayerController.Instance.GetRunnable(parent1PlayerRunner.BasePlayer.SimpleInfo.ReferrerUserName);
                            if (parent2PlayerRunner != null)
                            {
                                parent2PlayerRunner.BuyShoppingCreditAwardParent(getShoppingCredits * GlobalConfig.GameConfig.BuyRemoteServiceAwardRMBConfig[1], myTrans);

                                //上三级
                                if (!string.IsNullOrEmpty(parent2PlayerRunner.BasePlayer.SimpleInfo.ReferrerUserName))
                                {
                                    var parent3PlayerRunner = PlayerController.Instance.GetRunnable(parent2PlayerRunner.BasePlayer.SimpleInfo.ReferrerUserName);
                                    if (parent3PlayerRunner != null)
                                    {
                                        parent3PlayerRunner.BuyShoppingCreditAwardParent(getShoppingCredits * GlobalConfig.GameConfig.BuyRemoteServiceAwardRMBConfig[2], myTrans);
                                    }
                                }
                            }
                        }
                    }
                }

                UserRemoteServerBuyRecord buyRecord = new UserRemoteServerBuyRecord()
                {
                    UserID              = playerRunner.BasePlayer.SimpleInfo.UserID,
                    UserName            = playerRunner.BasePlayer.SimpleInfo.UserLoginName,
                    OrderNumber         = alipay.out_trade_no,
                    BuyRemoteServerTime = new MyDateTime(DateTime.Now),
                    ServerType          = serverType,
                    PayMoneyYuan        = (int)alipay.total_fee,
                    GetShoppingCredits  = getShoppingCredits
                };
                DBProvider.UserRemoteServerDBProvider.SaveUserRemoteServerBuyRecord(buyRecord, myTrans);

                LogHelper.Instance.AddInfoLog("玩家 [" + alipay.user_name + "] 成功购买远程协助服务," + serverType.ToString() + ", Alipay:" + alipay.ToString());
                result = OperResult.RESULTCODE_TRUE;
                return(result);
            },
                                                        exc =>
            {
                if (exc != null)
                {
                    LogHelper.Instance.AddErrorLog("远程协助服务付款回调异常,AlipayInfo: " + alipay.ToString() + "; serverType: " + serverType.ToString(), exc);
                }
                result = OperResult.RESULTCODE_EXCEPTION;
            });

            return(result);
        }
        public int AlipayCallback(AlipayRechargeRecord alipayRecord)
        {
            MinesBuyRecord buyRecord = FindRecordByOrderNumber(alipayRecord.out_trade_no);

            if (buyRecord == null)
            {
                buyRecord = DBProvider.MineRecordDBProvider.GetMineTradeRecord(alipayRecord.user_name, alipayRecord.out_trade_no);
                if (buyRecord != null)
                {
                    return(OperResult.RESULTCODE_ORDER_BUY_SUCCEED);
                }
                LogHelper.Instance.AddInfoLog("玩家[" + alipayRecord.user_name + "] 支付宝购买矿山回调,找不到订单。支付宝信息:" + alipayRecord.ToString());
                return(OperResult.RESULTCODE_ORDER_NOT_EXIST);
            }
            CustomerMySqlTransaction myTrans = null;

            try
            {
                int result = OperResult.RESULTCODE_FALSE;
                myTrans = MyDBHelper.Instance.CreateTrans();

                //alipayRecord.user_name = buyRecord.UserName;
                if (alipayRecord.value_rmb >= buyRecord.SpendRMB)
                {
                    result = PlayerController.Instance.BuyMineByAlipay(buyRecord, alipayRecord.total_fee, myTrans);
                    if (result == OperResult.RESULTCODE_TRUE)
                    {
                        buyRecord.PayTime = DateTime.Now;
                        DBProvider.MineRecordDBProvider.SaveFinalMineTradeRecord(buyRecord, myTrans);
                        DBProvider.MineRecordDBProvider.DeleteTempMineTradeRecord(buyRecord.OrderNumber, myTrans);
                        this.RemoveRecord(alipayRecord.out_trade_no);

                        string tokenBuyer = ClientManager.GetToken(buyRecord.UserName);

                        if (!string.IsNullOrEmpty(tokenBuyer) && MineOrderPaySucceedNotify != null)
                        {
                            MineOrderPaySucceedNotify(tokenBuyer, buyRecord.OrderNumber);
                        }
                        LogHelper.Instance.AddInfoLog("玩家[" + alipayRecord.user_name + "] 成功购买" + buyRecord.GainMinesCount + "座矿山。ano: " + alipayRecord.alipay_trade_no);
                    }
                    else
                    {
                        LogHelper.Instance.AddInfoLog("玩家[" + alipayRecord.user_name + "] 购买矿山失败,原因为:" + OperResult.GetMsg(result) + "。ano: " + alipayRecord.alipay_trade_no);
                    }
                }

                DBProvider.AlipayRecordDBProvider.SaveAlipayRechargeRecord(alipayRecord, myTrans);

                myTrans.Commit();
                PlayerActionController.Instance.AddLog(buyRecord.UserName, MetaData.ActionLog.ActionType.BuyMine, buyRecord.GainMinesCount,
                                                       "增加了 " + buyRecord.GainStonesReserves.ToString() + " 的矿石储量");

                return(result);
            }
            catch (Exception exc)
            {
                myTrans.Rollback();
                PlayerController.Instance.RefreshFortune(alipayRecord.user_name);

                LogHelper.Instance.AddErrorLog("玩家[" + alipayRecord.user_name + "] 支付宝金币充值,回调异常。AlipayInfo : " + alipayRecord.ToString(), exc);
                return(OperResult.RESULTCODE_EXCEPTION);
            }
            finally
            {
                if (myTrans != null)
                {
                    myTrans.Dispose();
                }
            }
        }
示例#6
0
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            SortedDictionary <string, string> sPara = GetRequestGet();

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                Notify aliNotify = new Notify();

                bool verifyResult;
#if TestAlipay
                verifyResult = true;
#else
                verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"], " Return ");
#endif

                string userName = Request.QueryString["extra_common_param"];

                //SuperMinersWeb.AlipayCode.Core.LogResult(userName, DateTime.Now.ToString() + " ------ Return End Pay 1.  verifyResult:" + verifyResult);


                if (verifyResult)//验证成功
                {
                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    //请在这里加上商户的业务逻辑程序代码


                    //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                    //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表

                    //商户订单号
                    string out_trade_no = Request.QueryString["out_trade_no"];

                    //支付宝交易号
                    string trade_no = Request.QueryString["trade_no"];

                    //交易状态
                    string trade_status = Request.QueryString["trade_status"];


                    if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS")
                    {
                        DateTime timeNow = DateTime.Now;
                        //判断该笔订单是否在商户网站中已经做过处理
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序
                        string  buyer_email = Request.QueryString["buyer_email"];
                        decimal total_fee;
                        if (!decimal.TryParse(Request.QueryString["total_fee"], out total_fee))
                        {
                            XunLinMineRemoteControlWeb.AlipayCode.Core.LogResult(userName, DateTime.Now.ToString() + " ------ Return End Pay 2 Failed, 充值金额错误.  userName:" + userName + "; out_trade_no=" + out_trade_no + ";trade_status=" + trade_status + ";total_fee=" + total_fee);

                            //打印页面
                            Response.Write("充值金额错误<br />");
                            return;
                        }
                        //int result = WcfClient.Instance.CheckAlipayOrderBeHandled(userName, out_trade_no, trade_no, total_fee, buyer_email, timeNow.ToString());

                        //SuperMinersWeb.AlipayCode.Core.LogResult(userName, DateTime.Now.ToString() + " ------ Return End Pay 2.1.  CheckAlipayOrderBeHandled:" + result);
                        //if (result == OperResult.RESULTCODE_TRUE)
                        //{
                        //    //表示该订单已经被处理过
                        //    //打印页面
                        //    Response.Write("操作成功<br />本页面将在3秒后关闭");
                        //    Response.Write("<script>setTimeout(' window.opener = null;window.close();',3000);</script>");

                        //    return;
                        //}

                        int result = WcfClient.Instance.AlipayCallback(userName, out_trade_no, trade_no, total_fee, buyer_email, timeNow.ToString());
                        if (result == OperResult.RESULTCODE_EXCEPTION)
                        {
                            result = WcfClient.Instance.AlipayCallback(userName, out_trade_no, trade_no, total_fee, buyer_email, timeNow.ToString());
                        }
                        //SuperMinersWeb.AlipayCode.Core.LogResult(userName, DateTime.Now.ToString() + " ------ Return End Pay 3 Result: " + result + ".  userName:" + userName + "; out_trade_no=" + out_trade_no + ";trade_no=" + trade_no + ";trade_status=" + trade_status + ";total_fee=" + total_fee);

                        if (result != OperResult.RESULTCODE_TRUE && result != OperResult.RESULTCODE_ORDER_BUY_SUCCEED)
                        {
                            string message = "支付成功,但是服务器操作失败,原因为:" + OperResult.GetMsg(result) + "。请联系客服,并将以下信息发送给客服。\r\n商品订单号:" + out_trade_no + ",支付宝订单号:" + trade_no + ",付款账户:" + buyer_email;
                            DBOper.AddExceptionAlipayRechargeRecord(userName, out_trade_no, trade_no, total_fee, buyer_email, timeNow.ToString());
                            XunLinMineRemoteControlWeb.AlipayCode.Core.LogResult(userName, message);

                            Response.Write(message);
                            return;
                        }
                    }
                    else
                    {
                        //SuperMinersWeb.AlipayCode.Core.LogResult(userName, DateTime.Now.ToString() + " ------ Return End Pay 4 Failed.  userName:" + userName + "; out_trade_no=" + out_trade_no + ";trade_status=" + trade_status);

                        Response.Write("trade_status=" + trade_status);
                    }

                    //打印页面
                    Response.Write("操作成功<br />本页面将在3秒后关闭");
                    Response.Write("<script>setTimeout(' window.opener = null;window.close();',3000);</script>");

                    //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——

                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
                else//验证失败
                {
                    Response.Write("支付失败");
                }
            }
            else
            {
                Response.Write("无返回参数");
            }
        }
        catch (Exception exc)
        {
            XunLinMineRemoteControlWeb.AlipayCode.Core.LogResult("", DateTime.Now.ToString() + " ------ Return Exception: " + exc.Message + ". \r\n" + exc.Source);
        }
    }
        void Client_DelegateBuyStoneCompleted(object sender, Wcf.Clients.WebInvokeEventArgs <MetaData.OperResultObject> e)
        {
            try
            {
                App.BusyToken.CloseBusyWindow();

                if (e.Error != null)
                {
                    LogHelper.Instance.AddErrorLog("Client_DelegateBuyStone Server Exception", e.Error);
                    return;
                }
                if (e.UserState == null)
                {
                    return;
                }
                PayType paytype = (PayType)e.UserState;

                App.StackStoneVMObject.AsyncGetAllNotFinishedBuyOrders();
                App.UserVMObject.AsyncGetPlayerInfo();

                if (e.Result.OperResultCode == OperResult.RESULTCODE_TRUE)
                {
                    if (paytype == PayType.Alipay)
                    {
                        MyWebPage.ShowMyWebPage(e.Result.Message);
                        MyMessageBox.ShowInfo("请在弹出的网页中,登录支付宝进行付款。");

                        if (!AlipayPaySucceed)
                        {
                            var payResult = MyMessageBox.ShowAlipayPayQuestion();
                            if (payResult == MessageBoxAlipayPayQuestionResult.Succeed)
                            {
                                App.UserVMObject.AsyncGetPlayerInfo();

                                //if (!AlipayPaySucceed)
                                //{
                                //    System.Windows.Forms.DialogResult result = MyMessageBox.ShowQuestionOKCancel("没有接收到支付宝付款信息。如确实付款,请点击【确定】,将对订单进行申诉,同时联系管理员进行处理,否则请点击【取消】。注意:三次恶意订单申诉,请被永久封号。");
                                //    if (result == System.Windows.Forms.DialogResult.OK)
                                //    {
                                //        App.StoneOrderVMObject.AsyncSetStoneOrderPayException(LockedOrder.OrderNumber);
                                //    }
                                //}
                            }
                            else if (payResult == MessageBoxAlipayPayQuestionResult.Failed)
                            {
                                MyWebPage.ShowMyWebPage(e.Result.Message);
                                MyMessageBox.ShowInfo("请在弹出的网页中,登录支付宝进行付款。");
                                return;
                            }
                        }
                    }
                    else
                    {
                        MyMessageBox.ShowInfo("挂单成功");
                    }
                }
                else
                {
                    MyMessageBox.ShowInfo("挂单失败,原因为:" + OperResult.GetMsg(e.Result.OperResultCode));
                }
            }
            catch (Exception exc)
            {
                LogHelper.Instance.AddErrorLog("Client_DelegateBuyStone Exception", exc);
            }
        }
示例#8
0
        void Client_BuyMineCompleted(object sender, Wcf.Clients.WebInvokeEventArgs <TradeOperResult> e)
        {
            try
            {
                if (e.Cancelled)
                {
                    return;
                }

                if (e.Error != null || e.Result == null)
                {
                    MyMessageBox.ShowInfo("访问服务器失败。");
                    return;
                }

                TradeOperResult result = e.Result;
                if (result.ResultCode != OperResult.RESULTCODE_TRUE)
                {
                    MyMessageBox.ShowInfo("勘探矿山失败。原因:" + OperResult.GetMsg(result.ResultCode));
                    return;
                }
                if (result.PayType == (int)PayType.Alipay)
                {
                    MyWebPage.ShowMyWebPage(result.AlipayLink);
                    MyMessageBox.ShowInfo("请在弹出的网页中,登录支付宝进行付款。");

                    if (!AlipayPaySucceed)
                    {
                        var payResult = MyMessageBox.ShowAlipayPayQuestion();
                        if (payResult == MessageBoxAlipayPayQuestionResult.Succeed)
                        {
                            if (AlipayPaySucceed)
                            {
                                MyMessageBox.ShowInfo("成功收获" + e.Result.OperNumber + "的矿石储量");
                            }
                            else
                            {
                                MyMessageBox.ShowInfo("没有接收到支付宝付款信息。如确实付款,请稍后查看购买记录,或联系客服。");
                            }
                        }
                        else if (payResult == MessageBoxAlipayPayQuestionResult.Failed)
                        {
                            MyWebPage.ShowMyWebPage(result.AlipayLink);
                            MyMessageBox.ShowInfo("请在弹出的网页中,登录支付宝进行付款。");
                            return;
                        }
                    }
                    else
                    {
                        MyMessageBox.ShowInfo("成功收获" + e.Result.OperNumber + "的矿石储量");
                    }
                }
                else
                {
                    MyMessageBox.ShowInfo("成功收获" + e.Result.OperNumber + "的矿石储量");
                }

                App.UserVMObject.AsyncGetPlayerInfo();

                _syn.Post(p =>
                {
                    this.DialogResult = true;
                }, null);
            }
            catch (Exception exc)
            {
                MyMessageBox.ShowInfo("购买矿山,服务器回调处理异常。" + exc.Message);
            }
        }
示例#9
0
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!this.IsPostBack)
                {
                    //code说明 : code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。
                    string code  = Request["code"];
                    string state = Request["state"];

                    this.lblMsg.Text = "欢迎进入迅灵矿场";

                    LogHelper.Instance.AddInfoLog("code:" + code + "; state: " + state);

                    if (state == Config.state)
                    {
                        HttpGetReturnModel resultValue = WeiXinHandler.SynGetUserAccessToken(code);
                        if (resultValue.Exception != null)
                        {
                            this.lblMsg.Text = "登录异常,请联系迅灵矿场管理员";
                            return;
                        }

                        if (resultValue.ResponseError != null)
                        {
                            Session[Config.SESSIONKEY_RESPONSEERROR] = resultValue.ResponseError;
                            Server.Transfer("ErrorPage.aspx");
                            return;
                        }

                        AuthorizeResponseModel authObj = resultValue.ResponseResult as AuthorizeResponseModel;
                        if (authObj != null)
                        {
                            this.lblMsg.Text = "authObj OK";
                            Session[Config.SESSIONKEY_AUTHORIZEOBJ] = authObj;
                            resultValue = WeiXinHandler.SyncGetUserInfo(authObj.access_token, authObj.openid);
                        }
                        if (resultValue.Exception != null)
                        {
                            this.lblMsg.Text = "登录异常,请联系迅灵矿场管理员";
                            return;
                        }

                        if (resultValue.ResponseError != null)
                        {
                            Session[Config.SESSIONKEY_RESPONSEERROR] = resultValue.ResponseError;
                            Server.Transfer("ErrorPage.aspx");
                            return;
                        }

                        WeiXinUserInfoModel userObj = resultValue.ResponseResult as WeiXinUserInfoModel;
                        Session[Config.SESSIONKEY_WXUSERINFO] = userObj;
                        string ip = System.Web.HttpContext.Current.Request.UserHostAddress;
                        this.lblMsg.Text = "欢迎  " + userObj.nickname + "  进入迅灵矿场";

                        OperResultObject resultobj = WcfClient.Instance.WeiXinLogin(userObj.openid, userObj.nickname, ip);

                        this.lblMsg.Text = "登录迅灵矿场,结果为:" + OperResult.GetMsg(resultobj.OperResultCode);
                        if (resultobj.OperResultCode == OperResult.RESULTCODE_TRUE)
                        {
                            this.lblMsg.Text = "WeiXinLogin OK";
                            var player = WcfClient.Instance.GetPlayerByWeiXinOpenID(userObj.openid);

                            this.lblMsg.Text = "player OK";
                            WebUserInfo userinfo = new WebUserInfo();
                            userinfo.xlUserID   = player.SimpleInfo.UserID;
                            userinfo.xlUserName = player.SimpleInfo.UserName;
                            userinfo.wxOpenID   = userObj.openid;

                            // 登录状态100分钟内有效
                            MyFormsPrincipal <WebUserInfo> .SignIn(userinfo.xlUserName, userinfo, 100);

                            //Session[userinfo.xlUserName] = player;

                            Response.Redirect("View/Index.aspx", false);
                        }
                        else if (resultobj.OperResultCode == OperResult.RESULTCODE_USER_NOT_EXIST || resultobj.OperResultCode == OperResult.RESULTCODE_USERNAME_PASSWORD_ERROR)
                        {
                            Response.Redirect("LoginPage.aspx", false);
                        }
                        else
                        {
                            string message = string.IsNullOrEmpty(resultobj.Message) ? OperResult.GetMsg(resultobj.OperResultCode) : resultobj.Message;
                            Response.Write("<script>alert('登录迅灵矿场失败, 原因为:" + message + "')</script>");
                        }
                    }
                    else
                    {
                    }
                }
            }
            catch (Exception exc)
            {
                this.lblMsg.Text = "WeiXinResponse Exception. " + exc.Message;
                LogHelper.Instance.AddErrorLog("WeiXinResponse Exception", exc);
            }
        }
示例#10
0
        /// <summary>
        /// 判断是否有受权记录或已受权
        /// </summary>
        /// <returns></returns>
        public OperResult IsAuth()
        {
            ServiceRecord record = null;
            string        key    = string.Empty;

            using (RobotContext db = new RobotContext())
            {
                record = db.Set <ServiceRecord>().FirstOrDefault();
                var mc = db.Set <Machine>().FirstOrDefault();
                if (mc != null)
                {
                    key = mc.MachineCode;
                }
            }
            OperResult result = new OperResult();

            result.Data = record;
            if (record == null)
            {
                result.Msg  = "应用未授权";
                result.Code = ResultCodeEnums.warning;
                MachineSvc svc = new MachineSvc();
                var        mc  = Guid.NewGuid().ToString("N");
                svc.Add(mc);
                using (RobotContext db = new RobotContext())
                {
                    var           count = GetAESInfo.Set(0.ToString(), mc);
                    ServiceRecord rec   = new ServiceRecord()
                    {
                        ExpireDate   = DateTime.Now.AddHours(2),
                        IsAuth       = false,
                        LastOperTime = DateTime.Now,
                        SurplusTotal = count,
                        Total        = count
                    };
                    result.Data = rec;
                    record      = db.Set <ServiceRecord>().Add(rec);
                    db.SaveChanges();
                }
            }
            else if (record.ExpireDate > DateTime.Now)
            {
                result.Msg  = "应用试用期";
                result.Code = ResultCodeEnums.UnAuth;
            }
            else if (record.ExpireDate <= DateTime.Now && record.IsAuth == false)
            {
                result.Msg  = "应用过期,请重新授权";
                result.Code = ResultCodeEnums.AuthExpire;
            }
            else if (int.Parse(GetAESInfo.Get(record.SurplusTotal, key)) <= 0)
            {
                result.Msg  = "应用使用次数已用完";
                result.Code = ResultCodeEnums.AuthExpire;
            }
            else
            {
                result.Msg  = "应用已授权";
                result.Code = ResultCodeEnums.Auth;
            }
            return(result);
        }