⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 alipay_return.aspx.cs

📁 PageAdmin网站管理系统
💻 CS
字号:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
using System.Security.Cryptography;
using System.Collections.Specialized;
using System.IO;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Net;


public partial class Alipay_Return : System.Web.UI.Page
{
    /// <summary>
    /// created by sunzhizhi 2006.5.21,sunzhizhi@msn.com。
    /// </summary>
    /// 

    public string Pay_Result;
    OleDbConnection conn;
    public static string GetMD5(string s, string _input_charset)
    {

        /// <summary>
        /// 与ASP兼容的MD5加密算法
        /// </summary>
       
        MD5 md5 = new MD5CryptoServiceProvider();
        byte[] t = md5.ComputeHash(Encoding.GetEncoding(_input_charset).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;
    }

 public string  Get_Alipay()
     {
       PageAdmin.Conn Myconn=new PageAdmin.Conn();
       string constr=Myconn.Constr();
       string sql="select top 1 * from onlinepay where onlinepay_type='alipay'";
       OleDbConnection conn=new OleDbConnection(constr);
       conn.Open();
       string Val;
       OleDbCommand comm=new OleDbCommand(sql,conn);
       OleDbDataReader dr=comm.ExecuteReader();
       if(dr.Read())  
        { 
           Val=dr["onlinepay_key"].ToString()+","+dr["onlinepay_partnerid"].ToString();
        }
      else
        {
          Val="";
          Response.Write("Error");
          Response.End();
        }
       conn.Close();
       return Val;
     }


    protected void Page_Load(object sender, EventArgs e)
    {
   //***************************************************************     
        string alipayNotifyURL = "https://www.alipay.com/cooperate/gateway.do?";
        string[] Alipay_Val=Get_Alipay().Split(',');
        string key = Alipay_Val[0]; //partner 的对应交易安全校验码(必须填写)
        string _input_charset = "utf-8";
        string partner = Alipay_Val[1]; 		//partner合作伙伴id(必须填写)

        alipayNotifyURL = alipayNotifyURL + "service=notify_verify" + "&partner=" + partner + "&notify_id=" + Request.QueryString["notify_id"];

        //获取支付宝ATN返回结果,true是正确的订单信息,false 是无效的
        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);

       /* for (i = 0; i < Sortedstr.Length; i++)
       { 
          Response.Write("Form: " + Sortedstr[i] + "=" + Request.QueryString[Sortedstr[i]] + "<br>");
       }*/

        //构造待md5摘要字符串 ;

        StringBuilder prestr = new StringBuilder();

        for (i = 0; i < Sortedstr.Length; i++)
        {
            if (Request.Form[Sortedstr[i]] != "" && 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(), _input_charset);
        string mysign = GetMD5(prestr.ToString(), _input_charset);
        string sign = Request.QueryString["sign"];
        string trade_status = Request.QueryString["trade_status"];

        //Response.Write(prestr.ToString());  //打印返回通知消息,接收到的

        if (mysign == sign && responseTxt == "true" && trade_status == "TRADE_FINISHED")   //验证支付发过来的消息,签名是否正确
        {

            //更新自己数据库的订单语句,请自己填写一下
               string Pay_Amount=Request.QueryString["total_fee"];
               string v_oid=Request.QueryString["trade_no"];
               double Fnc_Amount=double.Parse(Pay_Amount);
               PageAdmin.Conn Myconn=new PageAdmin.Conn();
               string constr=Myconn.Constr();
               conn=new OleDbConnection(constr);
               conn.Open();
               if(!Fnc_rk(v_oid))
                {
                  Update_member_fnc(Fnc_Amount);
                  Update_fnc_list(Fnc_Amount,"支付宝",v_oid,"订单号:"+v_oid);
                  string M_body="支付方式:支付宝<br>订单号:"+v_oid+"<br>支付金额:"+Pay_Amount;
                  SendMail(M_body);
                }
               else
                {
                  Response.Write("<script>alert('此次支付已经成功转入到您的用户名下!')</script>");
                }
              conn.Close();
              Pay_Result="支付成功,金额已经转入您的会员名下";

	
            //Response.Write("success");     //返回给支付宝消息,成功(不用返回给支付宝)
//**************************************************************************
            //打印出接收通知。计算结果
            //Response.Write("------------------------------------------");
            //Response.Write("<br>Result:responseTxt=" + responseTxt);
            //Response.Write("<br>Result:mysign=" + mysign);
            //Response.Write("<br>Result:sign=" + sign);

        }
        else
        {
  //**************************************************************************
            //打印出接收通知。计算结果
            Response.Write("-------------------error-----------------------");
            Response.Write("<br>Result:responseTxt=" + responseTxt);
            Response.Write("<br>Result:mysign=" + mysign);
            Response.Write("<br>Result:sign=" + sign);
            Response.End();
        }

    }



public bool Fnc_rk(string OrderId)  //判断是否入款。
  {
   string sql="select * from fnc_list where orderid='"+OrderId+"'" ;
   OleDbCommand comm=new OleDbCommand(sql,conn);
   OleDbDataReader dr=comm.ExecuteReader();
   if(dr.Read())  
     { 
       return true;
     }
   else
     {
       return false;
     }

  }


public void Update_member_fnc(double Fnc_Amount)
 {
   if(Request.Cookies["Member"]!=null)
     {
       string UserName=Request.Cookies["Member"].Values["UserName"].ToString();
       string sql="update member set fnc_rk=fnc_rk+"+Fnc_Amount+",fnc_ky=fnc_ky+"+Fnc_Amount+"  where username='"+UserName+"'";
       OleDbCommand Comm=new OleDbCommand(sql,conn);
       Comm.ExecuteNonQuery();
    }
 }

public void Update_fnc_list(double Fnc_Amount,string Rk_way,string OrderId,string Beizhu)
 {
   if(Request.Cookies["Member"]!=null)
     {
       string UserName=Request.Cookies["Member"].Values["UserName"].ToString();
       string sql="insert into fnc_list(username,fnc_type,fnc_amount,fnc_detail,orderid,beizhu) values('"+UserName+"','rk',"+Fnc_Amount+",'"+Rk_way+"','"+OrderId+"','"+Beizhu+"')";
       OleDbCommand Comm=new OleDbCommand(sql,conn);
       Comm.ExecuteNonQuery();
    }
 }

public void  SendMail(string Body)
 {
  string SendWay,MailServer,FajianMail,MailPassword,FajianName,ReplayTo,MailTo,Mail_subject;
  string sql="select top 1 * from webset where planguage='cn'";
  OleDbCommand comm=new OleDbCommand(sql,conn);
  OleDbDataReader dr=comm.ExecuteReader();
  if(dr.Read())
   {
    ReplayTo="";
    MailServer=dr["emailserver"].ToString();
    FajianMail=dr["fajianemail"].ToString();
    FajianName=dr["fajianname"].ToString();
    MailPassword=dr["emailpassword"].ToString();
    SendWay=dr["sendway"].ToString();
    MailTo=dr["em_feedback"].ToString();
    Mail_subject="来自"+FajianName+"的在线支付通知";
   } 
  else
   {
    return;
   }
//==============================发邮件部分=========================
 if(MailTo!="" && FajianMail!="")
 {
 SendMail Smg=new SendMail();
  bool sendresult;
 switch(SendWay)
  {
   case "0":
     sendresult=Smg.SendByJmail(MailServer,FajianMail,MailPassword,FajianMail,FajianName,ReplayTo,MailTo,"",Mail_subject,Body);
     break;
   default:
     sendresult=Smg.SendByNetMail(MailServer,FajianMail,MailPassword,FajianMail,FajianName,ReplayTo,MailTo,"",Mail_subject,Body);
    break;

  }
}
//==============================发邮件部分=========================
}


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -