支付宝接口源代码(刚完成,应该是目前最好的了)
来源:互联网 发布:js如何给对象添加属性 编辑:程序博客网 时间:2024/04/29 05:38
支付宝接口源代码(刚完成,应该是目前最好的了)
点击次数 415 添加日期 2007-2-16 18:44:12 回复次数 2 最后更新 2007-2-16 18:49:17 所属分类 .NetFramework 转自【bluewater】 编辑 删除 【增大字体】 【缩小字体】 【系统默认字体】
点击次数 415 添加日期 2007-2-16 18:44:12 回复次数 2 最后更新 2007-2-16 18:49:17 所属分类 .NetFramework 转自【bluewater】 编辑 删除 【增大字体】 【缩小字体】 【系统默认字体】
支付宝的接口调用很不方便,刚做好一个封装,实现了虚拟交易和实物交易。
解决方案中有三个项目以及NDoc生成的文档,简单的序列图:CommonAliPay,封装的支付宝接口。
TestAli,asp.net的测试项目
TestCommonAliPay,Nunit的测试项目。
源代码下载地址:http://www.cnblogs.com/Files/bluewater/CommonAliPay.rar
调用方法:
1、引入CommonAliPay.dll
2、实现支付宝服务接口的方法调用方式:
上面是通用的调用方式。
下面是只支持虚拟货物的方式:
3、实现支付宝通知接口方法的调用(支持虚拟和实物):
支付宝的交易状态都被定义成了类似名称的事件。
部分源代码解析:
1、解析Forms集合到NotifyEventArgs类,因为后面此类的数据要用来做MD5Sign,所以所有值类型,不能存在初始值,如:int的0等。因此用Nullable范型。
2、从类型中获取排序后的参数
3、从SortedList中产生参数
下载地址
http://www.cnblogs.com/Files/bluewater/CommonAliPay.rar
因为时间很紧,有些地方还不完善,大家提出意见,有时间我会修改的
网上赠与服务集成技术文档V1.35.pdf
http://www.chenjiliang.com/Article/ArticleAttach/84/2123/apply_alipay_donate_service.zip
解决方案中有三个项目以及NDoc生成的文档,简单的序列图:CommonAliPay,封装的支付宝接口。
TestAli,asp.net的测试项目
TestCommonAliPay,Nunit的测试项目。
源代码下载地址:http://www.cnblogs.com/Files/bluewater/CommonAliPay.rar
调用方法:
1、引入CommonAliPay.dll
2、实现支付宝服务接口的方法调用方式:
AliPay ap = new AliPay();string key = "";//填写自己的keystring partner = "";//填写自己的PartnerStandardGoods bp = new StandardGoods("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);
上面是通用的调用方式。
下面是只支持虚拟货物的方式:
string key = "";//填写自己的keystring partner = "";//填写自己的PartnerAliPay ap = new AliPay();DigitalGoods bp = new DigitalGoods("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、实现支付宝通知接口方法的调用(支持虚拟和实物):
protected void Page_Load(object sender, EventArgs e){ string key = "";//填写自己的key string partner = "";//填写自己的Partner AliPay ap = new AliPay(); string notifyid = Request.Form["notify_id"]; Verify v = new Verify("notify_verify", partner, notifyid); ap.WaitSellerSendGoods += new AliPay.ProcessNotifyEventHandler(ap_WaitSellerSendGoods); ap.WaitBuyerPay += new AliPay.ProcessNotifyEventHandler(ap_WaitBuyerPay); ap.ProcessNotify(this, "https://www.alipay.com/cooperate/gateway.do", key, v, "utf-8");}void ap_WaitBuyerPay(object sender, NotifyEventArgs e){ // //加入自己的处理逻辑 Log4net.log.Error("wait buyer pay fire");}private void ap_WaitSellerSendGoods(object sender, NotifyEventArgs e){ //加入自己的处理逻辑 Log4net.log.Error("WaitSellerSendGoods fire");}
支付宝的交易状态都被定义成了类似名称的事件。
部分源代码解析:
1、解析Forms集合到NotifyEventArgs类,因为后面此类的数据要用来做MD5Sign,所以所有值类型,不能存在初始值,如:int的0等。因此用Nullable范型。
private NotifyEventArgs ParseNotify(NameValueCollection nv, object obj){ PropertyInfo[] propertyInfos = obj.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (PropertyInfo pi in propertyInfos) { string v = nv.Get(pi.Name.ToLower()); if (v != null) { if (pi.PropertyType == typeof(string)) { pi.SetValue(obj, v, null); } else if (pi.PropertyType == typeof(int?)) { pi.SetValue(obj, int.Parse(v), null); } else if (pi.PropertyType == typeof(decimal?)) { pi.SetValue(obj, decimal.Parse(v), null); } else if (pi.PropertyType == typeof(DateTime?)) { pi.SetValue(obj, DateTime.Parse(v), null); } else if (pi.PropertyType == typeof(bool)) { pi.SetValue(obj, bool.Parse(v), null); } else { //转型失败会抛出异常 pi.SetValue(obj, v, null); } } } return (NotifyEventArgs) obj;}
2、从类型中获取排序后的参数
/// <summary>/// 获取排序后的参数/// </summary>/// <param name="obj"></param>/// <returns></returns>private SortedList<string, string> GetParam(object obj){ PropertyInfo[] propertyInfos = obj.GetType().GetProperties( BindingFlags.Public | BindingFlags.Instance); SortedList<string, string> sortedList = new SortedList<string, string>(StringComparer.CurrentCultureIgnoreCase); foreach (PropertyInfo pi in propertyInfos) { 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()); } } return sortedList;}
3、从SortedList中产生参数
private string GetUrlParam(SortedList<string, string> sortedList, bool isEncode){ StringBuilder param = new StringBuilder(); StringBuilder encodeParam = new StringBuilder(); if (isEncode == false) { foreach (KeyValuePair<string, string> kvp in sortedList) { string t = string.Format("{0}={1}", kvp.Key, kvp.Value); param.Append(t + "&"); } return param.ToString().TrimEnd('&'); } else { foreach (KeyValuePair<string, string> kvp in sortedList) { string et = string.Format("{0}={1}", HttpUtility.UrlEncode(kvp.Key), HttpUtility.UrlEncode(kvp.Value)); encodeParam.Append(et + "&"); } return encodeParam.ToString().TrimEnd('&'); }}
下载地址
http://www.cnblogs.com/Files/bluewater/CommonAliPay.rar
因为时间很紧,有些地方还不完善,大家提出意见,有时间我会修改的
网上赠与服务集成技术文档V1.35.pdf
http://www.chenjiliang.com/Article/ArticleAttach/84/2123/apply_alipay_donate_service.zip
相关附件
1 commonalipay.rar 文件大小 [483.245K] 下载次数 [42]
说明:
上 5 篇文章 · 支付宝Payto接口的c#.net实现 · C#.net 支付宝接口 · 一个阴历阳历互相转化的类(C#源码) · C#中捕捉对话框的文本内容 EnumChildWindows · OWC绘图控件研究
下 5 篇文章 · 不排序和可以重复Key的SortedList · 如何让.NET中的强类型的排序列表SortedList支持重复键 · 手机短信和AT指令VS2005源代码,含插件式结构,方便扩展 · C#的鼠标控制代码 · app.config的节点AppSetting新增或修改操作
网友评论 Notify.aspx通过支付宝返回后,总是有错误,怎样解决? 张亮 #1 string orderNo = Request["out_trade_no"];
获取传过来的订单号是否应该是这一句?
2007-3-14 21:15:23 没有通过支付宝实名验证,未调试过哦。 阿良 #2 试试order_no看看行不行。
我这里提供的是网上赠与的技术文档,这里说的应该是商城之类的,具体自动下载。
out_trade_no
外部交易号,合作伙伴交易号,确保在合作伙伴系统中唯一
order_no
商户系统订单号,对应交易在商户系统内的流水号
还有个notyfy_id,支付宝通知流水号,合作伙伴可以用这个流水号询问支付宝该条通知的合法性
获取传过来的订单号是否应该是这一句?
2007-3-14 21:15:23
我这里提供的是网上赠与的技术文档,这里说的应该是商城之类的,具体自动下载。
out_trade_no
外部交易号,合作伙伴交易号,确保在合作伙伴系统中唯一
order_no
商户系统订单号,对应交易在商户系统内的流水号
还有个notyfy_id,支付宝通知流水号,合作伙伴可以用这个流水号询问支付宝该条通知的合法性
- 支付宝接口源代码(刚完成,应该是目前最好的了)
- 支付宝接口源代码(刚完成,应该是目前最好的了)
- 支付宝接口(刚完成,应该是目前最好的了,含源代码) 收到研究下
- 支付宝接口(刚完成,应该是目前最好的了)
- 支付宝接口(目前应该是好的)
- 我们完成了易宝Magento支付接口的开发
- hydrophobia的水应该是目前最好的吧
- 支付宝接口源代码
- 支付宝接口源代码
- 支付宝接口源代码
- 支付宝接口源代码
- 分享刚完成的模拟记事本的java源代码
- XCode 内置了 OCUnit 单元测试框架,但目前最好用的测试框架应该是 GHUnit。通过 GHUnit + OCMock 组合,我们可以在 iOS 下进行较强大的单元测试功能。本文将演示如何在
- 这个应该是目前最全的Tracking相关的文章了
- 60 余家免费正版图片网站,应该是目前最全的的集合了【收藏】
- 这应该是目前最系统的 Android 界面性能调优资料了
- 这应该是目前最系统的 Android 界面性能调优资料了
- 调用支付宝接口,完成付款功能
- 关于web2.0小知识
- richedit 中的链接问题
- 我的第一篇博客文章
- Java持久性API(JPA)第2讲——完成信息添加
- 要回去休息了
- 支付宝接口源代码(刚完成,应该是目前最好的了)
- [源码] Sambar Server ISAPI Search extension
- 51.la 验证码识别程序完成...
- Swing组件---JTree
- 源码 Sambar ISAPI TEST
- 源码 Sambar ISAPI "hello.dll"
- 跟一个四川MM一起逛街
- 源码 Hello, World!
- 如何实现组合?