.NET支付类库

.NET支付类库 .Net 第1张

1、配置文件

项目文件添加Config文件夹,文件中添加对应xml文件


AlipayConfig.xml

<?xml version="1.0" encoding="utf-8" ?>
<Config>
<Partner>合作身份者ID,以2088开头由16位纯数字组成的字符串</Partner>
<Seller>收款支付宝账号(邮箱地址)</Seller>
<Key>交易安全检验码,由数字和字母组成的32位字符串</Key>
</Config>


UnionPayConfig.xml

<?xml version="1.0" encoding="utf-8" ?>
<Config>
<MerId>2222222222</MerId>
<Version>222222222</Version>
<Encoding>2222222222</Encoding>
<SignMethod>oeeeeq3iez</SignMethod>
<TxnType>eebq3iez</TxnType>
<TxnSubType>oeee3kstubbq3iez</TxnSubType>
<BizType>ood1jmeeeq3iez</BizType>
<ChannelType>ood1eeez</ChannelType>
<AccessType>ood1eeee3iez</AccessType>
<CurrencyCode>ood1jmcnez</CurrencyCode>
<SignCertpwd>ood1jmcnhjee</SignCertpwd>
<FrontTransUrl>ood1eetubbq3iez</FrontTransUrl>
<CertPath>ood1jmcnhjm2aeee3iez</CertPath>
</Config>


WxPay_AppConfig.xml

<?xml version="1.0" encoding="utf-8" ?>
<Config>
<AppId>wx09a1334d45f1</AppId>
<AppSecret>100000000000000000000000000</AppSecret>
<MchId>12312311</MchId>
<Key>kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk</Key>
</Config>


WxPayConfig.xml

<?xml version="1.0" encoding="utf-8" ?>
<Config>
<AppId>wx09a1334d45f1</AppId>
<AppSecret>100000000000000000000000000</AppSecret>
<MchId>12312311</MchId>
<Key>kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk</Key>
</Config>

2、发起支付

protected void Page_Load(object sender, EventArgs e)
{
    ////////////////////////////////////////////请求参数////////////////////////////////////////////
    //必填,不能修改
    //服务器异步通知页面路径
    string notify_url = "http://商户网关地址/create_direct_pay_by_user-CSHARP-UTF-8/notify_url.aspx";
    //需http://格式的完整路径,不能加?id=123这类自定义参数
    //页面跳转同步通知页面路径
    string return_url = "http://商户网关地址/create_direct_pay_by_user-CSHARP-UTF-8/return_url.aspx";
    //需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/
    //商户订单号
    string out_trade_no = DateTime.Now.ToString("xxxxxx00001");
    //商户网站订单系统中唯一订单号,必填
    //订单名称
    string subject = "订单名称";
    //必填
    //付款金额
    string total_fee = "0.01";
    //必填
    //订单描述
    string body = "订单描述";
    //商品展示地址
    string show_url = "http://www.bollshow.com";
    //需以http://开头的完整路径,例如:http://www.商户网址.com/myorder.html
    //支付宝防钓鱼时间戳
    //string anti_phishing_key = Genius.Payment.Alipay.Submit.Query_timestamp();
    //若要使用请调用类文件submit中的query_timestamp函数
    //客户端的IP地址
    string exter_invoke_ip = "221.0.0.1";
    //支付宝二维码支付
    string sHtmlText = Genius.Payment.Alipay.Utils.SendRequest(out_trade_no, subject, body, total_fee, notify_url, return_url, show_url);
    Response.Write(sHtmlText);
    //微信支付url
    string xx=Genius.Payment.WeiXinpay.QRUtils.SendRequest(out_trade_no,0.01m,"xxxxxxxxxx", notify_url, return_url);
    //银联支付
    Genius.Payment.UnionPay.Utils.SendRequest(out_trade_no, 0.01m, "xxxxxxxxxx", notify_url, return_url);
}

3、支付同步回调

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Specialized;
using System.Collections.Generic;

/// <summary>
/// 功能:页面跳转同步通知页面
/// 版本:3.3
/// 日期:2012-07-10
/// 说明:
/// 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
/// 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。
/// 
/// ///////////////////////页面功能说明///////////////////////
/// 该页面可在本机电脑测试
/// 可放入HTML等美化页面的代码、商户业务逻辑程序代码
/// 该页面可以使用ASP.NET开发工具调试,也可以使用写文本函数LogResult进行调试
/// </summary>
public partial class return_url : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
SortedDictionary<string, string> sPara = GetRequestGet();

if (sPara.Count > 0)//判断是否有带返回参数
{
Genius.Payment.Alipay.Notify aliNotify = new Genius.Payment.Alipay.Notify();
bool verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]);

if (verifyResult)//验证成功
{
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
//请在这里加上商户的业务逻辑程序代码


//——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
//获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表

//商户订单号

string out_trade_no = Request.QueryString["out_trade_no"];

//支付宝交易号

string trade_no = Request.QueryString["trade_no"];

//交易状态
string trade_status = Request.QueryString["trade_status"];


if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS")
{
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
//如果有做过处理,不执行商户的业务程序
}
else
{
Response.Write("trade_status=" + Request.QueryString["trade_status"]);
}

//打印页面
Response.Write("验证成功<br />");

//——请根据您的业务逻辑来编写程序(以上代码仅作参考)——

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
else//验证失败
{
Response.Write("验证失败");
}
}
else
{
Response.Write("无返回参数");
}
}

/// <summary>
/// 获取支付宝GET过来通知消息,并以“参数名=参数值”的形式组成数组
/// </summary>
/// <returns>request回来的信息组成的数组</returns>
public SortedDictionary<string, string> GetRequestGet()
{
int i = 0;
SortedDictionary<string, string> sArray = new SortedDictionary<string, string>();
NameValueCollection coll;
//Load Form variables into NameValueCollection variable.
coll = Request.QueryString;

// Get names of all forms into a string array.
String[] requestItem = coll.AllKeys;

for (i = 0; i < requestItem.Length; i++)
{
sArray.Add(requestItem[i], Request.QueryString[requestItem[i]]);
}

return sArray;
}
}


4、支付异步回调

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Specialized;
using System.Collections.Generic;


/// <summary>
/// 功能:服务器异步通知页面
/// 版本:3.3
/// 日期:2012-07-10
/// 说明:
/// 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
/// 该代码仅供学习和研究支付宝接口使用,只是提供一个参考。
/// 
/// ///////////////////页面功能说明///////////////////
/// 创建该页面文件时,请留心该页面文件中无任何HTML代码及空格。
/// 该页面不能在本机电脑测试,请到服务器上做测试。请确保外部可以访问该页面。
/// 该页面调试工具请使用写文本函数logResult。
/// 如果没有收到该页面返回的 success 信息,支付宝会在24小时内按一定的时间策略重发通知
/// </summary>
public partial class notify_url : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
SortedDictionary<string, string> sPara = GetRequestPost();

if (sPara.Count > 0)//判断是否有带返回参数
{
Genius.Payment.Alipay.Notify aliNotify = new Genius.Payment.Alipay.Notify();
bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]);

if (verifyResult)//验证成功
{
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
//请在这里加上商户的业务逻辑程序代码


//——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
//获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表

//商户订单号

string out_trade_no = Request.Form["out_trade_no"];

//支付宝交易号

string trade_no = Request.Form["trade_no"];

//交易状态
string trade_status = Request.Form["trade_status"];


if (Request.Form["trade_status"] == "TRADE_FINISHED")
{
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
//如果有做过处理,不执行商户的业务程序
//注意:
                    //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知
}
else if(Request.Form["trade_status"] == "TRADE_SUCCESS")
{
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
//如果有做过处理,不执行商户的业务程序

//注意:
//付款完成后,支付宝系统发送该交易状态通知
}
else
{
}

//——请根据您的业务逻辑来编写程序(以上代码仅作参考)——

Response.Write("success");  //请不要修改或删除

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
else//验证失败
{
Response.Write("fail");
}
}
else
{
Response.Write("无通知参数");
}
}

/// <summary>
/// 获取支付宝POST过来通知消息,并以“参数名=参数值”的形式组成数组
/// </summary>
/// <returns>request回来的信息组成的数组</returns>
public SortedDictionary<string, string> GetRequestPost()
{
int i = 0;
SortedDictionary<string, string> sArray = new SortedDictionary<string, string>();
NameValueCollection coll;
//Load Form variables into NameValueCollection variable.
coll = Request.Form;

// Get names of all forms into a string array.
String[] requestItem = coll.AllKeys;

for (i = 0; i < requestItem.Length; i++)
{
sArray.Add(requestItem[i], Request.Form[requestItem[i]]);
}

return sArray;
}
}


本文标题:.NET支付类库
本文链接:https://www.masoft.cn/post/75.html
作者授权:除特别说明外,本文由 智汇软件 原创编译并授权 北京,深圳,重庆,大连,青岛,济南软件设计与定制 刊载发布。
版权声明:本文使用「署名-禁止演绎 4.0 国际」创作共享协议,转载或使用请遵守署名协议。

本文 暂无 评论

Top

分享:

支付宝

微信