예제 #1
0
        /// <summary>
        /// 通知调用
        /// </summary>
        public ActionResult Notify()
        {
            SortedDictionary <string, string> sPara = AlipayCore.GetRequestPost();

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                bool verifyResult = AlipayNotify.AppVerify(sPara, Request.Form["notify_id"], Request.Form["sign"], AlipayConfig.AppSignType, AlipayConfig.PublicKey, AlipayConfig.AppInputCharset, AlipayConfig.AppVeryfyUrl, AlipayConfig.Partner);
                if (verifyResult && (Request.Form["trade_status"] == "TRADE_FINISHED" || Request.Form["trade_status"] == "TRADE_SUCCESS")) //验证成功
                {
                    string   out_trade_no = Request.Form["out_trade_no"];                                                                  //商户订单号
                    string   tradeSN      = Request.Form["trade_no"];                                                                      //支付宝交易号
                    decimal  tradeMoney   = TypeHelper.StringToDecimal(Request.Form["total_amount"]);                                      //交易金额
                    DateTime tradeTime    = TypeHelper.StringToDateTime(Request.Form["gmt_payment"]);                                      //交易时间

                    return(Content(Recharge.UpdateRecharge(tradeMoney.ToString(), out_trade_no, Request.Form["gmt_payment"], tradeSN)));
                }
                else//验证失败
                {
                    return(Content("fail"));
                }
            }
            else
            {
                return(Content("无通知参数"));
            }
        }
예제 #2
0
        /// <summary>
        /// 通知调用
        /// </summary>
        public ActionResult Notify()
        {
            //string forms = "discount=0.00&payment_type=1&subject=%u9ed1%u7c73%u58f3&trade_no=2016111521001004630270573220&buyer_email=15670179992&gmt_create=2016-11-15+09%3a29%3a16&notify_type=trade_status_sync&quantity=1&out_trade_no=1115092904-1643&seller_id=2088421544580296&notify_time=2016-11-15+10%3a55%3a09&body=%u8bdd%u8d39%u5957%u9910&trade_status=TRADE_SUCCESS&is_total_fee_adjust=N&total_fee=0.01&gmt_payment=2016-11-15+09%3a29%3a17&seller_email=cbaohai%40126.com&price=0.01&buyer_id=2088012967203633&notify_id=53526949d59c9297c6641bd8e450a03kv2&use_coupon=N&sign_type=RSA&sign=WDJhrGG2kEgGvKtfPG3WoMn8mwleWbyDTR0scZ6HmSK39OZnlHKS8lSTkYM09ZY4y7%2bxTM1IeNmFsVcbK%2bVJK2jHYX43RyEIyBkCgJVuo0IpUDPYZidyrgEeGKoeV0FPutykbLIueQNSoAENkPsAmFWd1J1FQMYvF8akJL1R%2b5k%3d";
            //forms = HttpUtility.UrlDecode(forms, Encoding.UTF8);
            SortedDictionary <string, string> sPara = AlipayCore.GetRequestPost();

            //Dictionary<string, string> dic = CommonHelper.ParmsToDic(forms);
            //foreach (KeyValuePair<string, string> kv in dic)
            //{
            //    sPara[kv.Key] = kv.Value;
            //}
            //BSPLog.Instance.Write(Request.Form.ToString());
            if (sPara.Count > 0)//判断是否有带返回参数
            {
                bool verifyResult = AlipayNotify.AppVerify(sPara, sPara["notify_id"], sPara["sign"], AlipayConfig.AppSignType, AlipayConfig.PublicKey, AlipayConfig.AppInputCharset, AlipayConfig.AppVeryfyUrl, AlipayConfig.Partner);
                if (verifyResult && (sPara["trade_status"] == "TRADE_FINISHED" || sPara["trade_status"] == "TRADE_SUCCESS")) //验证成功
                {
                    string   out_trade_no = sPara["out_trade_no"];                                                           //商户订单号
                    string   tradeSN      = sPara["trade_no"];                                                               //支付宝交易号
                    decimal  tradeMoney   = TypeHelper.StringToDecimal(sPara["total_fee"]);                                  //交易金额
                    DateTime tradeTime    = TypeHelper.StringToDateTime(sPara["gmt_payment"]);                               //交易时间

                    return(Content(Recharge.UpdateRecharge(tradeMoney.ToString(), out_trade_no, sPara["gmt_payment"], tradeSN)));
                }
                else//验证失败
                {
                    return(Content("fail"));
                }
            }
            else
            {
                return(Content("无通知参数"));
            }
        }
예제 #3
0
        /// <summary>
        /// 通知调用
        /// </summary>
        public ActionResult Notify()
        {
            SortedDictionary <string, string> sPara = AlipayCore.GetRequestPost();

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                bool verifyResult = AlipayNotify.AppVerify(sPara, Request.Form["notify_id"], Request.Form["sign"], AlipayConfig.AppSignType, AlipayConfig.PublicKey, AlipayConfig.AppInputCharset, AlipayConfig.AppVeryfyUrl, AlipayConfig.Partner);
                if (verifyResult && (Request.Form["trade_status"] == "TRADE_FINISHED" || Request.Form["trade_status"] == "TRADE_SUCCESS")) //验证成功
                {
                    string   out_trade_no = Request.Form["out_trade_no"];                                                                  //商户订单号
                    string   tradeSN      = Request.Form["trade_no"];                                                                      //支付宝交易号
                    decimal  tradeMoney   = TypeHelper.StringToDecimal(Request.Form["total_fee"]);                                         //交易金额
                    DateTime tradeTime    = TypeHelper.StringToDateTime(Request.Form["gmt_payment"]);                                      //交易时间

                    List <OrderInfo> orderList = new List <OrderInfo>();
                    foreach (string oid in StringHelper.SplitString(StringHelper.SubString(out_trade_no, out_trade_no.Length - 10)))
                    {
                        OrderInfo orderInfo = Orders.GetOrderByOid(TypeHelper.StringToInt(oid));
                        orderList.Add(orderInfo);
                    }
                    decimal allSurplusMoney = 0M;
                    foreach (OrderInfo orderInfo in orderList)
                    {
                        allSurplusMoney += orderInfo.SurplusMoney;
                    }

                    if (orderList.Count > 0 && allSurplusMoney <= tradeMoney)
                    {
                        foreach (OrderInfo orderInfo in orderList)
                        {
                            if (orderInfo.SurplusMoney > 0 && orderInfo.OrderState == (int)OrderState.WaitPaying)
                            {
                                Orders.PayOrder(orderInfo.Oid, OrderState.Confirming, tradeSN, "alipay", "支付宝", DateTime.Now);
                                OrderActions.CreateOrderAction(new OrderActionInfo()
                                {
                                    Oid        = orderInfo.Oid,
                                    Uid        = orderInfo.Uid,
                                    RealName   = "本人",
                                    ActionType = (int)OrderActionType.Pay,
                                    ActionTime = tradeTime,
                                    ActionDes  = "你使用支付宝支付订单成功,支付宝交易号为:" + tradeSN
                                });
                            }
                        }
                    }

                    return(Content("success"));
                }
                else//验证失败
                {
                    return(Content("fail"));
                }
            }
            else
            {
                return(Content("无通知参数"));
            }
        }
예제 #4
0
        /// <summary>
        /// 返回调用
        /// </summary>
        public ActionResult Return()
        {
            SortedDictionary <string, string> sPara = AlipayCore.GetRequestGet();

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                bool verifyResult = AlipayNotify.AppVerify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"], AlipayConfig.AppSignType, AlipayConfig.PublicKey, AlipayConfig.AppInputCharset, AlipayConfig.AppVeryfyUrl, AlipayConfig.Partner);
                if (verifyResult && (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS")) //验证成功
                {
                    string   out_trade_no = Request.QueryString["out_trade_no"];                                                                         //商户订单号
                    string   tradeSN      = Request.QueryString["trade_no"];                                                                             //支付宝交易号
                    decimal  tradeMoney   = TypeHelper.StringToDecimal(Request.QueryString["total_fee"]);                                                //交易金额
                    DateTime tradeTime    = TypeHelper.StringToDateTime(Request.QueryString["gmt_payment"]);                                             //交易时间

                    int       oid       = TypeHelper.StringToInt(StringHelper.SubString(out_trade_no, out_trade_no.Length - 10));
                    OrderInfo orderInfo = Orders.GetOrderByOid(oid);
                    if (orderInfo != null && orderInfo.PayMode == 1 && orderInfo.PaySN.Length == 0 && orderInfo.SurplusMoney > 0 && orderInfo.SurplusMoney <= tradeMoney)
                    {
                        Orders.PayOrder(orderInfo.Oid, OrderState.Confirming, tradeSN, "alipay", "支付宝", DateTime.Now);
                        OrderActions.CreateOrderAction(new OrderActionInfo()
                        {
                            Oid        = orderInfo.Oid,
                            Uid        = orderInfo.Uid,
                            RealName   = "本人",
                            ActionType = (int)OrderActionType.Pay,
                            ActionTime = tradeTime,
                            ActionDes  = "你使用支付宝支付订单成功,支付宝交易号为:" + tradeSN
                        });
                    }

                    return(Content("{" + "\"state\":\"success\"" + "}"));
                }
                else//验证失败
                {
                    return(Content("{" + "\"state\":\"fail\"" + "}"));
                }
            }
            else
            {
                return(Content("{" + "\"state\":\"fail\"" + "}"));
            }
        }