ICanPay,一个统一多个网关支付的工具(包含源代码)
因为前段时间需要使用网上支付来收款,为了简化各个网关的订单的产生跟网关通知的处理就做了这个ICanPay。目前可以支持财付通、中国网银、易宝、云网4家网上支付平台。
你可以通过对基类的实现以支持更多的网关,因为不少网关都需要签约后才能给开发文档,所以不方便测试,目前只能支持4家国内的支付网关。
有了ICanPay订单的生成跟网关通知的处理就简单多了,看一下例子吧。
生成订单:
// 设置付款数据
PaymentSetting<YeepayGateway> ps = new PaymentSetting<YeepayGateway>();
ps.PayGateway.Merchant.UserName = "10000432521";
ps.PayGateway.Merchant.Key = "8UPp0KE8sq73zVP370vko7C39403rtK1YwX40Td6irH216036H27Eb12792t";
ps.PayGateway.Merchant.NotifyUrl = "http://yousite.com/Notify.aspx";
ps.PayGateway.Order.OrderId = "1564515";
ps.PayGateway.Order.Amount = 0.01;

// 创建付款的Url
Response.Redirect(ps.PayGateway.BuildPaymentUrl());
// 商户的帐号跟密钥
Merchant yeepayMerchant = new Merchant();
yeepayMerchant.UserName = "10000432521";
yeepayMerchant.Key = "8UPp0KE8sq73zVP370vko7C39403rtK1YwX40Td6irH216036H27Eb12792t";

PaymentNotify paymentNotify = PayGatewayFactory.GetGatewayNotify();

// 没有收到可识别的网关通知
if (paymentNotify == null)
{
return;
}

// 使用相应网关的商户数据以验证通知数据是否正确
switch (paymentNotify.PayGateway.GatewayName)
{
case GatewayType.YeePay:
paymentNotify.PayGateway.Merchant = yeepayMerchant;
break;
}

if (paymentNotify.HasNotify)
{
double amount = paymentNotify.PayGateway.Order.Amount;
string orderId = paymentNotify.PayGateway.Order.OrderId;

// 判断amount、orderId跟数据库订单记录是否符合,再处理付款。
}
你可以通过对基类的实现以支持更多的网关,因为不少网关都需要签约后才能给开发文档,所以不方便测试,目前只能支持4家国内的支付网关。
有了ICanPay订单的生成跟网关通知的处理就简单多了,看一下例子吧。
生成订单:
// 设置付款数据
PaymentSetting<YeepayGateway> ps = new PaymentSetting<YeepayGateway>();
ps.PayGateway.Merchant.UserName = "10000432521";
ps.PayGateway.Merchant.Key = "8UPp0KE8sq73zVP370vko7C39403rtK1YwX40Td6irH216036H27Eb12792t";
ps.PayGateway.Merchant.NotifyUrl = "http://yousite.com/Notify.aspx";
ps.PayGateway.Order.OrderId = "1564515";
ps.PayGateway.Order.Amount = 0.01;
// 创建付款的Url
Response.Redirect(ps.PayGateway.BuildPaymentUrl());
接受网关通知:
// 商户的帐号跟密钥
Merchant yeepayMerchant = new Merchant();
yeepayMerchant.UserName = "10000432521";
yeepayMerchant.Key = "8UPp0KE8sq73zVP370vko7C39403rtK1YwX40Td6irH216036H27Eb12792t";
PaymentNotify paymentNotify = PayGatewayFactory.GetGatewayNotify();
// 没有收到可识别的网关通知
if (paymentNotify == null)
{
return;
}
// 使用相应网关的商户数据以验证通知数据是否正确
switch (paymentNotify.PayGateway.GatewayName)
{
case GatewayType.YeePay:
paymentNotify.PayGateway.Merchant = yeepayMerchant;
break;
}
if (paymentNotify.HasNotify)
{
double amount = paymentNotify.PayGateway.Order.Amount;
string orderId = paymentNotify.PayGateway.Order.OrderId;
// 判断amount、orderId跟数据库订单记录是否符合,再处理付款。
}
项目网站:http://code.google.com/p/icanpay/
下载(包含源代码):http://icanpay.googlecode.com/files/ICanPay%200.1.zip
文档:http://code.google.com/p/icanpay/wiki/ICanPay


浙公网安备 33010602011771号