在线支付(支付宝)模块
参考博友 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"]进行比较,如果是相同就代表签名正确,没有被篡改。
当签名正确并且订单信息正确就表示交易成功。