Dotnet,OO,Design Patterns

2008年7月22日 #

Enterprise Library 4.0 编译时异常的的解决办法

刚下了Enterprise Library 4.0编译时出现了点问题。

 

首先是发现Data Access Application Block项目编译时缺少SqlCeResultSet、ResultSetOptions等类,一检查,原来是缺少System.Data.SqlServerCe.dll。System.Data.SqlServerCe.dll是Microsoft SQL Server Compact Edition中的文件,于是只好下载SQL Server Compact Edition安装,再编译,发现还是有问题。在SqlCeDatabase的构造方法中需要的SqlCeProviderFactory微软竟然没有提供?检查了一下Enterprise Library 3.1,发现3.1的Data Access Application Block项目中没有包含Data.SqlCe,也就是缺少SqlCeProviderFactory类的的项目。

 

于是删除Data Access Application Block中的Data.SqlCe再编译,正确!

 

单独打开Data Access Application Block项目的Data.sln文件时发现,项目中竟然有System.Data.SqlServerCe.dll文件,文件的路径应该是\EntLib4Src\Lib\System.Data.SqlServerCe.dll。但是实际上文件是不存在的,比知道实际上应该有的System.Data.SqlServerCe.dll中是不是有SqlCeProviderFactory类。

posted @ 2008-07-22 04:27 HelloCode 阅读(105) 评论(0) 编辑

2008年7月12日 #

ICanPay 0.1.2 统一多个网关支付的工具

在0.1.2中对ICanPay做了2个修改。

一个是生成订单代码的接口调用从以前的使用 Response.Redirect(ps.PayGateway.BuildPaymentUrl()) 形式变成了 ps.Payment() 方法。

在调用 ps.Payment() 方法后将直接跳转到支付网站。ps.Payment() 相当于 以前的Response.Redirect(ps.PayGateway.BuildPaymentUrl()) ,产生支付订单的代码,并输出。

在以前的版本中因为需要判断PayGateway是实现了IPaymentUrl接口还是IPaymentForm接口,从而确定是调用BuildPaymentUrl
或者BuildPaymentForm。而现在统一为Payment方法。


第二个是修改是在PayGateway抽象基类增加了WriteSucceedFlag方法,用于输出成功接收到网关通知后,网关需要的标记成功接收到网关通知的字符串。例如Yeepay需要在成功接收到正确的订单后输出success字符串,所以在Yeepay的实现中:

1         protected override void WriteSucceedFlag()
2         {
3             System.Web.HttpContext.Current.Response.Write("success");
4         }

输出标记成功接收到网关通知的字符串有2个目的,第一个是通知网关不用再发送付款通知过来了,按已经收到了。第二个是有的网关需要通过这种形式输出标记成功接收到订单的字符串外,还需要在这里输出将客户跳转到的页面。在默认的实现中,如果网关需要输出跳转到的页面都是跳转到网站的主页。

因为有的网关要求输出标记成功接收到的字符串的时,要求不能包含其他任意字符。因此在接受网关通知的页面最好保持只有必须的

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Notify.aspx.cs" Inherits="Demo.Notify" %>

asp.net页面标记,而不要有其他代码。

ICanPay 项目网站:http://code.google.com/p/icanpay/
下载(包含源代码):http://icanpay.googlecode.com/files/ICanPay_0.1.2.zip
文档:http://code.google.com/p/icanpay/wiki/ICanPay

posted @ 2008-07-12 18:40 HelloCode 阅读(382) 评论(2) 编辑

2008年6月16日 #

ICanPay,一个统一多个网关支付的工具(包含源代码)

摘要: 因为前段时间需要使用网上支付来收款,为了简化各个网关的订单的产生跟网关通知的处理就做了这个ICanPay。目前可以支持财付通、中国网银、易宝、云网4家网上支付平台。 你可以通过对基类的实现以支持更多的网关,因为不少网关都需要签约后才能给开发文档,所以不方便测试,目前只能支持4家国内的支付网关。 有了ICanPay订单的生成跟网关通知的处理就简单多了,看一下例子吧。阅读全文

posted @ 2008-06-16 13:12 HelloCode 阅读(2577) 评论(12) 编辑