Exemplo n.º 1
0
        public NotifyPage()
        {
            if (EPayments.CheckPayment(DNTRequest.GetString("notify_id")))//验证请求是否来自支付宝,或者是伪造的
            {
                //获取需要的信息
                int    orderStatus = EPayments.ConvertAlipayTradeStatus(DNTRequest.GetString("trade_status"));
                string orderCode   = DNTRequest.GetString("out_trade_no", true);
                string tradeNo     = DNTRequest.GetString("trade_no", true);

                if (string.IsNullOrEmpty(orderCode) || string.IsNullOrEmpty(tradeNo) || orderStatus <= 0)
                {
                    return;
                }

                CreditOrderInfo orderInfo = CreditOrders.GetCreditOrderInfoByOrderCode(orderCode);


                //如果订单状态为未成功交易
                if (orderInfo != null && orderInfo.OrderStatus < 2)
                {
                    float[] extcredits = new float[8];
                    extcredits[orderInfo.Credit - 1] = orderInfo.Amount;

                    if (UserCredits.UpdateUserExtCredits(orderInfo.Uid, extcredits, true) != 1)
                    {
                        orderStatus = 0;
                    }

                    CreditsLogs.AddCreditsLog(orderInfo.Uid, orderInfo.Uid, orderInfo.Credit, orderInfo.Credit, 0, orderInfo.Amount, Utils.GetDateTime(), 3);//添加积分兑换转账和充值记录

                    NoticeInfo notice = new NoticeInfo();
                    notice.Postdatetime = Utils.GetDateTime();
                    notice.Type         = NoticeType.GoodsTradeNotice;
                    notice.Poster       = "系统";
                    notice.Posterid     = 0;
                    notice.Uid          = orderInfo.Uid;
                    notice.Note         = string.Format("您购买的积分 {0} 已经成功充值,请<a href=\"usercpcreaditstransferlog.aspx\">查收</a>!(支付宝订单号:{1})", ForumUtils.ConvertCreditAndAmountToWord(orderInfo.Credit, orderInfo.Amount), tradeNo);
                    Notices.CreateNoticeInfo(notice);

                    CreditOrders.UpdateCreditOrderInfo(orderInfo.OrderId, tradeNo, orderStatus, Utils.GetDateTime());//修改积分订单记录状态
                }
                //判断当前请求是支付宝GET式(直接跳转)或者是服务器POST式(需返回success使得支付宝停止继续发送通知)
                if (DNTRequest.IsPost())
                {
                    HttpContext.Current.Response.Write("success");
                }
                else
                {
                    HttpContext.Current.Response.Redirect("../usercpcreaditstransferlog.aspx?paysuccess=true");
                }
            }
            else
            {
                HttpContext.Current.Response.Write("fail");
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 通过ordercode获取积分订单信息
        /// </summary>
        /// <param name="orderCode">订单外部订单号</param>
        /// <returns></returns>
        public static CreditOrderInfo GetCreditOrderByOrderCode(string orderCode)
        {
            IDataReader     reader    = DatabaseProvider.GetInstance().GetCreditOrderByOrderCode(orderCode);
            CreditOrderInfo orderInfo = new CreditOrderInfo();

            if (reader.Read())
            {
                orderInfo = LoadCreditOrderInfo(reader);
            }
            reader.Close();
            return(orderInfo);
        }
Exemplo n.º 3
0
        private static CreditOrderInfo LoadCreditOrderInfo(IDataReader reader)
        {
            CreditOrderInfo orderInfo = new CreditOrderInfo();

            orderInfo.Amount        = TypeConverter.ObjectToInt(reader["amount"]);
            orderInfo.Buyer         = reader["buyer"].ToString();
            orderInfo.CreatedTime   = reader["createdtime"].ToString();
            orderInfo.ConfirmedTime = reader["confirmedtime"].ToString();
            orderInfo.Credit        = TypeConverter.ObjectToInt(reader["credit"]);
            orderInfo.OrderCode     = reader["ordercode"].ToString();
            orderInfo.OrderId       = TypeConverter.ObjectToInt(reader["orderid"]);
            orderInfo.OrderStatus   = TypeConverter.ObjectToInt(reader["orderstatus"]);
            orderInfo.PayType       = TypeConverter.ObjectToInt(reader["paytype"]);
            orderInfo.Price         = (decimal)TypeConverter.ObjectToFloat(reader["price"]);
            orderInfo.TradeNo       = reader["tradeno"].ToString();
            orderInfo.Uid           = TypeConverter.ObjectToInt(reader["uid"]);
            return(orderInfo);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 创建积分订单记录
        /// </summary>
        /// <param name="uId">用户uid</param>
        /// <param name="buyer">用户登录名</param>
        /// <param name="credit">操作积分类型(扩展积分1-8)</param>
        /// <param name="amount">操作积分数量</param>
        /// <param name="paytype">支付种类(支付宝或其他)</param>
        /// <param name="outTradeNo">外部订单号(支付宝要求的形如:20080104140009iwGampfQkzFgMZ0yoT)</param>
        /// <returns></returns>
        public static int CreateCreditOrder(int uId, string buyer, int credit, int amount, int paytype, string outTradeNo)
        {
            if (uId < 0 || string.IsNullOrEmpty(buyer) || credit < 1 || credit > 8 || amount < 1 || string.IsNullOrEmpty(outTradeNo))
            {
                return(0);
            }
            CreditOrderInfo order = new CreditOrderInfo();

            order.Uid         = uId;
            order.OrderCode   = outTradeNo;
            order.Amount      = amount;
            order.Credit      = credit;
            order.Buyer       = buyer;
            order.OrderStatus = 0;
            order.PayType     = paytype;
            order.Price       = decimal.Round(((decimal)amount / (decimal)GeneralConfigs.GetConfig().Cashtocreditrate), 2);
            return(Data.CreditOrders.CreateCreditOrder(order));
        }
Exemplo n.º 5
0
 /// <summary>
 /// 创建积分订单信息
 /// </summary>
 /// <param name="creditOrderInfo"></param>
 /// <returns></returns>
 public static int CreateCreditOrder(CreditOrderInfo creditOrderInfo)
 {
     return(DatabaseProvider.GetInstance().CreateCreditOrder(creditOrderInfo));
 }