欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c# 實(shí)現(xiàn)的支付寶支付

 更新時間:2021年01月06日 16:50:27   作者:海市蜃樓2020  
這篇文章主要介紹了c# 實(shí)現(xiàn)的支付寶支付的方法,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下

C#支付寶掃碼支付示的具體代碼,供大家參考,具體內(nèi)容如下

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; //交換標(biāo)志 
   string temp; 
 
   bool exchange; 
 
   for (i = 0; i < r.Length; i++) //最多做R.Length-1趟排序 
   { 
    exchange = false; //本趟排序開始前,交換標(biāo)志應(yīng)為假 
 
    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; //發(fā)生了交換,故將交換標(biāo)志置為真 
     } 
    } 
 
    if (!exchange) //本趟排序未發(fā)生交換,提前終止算法 
    { 
     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; 
   //構(gòu)造數(shù)組; 
   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 
     }; 
    } 
 
 
   } 
   //進(jìn)行排序; 
   string[] Sortedstr = BubbleSort(Oristr); 
 
 
   //構(gòu)造待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); 
 
   //構(gòu)造支付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; 
 
   //構(gòu)造數(shù)組; 
   string[] Oristr ={ 
    "service="+service, 
    "partner=" + partner, 
    "out_trade_no=" + out_trade_no,  
    "_input_charset="+_input_charset   
 
    }; 
 
   //進(jìn)行排序; 
   string[] Sortedstr = BubbleSort(Oristr); 
 
 
   //構(gòu)造待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); 
 
   //構(gòu)造支付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賬戶的支付寶安全校驗(yàn)碼 
   string return_url = "http://localhost:1396/ApliayDemo/ApliyReturn"; //服務(wù)器通知返回接口 
   string notify_url = "http://localhost:1396/ApliayDemo/AlipayNotify"; //服務(wù)器通知返回接口 
   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 的對應(yīng)交易安全校驗(yàn)碼(必須填寫) 
   string _input_charset = "utf-8"; 
   string partner = "";  //partner合作伙伴id(必須填寫) 
 
   alipayNotifyURL = alipayNotifyURL + "service=notify_verify" + "&partner=" + partner + "¬ify_id=" + Request.QueryString["notify_id"]; 
 
   //獲取支付寶ATN返回結(jié)果,true是正確的訂單信息,false 是無效的 
   string responseTxt = Get_Http(alipayNotifyURL, 120000); 
 
   int i; 
   NameValueCollection coll; 
   coll = Request.QueryString; 
   String[] requestarr = coll.AllKeys; 
   //進(jìn)行排序; 
   string[] Sortedstr = BubbleSort(requestarr); 
 
   //構(gòu)造待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") //驗(yàn)證支付發(fā)過來的消息,簽名是否正確 
   { 
    string order_amount = Request.QueryString["total_fee"].ToString().Trim(); 
    string order_code = Request.QueryString["out_trade_no"].ToString().Trim(); 
 
    
    //updateOrder(order_code);//更新訂單狀態(tài) 
    Response.Redirect(""); //跳轉(zhuǎn)到支付成功頁面 
   } 
   else 
   { 
 
    Response.Write("支付失敗。"); 
    Response.Write("<br>Result:responseTxt=" + responseTxt); 
    Response.Write("<br>Result:mysign=" + mysign); 
    Response.Write("<br>Result:sign=" + sign); 
   } 
   return View(); 
  } 
 
 
  /// <summary> 
  /// 支付回調(diào)頁面 
  /// </summary> 
  /// <returns></returns> 
  public ActionResult AlipayNotify() 
  { 
 
 
   string alipayNotifyURL = "https://mapi.alipay.com/gateway.do?"; 
   string partner = "";  //partner合作伙伴id(必須填寫) 
   string key = ""; //partner 的對應(yīng)交易安全校驗(yàn)碼(必須填寫) 
 
   alipayNotifyURL = alipayNotifyURL + "service=notify_verify" + "&partner=" + partner + "¬ify_id=" + Request.Form["notify_id"]; 
 
   //獲取支付寶ATN返回結(jié)果,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; 
   //進(jìn)行排序; 
   string[] Sortedstr = BubbleSort(requestarr); 
   //構(gòu)造待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") //驗(yàn)證支付發(fā)過來的消息,簽名是否正確 
   { 
    string order_amount = Request.QueryString["total_fee"].ToString().Trim(); 
    string order_code = Request.QueryString["out_trade_no"].ToString().Trim(); 
 
 
    
    // updateOrder(order_code);//更新訂單狀態(tài) 
    Response.Redirect(""); //跳轉(zhuǎn)到支付成功頁面 
   } 
   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; //交換標(biāo)志 
   string temp; 
 
   bool exchange; 
 
   for (i = 0; i < r.Length; i++) //最多做R.Length-1趟排序 
   { 
    exchange = false; //本趟排序開始前,交換標(biāo)志應(yīng)為假 
 
    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; //發(fā)生了交換,故將交換標(biāo)志置為真 
     } 
    } 
 
    if (!exchange) //本趟排序未發(fā)生交換,提前終止算法 
    { 
     break; 
    } 
 
   } 
   return r; 
  } 
  //獲取遠(yuǎn)程服務(wù)器ATN結(jié)果 
  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; 
  } 
 
 } 
}

以上就是c# 實(shí)現(xiàn)的支付寶支付的詳細(xì)內(nèi)容,更多關(guān)于c# 支付寶支付的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解C# parallel中并行計算的四種寫法總結(jié)

    詳解C# parallel中并行計算的四種寫法總結(jié)

    在C#中,parallel關(guān)鍵字可以用于并行計算。本文為大家總結(jié)了四種C# parallel并行計算的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-11-11
  • C#實(shí)現(xiàn)TFTP客戶端的項目實(shí)踐

    C#實(shí)現(xiàn)TFTP客戶端的項目實(shí)踐

    TFTP不僅有斷點(diǎn)續(xù)傳,多用戶級別限制等功能,本文主要介紹了C#實(shí)現(xiàn)TFTP客戶端的項目實(shí)踐,具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • C#中字符串編碼處理

    C#中字符串編碼處理

    C#中字符串編碼處理,需要的朋友可以參考一下
    2013-03-03
  • 老生常談C#?中的?StreamReader?和?StreamWriter?類

    老生常談C#?中的?StreamReader?和?StreamWriter?類

    這篇文章主要介紹了老生常談C#?中的?StreamReader?和?StreamWriter?類,StreamReader?和?StreamWriter?位于?System.IO?命名空間中,當(dāng)您想要讀取或?qū)懭牖谧址臄?shù)據(jù)時,這兩個類都很有用,需要的朋友可以參考下
    2024-06-06
  • c# Linq常用的小技巧

    c# Linq常用的小技巧

    這篇文章主要介紹了c# Linq常用的小技巧,文中講解非常詳細(xì),示例代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • C#對桌面應(yīng)用程序自定義鼠標(biāo)光標(biāo)

    C#對桌面應(yīng)用程序自定義鼠標(biāo)光標(biāo)

    這篇文章介紹了C#對桌面應(yīng)用程序自定義鼠標(biāo)光標(biāo)的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • c# Thread類的用法詳解

    c# Thread類的用法詳解

    這篇文章主要介紹了c# Thread類的用法的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c#的相關(guān)知識,感興趣的朋友可以了解下
    2020-11-11
  • .net實(shí)現(xiàn)裁剪網(wǎng)站上傳圖片的方法

    .net實(shí)現(xiàn)裁剪網(wǎng)站上傳圖片的方法

    這篇文章主要介紹了.net實(shí)現(xiàn)裁剪網(wǎng)站上傳圖片的方法,比較實(shí)用的功能,需要的朋友可以參考下
    2014-07-07
  • 如何在datatable中使用groupby進(jìn)行分組統(tǒng)計

    如何在datatable中使用groupby進(jìn)行分組統(tǒng)計

    如何在datatable中進(jìn)行分組,并且計算分組后每組的數(shù)量,考慮了一下,可以使用LINQ來實(shí)現(xiàn)datatable分組,需要的朋友可以參考下
    2015-08-08
  • Unity3D使用Shader實(shí)現(xiàn)腐蝕消失

    Unity3D使用Shader實(shí)現(xiàn)腐蝕消失

    這篇文章主要為大家詳細(xì)介紹了Unity3D使用Shader實(shí)現(xiàn)腐蝕消失,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02

最新評論