我们在开发网站,公众号,小程序的时候支付是一个重要环节,笔者打算做一个微信支付的合集,含PC网站微信支付,公众号的微信支付以及小程序微信支付的详细介绍。

asp.net关于在线支付的实现过程(PC电脑端网页微信支付技术要点经验总结)(1)

今天给大家介绍的是电脑端网站的微信支付要点:

asp.net关于在线支付的实现过程(PC电脑端网页微信支付技术要点经验总结)(2)

一、首先去微信官网下载。NETC#版demo,按下面地址下载。

asp.net关于在线支付的实现过程(PC电脑端网页微信支付技术要点经验总结)(3)

二、下载完成后,用VS打开解决方案,如下图,主要目录有三个,红色标记

asp.net关于在线支付的实现过程(PC电脑端网页微信支付技术要点经验总结)(4)

三、更改lib目录下的Config.cs的参数设置,改成你自己的相关参数 ,如下图:

asp.net关于在线支付的实现过程(PC电脑端网页微信支付技术要点经验总结)(5)

四、PC端微信支付应该选择Native支付,Native支付回调链接,进微信商户后台设置,与上面NOTIFY_URL的参数值一致。

asp.net关于在线支付的实现过程(PC电脑端网页微信支付技术要点经验总结)(6)

五、调用统一下单接口,获得统一下单接口返回的二维码链接 的方法,找到business目录下的NativePay.cs中加一方法,如下图:

asp.net关于在线支付的实现过程(PC电脑端网页微信支付技术要点经验总结)(7)

六、订单生成后,根据订单ID和金额,生成支付二维码,可以在example 目录里创建一个 WenxinPcBar.aspx 文件,生成订单支付二维码,

asp.net关于在线支付的实现过程(PC电脑端网页微信支付技术要点经验总结)(8)

asp.net关于在线支付的实现过程(PC电脑端网页微信支付技术要点经验总结)(9)

七、这样就生成一个支付的二维码,如图所示,注意每次支付成功后,如果你是模拟订单号,切记每次的订单号要不一样,否则创建二维码为空会报错。还有传的金额是整型,你的金额要先格式化为decimal型,然后转成int型还要乘上100,再传参数。如下所示protected void Page_Load(object sender, EventArgs e)

{

orderid1 = DNTRequest.GetString("orderId");

m1 = b1.getordermodel(orderid1);

orderid2.Value = orderid1;

if (!IsPostBack)

{

int total_fee = 0;

// decimal d = 111.00m;

//decimal d = 0.01m;

decimal d =decimal.Parse(m1.RealTotal.ToString());

total_fee = Convert.ToInt32(d * 100);

NativePay nativePay = new NativePay();

string body = "购票通";

string attach = "";

string goods_tag = "";

//生成扫码支付模式二url

string url = nativePay.GetPayUrl(m1.Productsid.ToString(), orderid1, body, attach, total_fee, goods_tag);

ImageUrl = "MakeQRCode.aspx?data=" HttpUtility.UrlEncode(url);

trade_no.Text = orderid1;

money.Text = total_fee.ToString();

}

}

八、扫码支付成功后,此页是静止的,需要自己写段代码定时检测订单的支付状态,如果支付成功,就跳转页面。

asp.net关于在线支付的实现过程(PC电脑端网页微信支付技术要点经验总结)(10)

asp.net关于在线支付的实现过程(PC电脑端网页微信支付技术要点经验总结)(11)

九、定时检测是否支付成功的函数,可以在页面上写一个js函数,如下所示,2秒检测一次,如果支付成功就跳转支付成功页。

asp.net关于在线支付的实现过程(PC电脑端网页微信支付技术要点经验总结)(12)

再写一个queryOrderIsPay.ashx文件检测订单支付是否成功,代码如下

asp.net关于在线支付的实现过程(PC电脑端网页微信支付技术要点经验总结)(13)

十、微信支付成功后,微信后端会自动调用支付回调链接,该链接会返回是否成功的相关xml文件,我们需要获得,business目录下这个文件 ResultNotify.aspx,可以参考下面的方法

asp.net关于在线支付的实现过程(PC电脑端网页微信支付技术要点经验总结)(14)

核心是根据微信后台返回的数据,系统会根据交易订单号(微信后台订单号)是否存在并判断订单真实性,如果是假就返回订单不存在或失败 ,如果存在就返回 return_code 的值是SUCCESS,同时我们需要加上返回商户订单号out_trade_no(不同于微信后台交易订单号transaction_id),然后根据 返回 的订单号更新订单的支付成功的状态。

asp.net关于在线支付的实现过程(PC电脑端网页微信支付技术要点经验总结)(15)

至此支付成功后订单状态更新完毕 ,前端二维码支付页面内的js函数每隔2秒钟通过post方式调用queryOrderIsPay.ashx文件来检测订单支付是否成功的状态,来实现二维码支付页面的自动跳转。

以上是PC端网页微信支付的整个流程,是自己在开发过程中总结出来的,如果你有更好的想法,欢迎讨论!

,