在线支付(支付宝)模块

参考博友 bluewater  sufei推荐 StephenHuang推荐

先来了解一下大体流程如下图:

提交表单页里的支付按钮是把表单里的商品信息及支付信息做为AliPay类的CreatUrl()方法的参数,CreatUrl()方法会把这些参数经过一系列操作后返回一个Url,这个Url的功能就是向支付宝系统提交这些参数信息,而且这些参数中还包括用GetMD5()方法返回的用于签名的字符串sign。最后通过Response.Redirect(Url)就完成提交。

CreatUrl()方法的主要代码如下图:

参数的意义如下图:

这些参数必须是支付宝文档中指定的参数,不能自定义,也不能为空,但可以不传递。

提交后支付宝系统会根据Url里notify_url和return_url返回一些通知信息到相应的页面,通知信息包括我们在notify页或return页里要用到的notify_id参数。

notify通知与return通知是有区别的,如下图:

根据支付宝系统post过来的信息,使用Get_Http()方法可以用来判断订单信息是否正确,Get_Http()方法如下图:

根据post回来的键的集合及合作伙伴ID,使用GetMd5()方法返回签名字符串与得到的签名Request.Form["sign"]进行比较,如果是相同就代表签名正确,没有被篡改。

当签名正确并且订单信息正确就表示交易成功。

源码下载

原文地址:https://www.cnblogs.com/hanmeimei/p/onlinepay.html