亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > 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#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产黄色片| 日本免费在线精品| 国产激情久久久久| 国产精品亚洲精品| 国产精品久久电影观看| 国模叶桐国产精品一区| 欧美日韩亚洲成人| 亚洲在线免费看| 97超级碰碰人国产在线观看| 色妞一区二区三区| 中文字幕精品一区二区精品| 日韩欧美在线网址| 亚洲国产精品人人爽夜夜爽| 91精品视频一区| 成人性生交xxxxx网站| 55夜色66夜色国产精品视频| 欧美亚洲视频在线观看| 欧美一区深夜视频| 久久久之久亚州精品露出| 久久精品国产一区二区三区| 亚洲精品自产拍| 精品magnet| 国产精品一区二区久久国产| 中文字幕亚洲色图| 日韩精品在线观看一区二区| 欧洲成人免费aa| 97超级碰碰碰| 亚洲国产精彩中文乱码av在线播放| 国产精品高清在线| 中文字幕亚洲无线码a| 日韩在线播放av| 国产成人aa精品一区在线播放| 欧美性受xxxx黑人猛交| 色狠狠av一区二区三区香蕉蜜桃| 国产精品444| 国产欧美精品一区二区三区-老狼| 亚洲大胆人体在线| 国产精品一香蕉国产线看观看| 精品久久久香蕉免费精品视频| 亚洲精品中文字幕女同| 欧美性受xxxx白人性爽| 一区二区三区天堂av| 51ⅴ精品国产91久久久久久| 亚洲精品视频中文字幕| 久久好看免费视频| 亚洲色图综合久久| 亚洲韩国青草视频| www.xxxx精品| 青青a在线精品免费观看| 国产精品揄拍500视频| 黄网站色欧美视频| 国产成人在线一区二区| 国产一区二区免费| 日韩av男人的天堂| 久久精品最新地址| 欧美在线免费观看| 国内精品久久影院| 欧美激情视频在线免费观看 欧美视频免费一| 91精品在线一区| 成人信息集中地欧美| 1769国内精品视频在线播放| 成人免费观看a| 亚洲综合在线中文字幕| 免费91在线视频| 成人精品一区二区三区电影免费| 日韩高清欧美高清| 久久91亚洲精品中文字幕| 亚洲第一网站免费视频| 一区二区三区视频免费在线观看| 国产精品视频白浆免费视频| 九九精品视频在线观看| 国产午夜精品一区二区三区| 亚洲专区在线视频| 欧美激情aaaa| 精品亚洲aⅴ在线观看| 欧美在线xxx| 日韩av电影院| 91久久嫩草影院一区二区| 日本精品中文字幕| 国产精品18久久久久久首页狼| 久久视频这里只有精品| 成人在线视频网站| 欧美国产精品人人做人人爱| 亚州国产精品久久久| 国产精品亚洲综合天堂夜夜| 亚洲一区二区三区四区视频| 亚洲福利视频专区| 亚洲欧洲国产伦综合| 91精品国产成人www| 欧美日本亚洲视频| 欧美黄色三级网站| 亚洲精品小视频在线观看| 亚洲2020天天堂在线观看| 国产精品69久久久久| 国产免费观看久久黄| 成人疯狂猛交xxx| 久久精品国产成人| 欧美黄色片在线观看| 久久久久久国产精品| 欧美日本亚洲视频| 日韩av快播网址| 日韩av成人在线| 亚洲精品免费在线视频| 欧美在线视频观看免费网站| 成人黄色免费网站在线观看| 国产精品中文字幕在线| 96国产粉嫩美女| 亚洲精品永久免费精品| 国产欧美精品一区二区三区介绍| 国产精品一区二区久久精品| 在线视频中文亚洲| 国产精品一区二区三区免费视频| 久久视频在线直播| 国产区精品在线观看| 91久久久在线| 欧美在线免费视频| 久久久久久久香蕉网| 久久久女女女女999久久| 国产日韩欧美电影在线观看| 91热福利电影| 亚洲成人av片在线观看| 97视频在线观看视频免费视频| 国产精品久久久久久av下载红粉| 少妇高潮 亚洲精品| 91精品国产99久久久久久| 亚洲第一区在线观看| 69久久夜色精品国产69| 欧美黑人一区二区三区| 亚洲自拍欧美色图| 色偷偷亚洲男人天堂| 精品人伦一区二区三区蜜桃免费| 国产精品亚洲综合天堂夜夜| 成人亚洲激情网| 日韩在线观看你懂的| 亚洲jizzjizz日本少妇| 国产美女精品视频免费观看| 国产精品欧美风情| 欧美午夜激情在线| 成人免费午夜电影| 国产色婷婷国产综合在线理论片a| 亚洲色图av在线| 亚洲最大的免费| 欧美亚洲另类激情另类| 97精品久久久中文字幕免费| 北条麻妃久久精品| 欧美黄色片在线观看| 成人黄色在线观看| 亚洲久久久久久久久久| 久久久精品日本| 浅井舞香一区二区| 91精品国产99久久久久久| 国产aaa精品| 精品国产欧美一区二区三区成人| 欧美第一黄网免费网站| 中文字幕亚洲专区| 亚洲最大的av网站| 欧美激情乱人伦一区| 欧美理论电影在线播放| 亚洲风情亚aⅴ在线发布| 亚洲精品一区二区久| 日韩欧美在线视频| 欧美孕妇毛茸茸xxxx| 亚洲人成77777在线观看网| 国产亚洲精品一区二555|