.NETWEB支付宝接口实现方式

 

  • public static string GetMD5(string s)  
        {  
      
            /// <summary>   
            /// 与ASP兼容的MD5加密算法   
            /// </summary>   
      
            MD5 md5 = new MD5CryptoServiceProvider();  
            byte[] t = md5.ComputeHash(Encoding.GetEncoding("gb2312").GetBytes(s));  
            StringBuilder sb = new StringBuilder(32);  
            for (int i = 0; i < t.Length; i++)  
            {  
                sb.Append(t[i].ToString("x").PadLeft(2, '0'));  
            }  
            return sb.ToString();  
        }  
        public static string[] BubbleSort(string[] r)  
        {  
            /// <summary>   
            /// 冒泡排序法   
            /// </summary>   
      
            int i, j; //交换标志    
            string temp;  
      
            bool exchange;  
      
            for (i = 0; i < r.Length; i++) //最多做R.Length-1趟排序    
            {  
                exchange = false; //本趟排序开始前,交换标志应为假   
      
                for (j = r.Length - 2; j >= i; j--)  
                {  
                    if (System.String.CompareOrdinal(r[j + 1], r[j]) < 0) //交换条件   
                    {  
                        temp = r[j + 1];  
                        r[j + 1] = r[j];  
                        r[j] = temp;  
      
                        exchange = true; //发生了交换,故将交换标志置为真    
                    }  
                }  
      
                if (!exchange) //本趟排序未发生交换,提前终止算法    
                {  
                    break;  
                }  
      
            }  
            return r;  
        }  
          
        //获取远程服务器ATN结果   
        public String Get_Http(String a_strUrl, int timeout)  
        {  
            string strResult;  
            try  
            {  
      
                HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(a_strUrl);  
                myReq.Timeout = timeout;  
                HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse();  
                Stream myStream = HttpWResp.GetResponseStream();  
                StreamReader sr = new StreamReader(myStream, Encoding.Default);  
                StringBuilder strBuilder = new StringBuilder();  
                while (-1 != sr.Peek())  
                {  
                    strBuilder.Append(sr.ReadLine());  
                }  
      
                strResult = strBuilder.ToString();  
            }  
            catch (Exception exp)  
            {  
      
                strResult = "错误:" + exp.Message;  
            }  
      
            return strResult;  
        }  
      
        protected void Page_Load(object sender, EventArgs e)  
        {  
            ///当不知道https的时候,请使用http   
            //string alipayNotifyURL = "https://www.alipay.com/cooperate/gateway.do?";   
            string alipayNotifyURL = "http://notify.alipay.com/trade/notify_query.do?";  
      
            string partner = "";        //partner   
            string key = ""; //安全校验码    
            //alipayNotifyURL = alipayNotifyURL + "service=notify_verify" + "&partner=" + partner + "¬ify_id=" + Request.QueryString["notify_id"];   
             alipayNotifyURL = alipayNotifyURL + "&partner=" + partner + "¬ify_id=" + Request.QueryString["notify_id"];  
      
            string responseTxt = Get_Http(alipayNotifyURL, 120000);  
    //*********************************************************************************************   
            int i;  
            NameValueCollection coll;  
            //Load Form variables into NameValueCollection variable.   
            coll = Request.QueryString;  
      
            // Get names of all forms into a string array.   
            String[] requestarr = coll.AllKeys;  
      
      
      
            //进行排序;   
            string[] Sortedstr = BubbleSort(requestarr);  
      
                //构造待md5摘要字符串 ;   
      
            StringBuilder prestr = new StringBuilder();  
      
            for (i = 0; i < Sortedstr.Length; i++)  
            {  
                if (Sortedstr[i] != "sign" && Sortedstr[i] != "sign_type")  
                {  
                    if (i == Sortedstr.Length - 1)  
                    {  
                        prestr.Append(Sortedstr[i] + "=" + Request.QueryString[Sortedstr[i]]);  
      
                    }  
                    else  
                    {  
      
                        prestr.Append(Sortedstr[i] + "=" + Request.QueryString[Sortedstr[i]] + "&");  
                    }  
                }  
            }  
                  
                prestr.Append(key);  
      
                //生成Md5摘要;   
                string mysign = GetMD5(prestr.ToString());  
      
      
            string sign = Request.QueryString["sign"];  
      
      
      
            if (mysign == sign && responseTxt == "true")   //验证支付发过来的消息,签名是否正确   
            {  
      
                //更新自己数据库的订单语句,请自己填写一下   
      
      
      
                Response.Write("success");     //返回给支付宝消息,成功   
                Response.Write("<br>------------------" + Request.QueryString["body"]);  
            }  
            else  
              
                {  
                    Response.Write("fail");  
                    Response.Write("<br>------------------" + Request.QueryString["body"]);  
                      
                }   
              
        }  
    

     

posted @ 2011-11-10 14:12  .NET技术  阅读(303)  评论(0编辑  收藏  举报
网站:化妆品批发排行榜http://www.cosmetic-top.com/