ASP.NET教程之付出宝接口(刚完成,应当是今朝最好的...
在经过全球个人PC市场占有90%的微软对asp.net不断优化与整合后,asp.net与微软自身平台的动用上更加的高效,加上asp.net在应用上非常容易上手,相信asp.net仍会是最多客户选用的脚本语言,并会在未来几年继续领跑。接口付出宝的接口挪用很不便利,刚做好一个封装,完成了假造买卖和什物买卖。办理计划中有三个项目和NDoc天生的文档,复杂的序列图:CommonAliPay,封装的付出宝接口。
TestAli,asp.net的测试项目
TestCommonAliPay,Nunit的测试项目。
挪用办法:
1、引进CommonAliPay.dll
2、完成付出宝服务接口的办法挪用体例:
AliPayap=newAliPay();
stringkey="";//填写本人的key
stringpartner="";//填写本人的Partner
StandardGoodsbp=newStandardGoods("trade_create_by_buyer",partner,key,"MD5","卡2",Guid.NewGuid().ToString(),2.551m,1,"hao_ding2000@yahoo.com.cn","hao_ding2000@yahoo.com.cn"
,"EMS",25.00m,"BUYER_PAY","1");
bp.Notify_Url="http://203.86.79.185/ali/notify.aspx";
ap.CreateStandardTrade("https://www.alipay.com/cooperate/gateway.do",bp,this);下面是通用的挪用体例。
上面是只撑持假造货品的体例:
stringkey="";//填写本人的key
stringpartner="";//填写本人的Partner
AliPayap=newAliPay();
DigitalGoodsbp=newDigitalGoods("create_digital_goods_trade_p",partner,key,"MD5","卡2",Guid.NewGuid().ToString(),2.551m,1,"hao_ding2000@yahoo.com.cn","hao_ding2000@yahoo.com.cn");
bp.Notify_Url="http://203.86.79.185/ali/notify.aspx";
ap.CreateDigitalTrade("https://www.alipay.com/cooperate/gateway.do",bp,this);3、完成付出宝关照接口办法的挪用(撑持假造和什物):
protectedvoidPage_Load(objectsender,EventArgse)
{
stringkey="";//填写本人的key
stringpartner="";//填写本人的Partner
AliPayap=newAliPay();
stringnotifyid=Request.Form["notify_id"];
Verifyv=newVerify("notify_verify",partner,notifyid);
ap.WaitSellerSendGoods+=newAliPay.ProcessNotifyEventHandler(ap_WaitSellerSendGoods);
ap.WaitBuyerPay+=newAliPay.ProcessNotifyEventHandler(ap_WaitBuyerPay);
ap.ProcessNotify(this,"https://www.alipay.com/cooperate/gateway.do",key,v,"utf-8");
}
voidap_WaitBuyerPay(objectsender,NotifyEventArgse)
{
////到场本人的处置逻辑
Log4net.log.Error("waitbuyerpayfire");
}
privatevoidap_WaitSellerSendGoods(objectsender,NotifyEventArgse)
{
//到场本人的处置逻辑
Log4net.log.Error("WaitSellerSendGoodsfire");
}付出宝的买卖形态都被界说成了相似称号的事务。
部分源代码剖析:
1、剖析Forms汇合到NotifyEventArgs类,由于前面此类的数据要用来做MD5Sign,以是一切值范例,不克不及存在初始值,如:int的0等。因而用Nullable范型。
privateNotifyEventArgsParseNotify(NameValueCollectionnv,objectobj)
{
PropertyInfo[]propertyInfos=obj.GetType().GetProperties(BindingFlags.Public|BindingFlags.Instance);
foreach(PropertyInfopiinpropertyInfos)
{
stringv=nv.Get(pi.Name.ToLower());
if(v!=null)
{
if(pi.PropertyType==typeof(string))
{
pi.SetValue(obj,v,null);
}
elseif(pi.PropertyType==typeof(int?))
{
pi.SetValue(obj,int.Parse(v),null);
}
elseif(pi.PropertyType==typeof(decimal?))
{
pi.SetValue(obj,decimal.Parse(v),null);
}
elseif(pi.PropertyType==typeof(DateTime?))
{
pi.SetValue(obj,DateTime.Parse(v),null);
}
elseif(pi.PropertyType==typeof(bool))
{
pi.SetValue(obj,bool.Parse(v),null);
}
else
{
//转型失利会抛出非常
pi.SetValue(obj,v,null);
}
}
}
return(NotifyEventArgs)obj;
}
2、从范例中猎取排序后的参数
/**////<summary>
///猎取排序后的参数
///</summary>
///<paramname="obj"></param>
///<returns></returns>
privateSortedList<string,string>GetParam(objectobj)
{
PropertyInfo[]propertyInfos=obj.GetType().GetProperties(BindingFlags.Public|BindingFlags.Instance);
SortedList<string,string>sortedList=newSortedList<string,string>(StringComparer.CurrentCultureIgnoreCase);
foreach(PropertyInfopiinpropertyInfos)
{
if(pi.GetValue(obj,null)!=null)
{
if(pi.Name=="Sign"||pi.Name=="Sign_Type")
{
continue;
}
sortedList.Add(pi.Name.ToLower(),pi.GetValue(obj,null).ToString());
}
}
returnsortedList;
}3、从SortedList中发生参数
privatestringGetUrlParam(SortedList<string,string>sortedList,boolisEncode)
{
StringBuilderparam=newStringBuilder();
StringBuilderencodeParam=newStringBuilder();
if(isEncode==false)
{
foreach(KeyValuePair<string,string>kvpinsortedList)
{
stringt=string.Format("{0}={1}",kvp.Key,kvp.Value);
param.Append(t+"&");
}
returnparam.ToString().TrimEnd(&);
}
else
{
foreach(KeyValuePair<string,string>kvpinsortedList)
{
stringet=string.Format("{0}={1}",HttpUtility.UrlEncode(kvp.Key),HttpUtility.UrlEncode(kvp.Value));
encodeParam.Append(et+"&");
}
returnencodeParam.ToString().TrimEnd(&);
}
}
J2EE比较成熟一点,一些比较出名的企业应用软件都是基于J2EE的。以后的发展就不好说了。不过java比较烦,学.net的话,微软把很多工具都封装好了,学起来可能容易一点。 主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。 关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。 PHP的源代码完全公开,在OpenSource意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI或者ASP等技术有了更好的表现。 主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。 业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。 平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。
页:
[1]