Beispiel #1
0
        public override BaseResult VerifyCallBack(HttpRequest request)
        {
            var mwItem = new MwAlipayResult()
            {
                State = false
            };

            var sPara    = GetRequestGet(request);
            var isNotify = (request.HttpMethod.ToLower() == "post");

            var sign = sPara["sign"];

            if (sPara.Count > 0)
            {
                var mySign = (isNotify
                                     ? Common.Utils.BuildNotifyParas(sPara, Config.GetKey(), Config.Charset)["sign"]
                                     : Common.Utils.BuildParas(sPara, Config.GetKey(), Config.Charset)["sign"]);
                if (mySign == sign)
                {
                    if (!isNotify)
                    {
                        mwItem.TradeNum = sPara["out_trade_no"];
                        mwItem.trade_no = sPara["trade_no"];
                        mwItem.State    = sPara["result"] == "success";
                    }
                    else
                    {
                        var xml = new Function.XmlDoc(sPara["notify_data"]);
                        //验证是否为支付宝发起的请求
                        string notify_id = xml.GetNode("/notify/notify_id");
                        if (GetResponseTxt(notify_id) != "true")
                        {
                            mwItem.State  = false;
                            mwItem.ErrMsg = "非支付宝发起请求";
                            return(mwItem);
                        }

                        string tradeStatus = xml.GetNode("notify/trade_status");
                        if (tradeStatus != Config.TRADEFINISHED && tradeStatus != Config.TRADESUCCESS)
                        {
                            mwItem.State  = false;
                            mwItem.ErrMsg = "交易状态:" + tradeStatus;
                            return(mwItem);
                        }
                        mwItem.Amount   = Convert.ToDecimal(xml.GetNode("notify/total_fee"));
                        mwItem.TradeNum = xml.GetNode("notify/out_trade_no");
                        mwItem.trade_no = xml.GetNode("notify/trade_no");
                        mwItem.State    = true;
                    }
                }
            }

            return(mwItem);
        }
Beispiel #2
0
        public override BaseResult VerifyCallBack(HttpRequest request)
        {
            var mwItem = new MwAlipayResult() {State = false};

            var sPara = GetRequestGet(request);
            var isNotify = (request.HttpMethod.ToLower() == "post");

            var sign = sPara["sign"];

            if (sPara.Count > 0)
            {
                var mySign = (isNotify
                                     ? Common.Utils.BuildNotifyParas(sPara, Config.GetKey(), Config.Charset)["sign"]
                                     : Common.Utils.BuildParas(sPara, Config.GetKey(), Config.Charset)["sign"]);
                if (mySign == sign)
                {
                    if (!isNotify)
                    {
                        mwItem.TradeNum = sPara["out_trade_no"];
                        mwItem.trade_no = sPara["trade_no"];
                        mwItem.State = sPara["result"] == "success";
                    }
                    else
                    {
                        var xml = new Function.XmlDoc(sPara["notify_data"]);
                        //验证是否为支付宝发起的请求
                        string notify_id = xml.GetNode("/notify/notify_id");
                        if(GetResponseTxt(notify_id) != "true")
                        {
                            mwItem.State = false;
                            mwItem.ErrMsg = "非支付宝发起请求";
                            return mwItem;
                        }

                        string tradeStatus = xml.GetNode("notify/trade_status");
                        if (tradeStatus != Config.TRADEFINISHED && tradeStatus != Config.TRADESUCCESS)
                        {
                            mwItem.State = false;
                            mwItem.ErrMsg = "交易状态:" + tradeStatus;
                            return mwItem;
                        }
                        mwItem.Amount = Convert.ToDecimal(xml.GetNode("notify/total_fee"));
                        mwItem.TradeNum = xml.GetNode("notify/out_trade_no");
                        mwItem.trade_no = xml.GetNode("notify/trade_no");
                        mwItem.State = true;
                    }
                }
            }

            return mwItem;
        }