a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

C#支付寶掃碼支付代碼完整版

2019-10-29 19:59:01
字體:
來源:轉載
供稿:網友

本文實例為大家分享了C#支付寶掃碼支付示的具體代碼,供大家參考,具體內容如下

支付寶工具類

using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Web;  namespace ZK_ECommerce.Shop.pay.alipay {   public class AliPay   {      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;     }      public string CreatUrl(       string gateway,       string service,       string partner,       string sign_type,       string out_trade_no,       string subject,       string body,       string payment_type,       string total_fee,       string show_url,       string seller_email,       string key,       string return_url,       string _input_charset,       string notify_url,       string extra_common_param = ""       )     {       return CreatUrl(       gateway,       service,       partner,       sign_type,       out_trade_no,       subject,       body,       payment_type,       total_fee,       show_url,       seller_email,       key,       return_url,       _input_charset,       notify_url,       "",       extra_common_param);     }        public string CreatUrl(       string gateway,       string service,       string partner,       string sign_type,       string out_trade_no,       string subject,       string body,       string payment_type,       string total_fee,       string show_url,       string seller_email,       string key,       string return_url,       string _input_charset,       string notify_url,       string token,       string extra_common_param = ""       )     {       /// <summary>       ///2015年11月17日14:08:00       /// </summary>       int i;       string[] Oristr;       //構造數組;       if (!string.IsNullOrEmpty(token))       {         if (extra_common_param == "COD2MOTOPAY")         {           Oristr = new[]{            "service="+service,            "partner=" + partner,            "subject=" + subject,            "body=" + body,            "out_trade_no=" + out_trade_no,            "total_fee=" + total_fee,            "show_url=" + show_url,            "payment_type=" + payment_type,            "seller_email=" + seller_email,            "notify_url=" + notify_url,           "_input_charset="+_input_charset,                "return_url=" + return_url,           "token="+token,           "extra_common_param="+extra_common_param           };         }         else         {           Oristr = new[]{            "service="+service,            "partner=" + partner,            "subject=" + subject,            "body=" + body,            "out_trade_no=" + out_trade_no,            "total_fee=" +total_fee,            "show_url=" + show_url,            "payment_type=" + payment_type,            "seller_email=" + seller_email,            "notify_url=" + notify_url,           "_input_charset="+_input_charset,                "return_url=" + return_url,           "token="+token           };         }        }       else       {         if (extra_common_param == "COD2MOTOPAY")         {           Oristr = new[]{            "service="+service,            "partner=" + partner,            "subject=" + subject,            "body=" + body,            "out_trade_no=" + out_trade_no,            "total_fee="+total_fee,            "show_url=" + show_url,            "payment_type=" + payment_type,            "seller_email=" + seller_email,            "notify_url=" + notify_url,           "_input_charset="+_input_charset,                "return_url=" + return_url,           "extra_common_param="+extra_common_param           };         }         else         {           Oristr = new[]{            "service="+service,            "partner=" + partner,            "subject=" + subject,            "body=" + body,            "out_trade_no=" + out_trade_no,            "total_fee=" + total_fee,            "show_url=" + show_url,            "payment_type=" + payment_type,            "seller_email=" + seller_email,            "notify_url=" + notify_url,           "_input_charset="+_input_charset,                "return_url=" + return_url           };         }         }       //進行排序;       string[] Sortedstr = BubbleSort(Oristr);         //構造待md5摘要字符串 ;        StringBuilder prestr = new StringBuilder();        for (i = 0; i < Sortedstr.Length; i++)       {         if (i == Sortedstr.Length - 1)         {           prestr.Append(Sortedstr[i]);          }         else         {            prestr.Append(Sortedstr[i] + "&");         }        }        prestr.Append(key);        //生成Md5摘要;       string sign = GetMD5(prestr.ToString(), _input_charset);        //構造支付Url;       char[] delimiterChars = { '=' };       StringBuilder parameter = new StringBuilder();       parameter.Append(gateway);       for (i = 0; i < Sortedstr.Length; i++)       {          parameter.Append(Sortedstr[i].Split(delimiterChars)[0] + "=" + HttpUtility.UrlEncode(Sortedstr[i].Split(delimiterChars)[1]) + "&");       }        parameter.Append("sign=" + sign + "&sign_type=" + sign_type);         //返回支付Url;       return parameter.ToString();      }      public string CreatUrl_MissPayments(                 string gateway,                 string service,                 string partner,                 string sign_type,                 string out_trade_no,                 string key,                 string _input_charset       )     {       /// <summary>       /// created by sunzhizhi 2006.5.21,sunzhizhi@msn.com。       /// </summary>       int i;        //構造數組;       string[] Oristr ={          "service="+service,          "partner=" + partner,         "out_trade_no=" + out_trade_no,            "_input_charset="+_input_charset               };        //進行排序;       string[] Sortedstr = BubbleSort(Oristr);         //構造待md5摘要字符串 ;        StringBuilder prestr = new StringBuilder();        for (i = 0; i < Sortedstr.Length; i++)       {         if (i == Sortedstr.Length - 1)         {           prestr.Append(Sortedstr[i]);          }         else         {            prestr.Append(Sortedstr[i] + "&");         }        }        prestr.Append(key);        //生成Md5摘要;       string sign = GetMD5(prestr.ToString(), _input_charset);        //構造支付Url;       char[] delimiterChars = { '=' };       StringBuilder parameter = new StringBuilder();       parameter.Append(gateway);       for (i = 0; i < Sortedstr.Length; i++)       {          parameter.Append(Sortedstr[i].Split(delimiterChars)[0] + "=" + HttpUtility.UrlEncode(Sortedstr[i].Split(delimiterChars)[1]) + "&");       }        parameter.Append("sign=" + sign + "&sign_type=" + sign_type);         //返回支付Url;       return parameter.ToString();      }       public static string GetTranSign(string TranData)     {       if (string.IsNullOrWhiteSpace(TranData))         return null;       string sign = GetMD5(TranData + "alskdjfaow;fjel;asdjf", "utf-8");       return sign;     }    } } 

頁面處理

using System; using System.Collections.Generic; using System.Collections.Specialized; using System.IO; using System.Linq; using System.Net; using System.Security.Cryptography; using System.Text; using System.Web; using System.Web.Mvc; using ZK_ECommerce.Shop.pay.alipay;  namespace Alipay.Controllers {   public class ApliayDemoController : Controller   {     /// <summary>     /// 支付頁面     /// </summary>     /// <param name="ordercode"></param>     /// <returns></returns>     public ActionResult Index(string ordercode)     {         string out_trade_no = ordercode;       string gateway = "https://mapi.alipay.com/gateway.do?"; //支付接口       string service = "create_direct_pay_by_user";       string partner = "";    //partner合作伙伴ID保留字段       string sign_type = "MD5";       string payment_type = "1";         //支付類型        string show_url = "http://www.letao.com";       string seller_email = "";       //賣家賬號       string key = "";       //partner賬戶的支付寶安全校驗碼       string return_url = "http://localhost:1396/ApliayDemo/ApliyReturn"; //服務器通知返回接口       string notify_url = "http://localhost:1396/ApliayDemo/AlipayNotify"; //服務器通知返回接口       string _input_charset = "utf-8";       string extra_common_param = "COD2MOTOPAY";//表示快捷支付        string token = string.Empty;       if (string.IsNullOrEmpty(token))         token = "";       string subject = "康康體檢套餐"; // subject商品名稱       string body = "測試商品"; //商品描述         string total_fee = "0.01";       AliPay ap = new AliPay();       string aliay_url = ap.CreatUrl(gateway, service, partner, sign_type, out_trade_no, subject, body, payment_type,                       total_fee, show_url, seller_email, key, return_url, _input_charset, notify_url, token, extra_common_param);        return Redirect(aliay_url);       }       /// <summary>     /// 返回通知頁面     /// </summary>     /// <returns></returns>     public ActionResult ApliyReturn()     {        string alipayNotifyURL = "https://mapi.alipay.com/gateway.do?";       string key = ""; //partner 的對應交易安全校驗碼(必須填寫)       string _input_charset = "utf-8";       string partner = "";    //partner合作伙伴id(必須填寫)        alipayNotifyURL = alipayNotifyURL + "service=notify_verify" + "&partner=" + partner + "¬ify_id=" + Request.QueryString["notify_id"];        //獲取支付寶ATN返回結果,true是正確的訂單信息,false 是無效的       string responseTxt = Get_Http(alipayNotifyURL, 120000);        int i;       NameValueCollection coll;       coll = Request.QueryString;       String[] requestarr = coll.AllKeys;       //進行排序;       string[] Sortedstr = BubbleSort(requestarr);        //構造待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);       string mysign = GetMD5(prestr.ToString(), _input_charset);       string sign = Request.QueryString["sign"];       string trade_status = Request.QueryString["trade_status"];        if (mysign == sign && responseTxt == "true" && trade_status == "TRADE_SUCCESS")  //驗證支付發過來的消息,簽名是否正確       {         string order_amount = Request.QueryString["total_fee"].ToString().Trim();         string order_code = Request.QueryString["out_trade_no"].ToString().Trim();                  //updateOrder(order_code);//更新訂單狀態         Response.Redirect(""); //跳轉到支付成功頁面       }       else       {          Response.Write("支付失敗。");         Response.Write("<br>Result:responseTxt=" + responseTxt);         Response.Write("<br>Result:mysign=" + mysign);         Response.Write("<br>Result:sign=" + sign);       }       return View();     }       /// <summary>     /// 支付回調頁面     /// </summary>     /// <returns></returns>     public ActionResult AlipayNotify()     {         string alipayNotifyURL = "https://mapi.alipay.com/gateway.do?";       string partner = "";    //partner合作伙伴id(必須填寫)       string key = ""; //partner 的對應交易安全校驗碼(必須填寫)        alipayNotifyURL = alipayNotifyURL + "service=notify_verify" + "&partner=" + partner + "¬ify_id=" + Request.Form["notify_id"];        //獲取支付寶ATN返回結果,true是正確的訂單信息,false 是無效的       string responseTxt = Get_Http(alipayNotifyURL, 120000);        int i;       NameValueCollection coll;       //Load Form variables into NameValueCollection variable.       coll = Request.Form;        // 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 (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);       string mysign = GetMD5(prestr.ToString());       string sign = Request.QueryString["sign"];       string trade_status = Request.QueryString["trade_status"];        if (mysign == sign && responseTxt == "true" && trade_status == "TRADE_SUCCESS")  //驗證支付發過來的消息,簽名是否正確       {         string order_amount = Request.QueryString["total_fee"].ToString().Trim();         string order_code = Request.QueryString["out_trade_no"].ToString().Trim();                   // updateOrder(order_code);//更新訂單狀態         Response.Redirect(""); //跳轉到支付成功頁面       }       else       {          Response.Write("支付失敗。");         Response.Write("<br>Result:responseTxt=" + responseTxt);         Response.Write("<br>Result:mysign=" + mysign);         Response.Write("<br>Result:sign=" + sign);       }       return View();     }      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 GetMD5(string s)     {       /// <summary>       /// 與ASP兼容的MD5加密算法       /// </summary>        MD5 md5 = new MD5CryptoServiceProvider();       byte[] t = md5.ComputeHash(Encoding.GetEncoding("utf-8").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;     }    } } 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美性猛交久久久乱大交小说 | 亚洲自拍一区在线观看 | 日本在线免费电影 | 91精品久久久久久久久 | 国产色播av在线 | 超碰人人艹 | 日韩欧美一区二区三区免费观看 | 久草福利 | 成人观看免费视频 | 欧美三级视频 | 精品久久久久久亚洲综合网站 | 草草网站 | 国产精品一区二区免费在线观看 | 国产一区二区精品 | 一级黄色大片视频 | 久久久久久久久久一本门道91 | 91在线免费观看 | 在线观看免费视频91 | 日本天堂一区二区 | 动漫精品一区二区三区 | 伊人青青操 | 欧美日韩高清免费 | 国产婷婷久久 | 精品亚洲永久免费精品 | 黄桃av| 欧美 日韩 国产 一区 | 久久国产精品无码网站 | 日韩和欧美的一区二区 | 国产欧美在线观看 | 中文无吗 | 精品在线一区二区 | 久久国品片 | 国产成人久久 | 亚洲欧美另类久久久精品2019 | 久草在线在线精品观看 | 国产精品伦一区二区三级视频 | 狠狠色狠狠色综合网 | 中文字幕三区 | 免费a网站 | 成人国产一区二区 | 一区二区三区精品视频 |