Csharp/C#教程:C#支付宝扫码支付代码完整版分享

本文实例为大家分享了C#支付宝扫码支付示的具体代码,供大家参考,具体内容如下

支付宝工具类

usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Security.Cryptography; usingSystem.Text; usingSystem.Web; namespaceZK_ECommerce.Shop.pay.alipay { publicclassAliPay { publicstaticstringGetMD5(strings,string_input_charset) { ///<summary> ///与ASP兼容的MD5加密算法 ///</summary> MD5md5=newMD5CryptoServiceProvider(); byte[]t=md5.ComputeHash(Encoding.GetEncoding(_input_charset).GetBytes(s)); StringBuildersb=newStringBuilder(32); for(inti=0;i<t.Length;i++) { sb.Append(t[i].ToString("x").PadLeft(2,'0')); } returnsb.ToString(); } publicstaticstring[]BubbleSort(string[]r) { ///<summary> ///冒泡排序法 ///</summary> inti,j;//交换标志 stringtemp; boolexchange; 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; } } returnr; } publicstringCreatUrl( stringgateway, stringservice, stringpartner, stringsign_type, stringout_trade_no, stringsubject, stringbody, stringpayment_type, stringtotal_fee, stringshow_url, stringseller_email, stringkey, stringreturn_url, string_input_charset, stringnotify_url, stringextra_common_param="" ) { returnCreatUrl( 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); } publicstringCreatUrl( stringgateway, stringservice, stringpartner, stringsign_type, stringout_trade_no, stringsubject, stringbody, stringpayment_type, stringtotal_fee, stringshow_url, stringseller_email, stringkey, stringreturn_url, string_input_charset, stringnotify_url, stringtoken, stringextra_common_param="" ) { ///<summary> ///2015年11月17日14:08:00 ///</summary> inti; 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摘要字符串; StringBuilderprestr=newStringBuilder(); 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摘要; stringsign=GetMD5(prestr.ToString(),_input_charset); //构造支付Url; char[]delimiterChars={'='}; StringBuilderparameter=newStringBuilder(); 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; returnparameter.ToString(); } publicstringCreatUrl_MissPayments( stringgateway, stringservice, stringpartner, stringsign_type, stringout_trade_no, stringkey, string_input_charset ) { ///<summary> ///createdbysunzhizhi2006.5.21,sunzhizhi@msn.com。 ///</summary> inti; //构造数组; string[]Oristr={ "service="+service, "partner="+partner, "out_trade_no="+out_trade_no, "_input_charset="+_input_charset }; //进行排序; string[]Sortedstr=BubbleSort(Oristr); //构造待md5摘要字符串; StringBuilderprestr=newStringBuilder(); 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摘要; stringsign=GetMD5(prestr.ToString(),_input_charset); //构造支付Url; char[]delimiterChars={'='}; StringBuilderparameter=newStringBuilder(); 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; returnparameter.ToString(); } publicstaticstringGetTranSign(stringTranData) { if(string.IsNullOrWhiteSpace(TranData)) returnnull; stringsign=GetMD5(TranData+"alskdjfaow;fjel;asdjf","utf-8"); returnsign; } } }

页面处理

usingSystem; usingSystem.Collections.Generic; usingSystem.Collections.Specialized; usingSystem.IO; usingSystem.Linq; usingSystem.Net; usingSystem.Security.Cryptography; usingSystem.Text; usingSystem.Web; usingSystem.Web.Mvc; usingZK_ECommerce.Shop.pay.alipay; namespaceAlipay.Controllers { publicclassApliayDemoController:Controller { ///<summary> ///支付页面 ///</summary> ///<paramname="ordercode"></param> ///<returns></returns> publicActionResultIndex(stringordercode) { stringout_trade_no=ordercode; stringgateway="https://mapi.alipay.com/gateway.do?";//支付接口 stringservice="create_direct_pay_by_user"; stringpartner="";//partner合作伙伴ID保留字段 stringsign_type="MD5"; stringpayment_type="1";//支付类型 stringshow_url="https://www.letao.com"; stringseller_email="";//卖家账号 stringkey="";//partner账户的支付宝安全校验码 stringreturn_url="https://localhost:1396/ApliayDemo/ApliyReturn";//服务器通知返回接口 stringnotify_url="https://localhost:1396/ApliayDemo/AlipayNotify";//服务器通知返回接口 string_input_charset="utf-8"; stringextra_common_param="COD2MOTOPAY";//表示快捷支付 stringtoken=string.Empty; if(string.IsNullOrEmpty(token)) token=""; stringsubject="康康体检套餐";//subject商品名称 stringbody="测试商品";//商品描述 stringtotal_fee="0.01"; AliPayap=newAliPay(); stringaliay_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); returnRedirect(aliay_url); } ///<summary> ///返回通知页面 ///</summary> ///<returns></returns> publicActionResultApliyReturn() { stringalipayNotifyURL="https://mapi.alipay.com/gateway.do?"; stringkey="";//partner的对应交易安全校验码(必须填写) string_input_charset="utf-8"; stringpartner="";//partner合作伙伴id(必须填写) alipayNotifyURL=alipayNotifyURL+"service=notify_verify"+"&partner="+partner+"¬ify_id="+Request.QueryString["notify_id"]; //获取支付宝ATN返回结果,true是正确的订单信息,false是无效的 stringresponseTxt=Get_Http(alipayNotifyURL,120000); inti; NameValueCollectioncoll; coll=Request.QueryString; String[]requestarr=coll.AllKeys; //进行排序; string[]Sortedstr=BubbleSort(requestarr); //构造待md5摘要字符串; StringBuilderprestr=newStringBuilder(); 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); stringmysign=GetMD5(prestr.ToString(),_input_charset); stringsign=Request.QueryString["sign"]; stringtrade_status=Request.QueryString["trade_status"]; if(mysign==sign&&responseTxt=="true"&&trade_status=="TRADE_SUCCESS")//验证支付发过来的消息,签名是否正确 { stringorder_amount=Request.QueryString["total_fee"].ToString().Trim(); stringorder_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); } returnView(); } ///<summary> ///支付回调页面 ///</summary> ///<returns></returns> publicActionResultAlipayNotify() { stringalipayNotifyURL="https://mapi.alipay.com/gateway.do?"; stringpartner="";//partner合作伙伴id(必须填写) stringkey="";//partner的对应交易安全校验码(必须填写) alipayNotifyURL=alipayNotifyURL+"service=notify_verify"+"&partner="+partner+"¬ify_id="+Request.Form["notify_id"]; //获取支付宝ATN返回结果,true是正确的订单信息,false是无效的 stringresponseTxt=Get_Http(alipayNotifyURL,120000); inti; NameValueCollectioncoll; //LoadFormvariablesintoNameValueCollectionvariable. coll=Request.Form; //Getnamesofallformsintoastringarray. String[]requestarr=coll.AllKeys; //进行排序; string[]Sortedstr=BubbleSort(requestarr); //构造待md5摘要字符串; StringBuilderprestr=newStringBuilder(); 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); stringmysign=GetMD5(prestr.ToString()); stringsign=Request.QueryString["sign"]; stringtrade_status=Request.QueryString["trade_status"]; if(mysign==sign&&responseTxt=="true"&&trade_status=="TRADE_SUCCESS")//验证支付发过来的消息,签名是否正确 { stringorder_amount=Request.QueryString["total_fee"].ToString().Trim(); stringorder_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); } returnView(); } publicstaticstringGetMD5(strings,string_input_charset) { ///<summary> ///与ASP兼容的MD5加密算法 ///</summary> MD5md5=newMD5CryptoServiceProvider(); byte[]t=md5.ComputeHash(Encoding.GetEncoding(_input_charset).GetBytes(s)); StringBuildersb=newStringBuilder(32); for(inti=0;i<t.Length;i++) { sb.Append(t[i].ToString("x").PadLeft(2,'0')); } returnsb.ToString(); } publicstaticstringGetMD5(strings) { ///<summary> ///与ASP兼容的MD5加密算法 ///</summary> MD5md5=newMD5CryptoServiceProvider(); byte[]t=md5.ComputeHash(Encoding.GetEncoding("utf-8").GetBytes(s)); StringBuildersb=newStringBuilder(32); for(inti=0;i<t.Length;i++) { sb.Append(t[i].ToString("x").PadLeft(2,'0')); } returnsb.ToString(); } publicstaticstring[]BubbleSort(string[]r) { ///<summary> ///冒泡排序法 ///</summary> inti,j;//交换标志 stringtemp; boolexchange; 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; } } returnr; } //获取远程服务器ATN结果 publicStringGet_Http(Stringa_strUrl,inttimeout) { stringstrResult; try { HttpWebRequestmyReq=(HttpWebRequest)HttpWebRequest.Create(a_strUrl); myReq.Timeout=timeout; HttpWebResponseHttpWResp=(HttpWebResponse)myReq.GetResponse(); StreammyStream=HttpWResp.GetResponseStream(); StreamReadersr=newStreamReader(myStream,Encoding.Default); StringBuilderstrBuilder=newStringBuilder(); while(-1!=sr.Peek()) { strBuilder.Append(sr.ReadLine()); } strResult=strBuilder.ToString(); } catch(Exceptionexp) { strResult="错误:"+exp.Message; } returnstrResult; } } } 您可能感兴趣的文章:C#MVC微信支付教程系列之扫码支付代码实例c#版在pc端发起微信扫码支付的实例基于C#实现微信支付宝扫码支付功能

标签: 支付宝 扫码支付

user32.dll 函数说明小结

C# 输出字符串到文本文件中的实现代码

上述就是C#学习教程:C#支付宝扫码支付代码完整版分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/908198.html

(0)
上一篇 2021年10月25日
下一篇 2021年10月25日

精彩推荐