Dotnet,OO,Design Patterns

导航

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 on 2008-07-12 18:40  HelloCode  阅读(1176)  评论(2)    收藏  举报