Exemplo n.º 1
0
        public static string GetRequestToken(string token, Encoding code)
        {
            var dict = BuildParas(token);

            if (dict.Keys.Contains("res_data"))
            {
                var xml = new Function.XmlDoc(HttpUtility.UrlDecode(dict["res_data"], code));
                return(xml.GetNode("/direct_trade_create_res/request_token"));
            }
            return("");
        }
Exemplo n.º 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;
        }
Exemplo n.º 3
0
        public override BaseResult VerifyCallBack(HttpRequest request)
        {
            var result = new MAlipayResult();

            var coll = (request.HttpMethod.ToLower() == "post" ? request.Form : request.QueryString);
            string notifyData = coll["notify_data"],
                   sign = coll["sign"];
            if (string.IsNullOrEmpty(notifyData) || string.IsNullOrEmpty(sign))
            {
                result.State = false;
                result.ErrMsg = "notify_data或sign参数为空";
                return result;
            }
            var verify = Function.Verify("notify_data=" + notifyData, sign, Config.PublicKey);
            if (!verify)
            {
                result.State = false;
                result.ErrMsg = "签名验证失败";
                return result;
            }
            var xml = new Function.XmlDoc(notifyData);
            string tradeStatus = xml.GetNode("notify/trade_status");
            if (tradeStatus != Config.TRADEFINISHED && tradeStatus != Config.TRADESUCCESS)
            {
                result.State = false;
                result.ErrMsg = "交易状态:" + tradeStatus;
                return result;
            }
            result.State = true;
            result.Amount = Convert.ToDecimal(xml.GetNode("notify/total_fee"));
            result.TradeNum = xml.GetNode("notify/out_trade_no");
            result.TradeNo = xml.GetNode("notify/trade_no");
            result.TradeStatus = tradeStatus;
            result.BuyerEmail = xml.GetNode("notify/buyer_email");
            return result;
        }
Exemplo n.º 4
0
 public static string GetRequestToken(string token,Encoding code)
 {
     var dict = BuildParas(token);
     if(dict.Keys.Contains("res_data"))
     {
         var xml = new Function.XmlDoc(HttpUtility.UrlDecode(dict["res_data"], code));
         return xml.GetNode("/direct_trade_create_res/request_token");
     }
     return "";
 }