读书人

asp支付宝即刻到账支付成功无法写入数

发布时间: 2012-08-31 12:55:03 作者: rapoo

asp支付宝即时到账支付成功无法写入数据库
├notify_url.asp ┈┈┈┈┈┈┈服务器异步通知页面文件

├return_url.asp ┈┈┈┈┈┈┈页面跳转同步通知文件

1.支付成功后这个页面notify_url.asp会自动提交信息给支付宝确认是否支付成功后然后把相应的数据写如数据库,,但我很烦恼,,支付成功就是无法把相关的数据写入数据库,,我都无法知道是否有没有调用过这个页面。
<!--#include file="alipay_config.asp"-->
<!--#include file="class/alipay_notify.asp"-->

<%
'计算得出通知验证结果
verify_result = notify_verify()

if verify_result then'验证成功
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'请在这里加上商户的业务逻辑程序代码

'——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
'获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
subject = request.Form("subject") '获商品名称
trade_no = request.Form("trade_no") '支付宝交易号
out_trade_no= request.Form("out_trade_no") '获取订单号
total_fee= request.Form("total_fee") '获取总金额
body = request.Form("body") '获取商品描述


if request.Form("trade_status") = "TRADE_FINISHED" or request.Form("trade_status") = "TRADE_SUCCESS" then
'判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”)
'如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
'如果有做过处理,不执行商户的业务程序


set rs=server.CreateObject("adodb.recordset")
rs.open"dingdan",conn,2,3
rs.addnew
rs("dingdanhao")=trade_no
rs("shanjiahao")=out_trade_no
rs("leixing")=mainname
rs("title")=subject
rs("price")=total_fee
rs("body")=pay_qq
rs("ip")=Request.ServerVariables("Remote_Addr")
rs("chuli")=0
rs("adddate")=now()
rs.update

rs.close
set rs=nothing
conn.close
set conn=nothing
response.Write "success"'请不要修改或删除
log_result ("测试成功!")
'调试用,写文本函数记录程序运行情况是否正常
'log_result("这里写入想要调试的代码变量值,或其他运行的结果记录")

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

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
else '验证失败
response.Write "fail"
'调试用,写文本函数记录程序运行情况是否正常
'log_result ("这里写入想要调试的代码变量值,或其他运行的结果记录")
log_result ("这里写入想要调试的代码变量值,或其他运行的结果记录")
end if
%>

2.return_url.asp这个页面是在支付成功后跳转要通知的页面,,这个页面基本正常的,,而且把上面那段SQl语句放在这个页面可以完全写入数据库的。但在这个页面会有风险,,因为一般用户在支付成功后马上关掉了页面,,所以来不及跳转return_url.asp这个页面,,所以语句无法执行。
<!--#include file="alipay_config.asp"-->
<!--#include file="class/alipay_notify.asp"-->

<%
'计算得出通知验证结果
verify_result = return_verify()

if verify_result then'验证成功
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'请在这里加上商户的业务逻辑程序代码

'——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
'获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表
subject = Request.QueryString("subject") '获商品名称
out_trade_no= request.QueryString("out_trade_no")'获取订单号
total_fee= request.QueryString("total_fee")'获取总金额

if request.QueryString("trade_status") = "TRADE_FINISHED" or request.QueryString("trade_status") = "TRADE_SUCCESS" then
'判断该笔订单是否在商户网站中已经做过处理(可参考“集成教程”中“3.4返回数据处理”)
'如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
session("pay_dingdan")=out_trade_no
session("pay_name")=subject
session("pay_price")=total_fee
else
response.Write "trade_status="&request.QueryString("trade_status")


end if
else

response.Write "fail"
end if
%>

各位大哥,帮帮忙,,谁有遇到相同的这样的问题或者决解的话,,指导一下小弟我,,谢谢。。我的联系QQ是:371773984
谢谢!

[解决办法]
return_url.asp 是用户点击返回商城取货,或者页面自动跳转的地址,在这一页里,你可以将获取的返回结果写到数据库里。但是如果用户在页面跳转前关了页面,你将无法获得支付结果。这个跳转只有一次。

notify_url.asp 是在交易完成后,支付宝24小时内对你的服务器定时发起的请求页面,其中请求中包含了各种你需要的查询字符串。你如果设置了这一页,你就可以在这一页对查询字符串进行处理,成功后返回success,支付宝将不会继续请求这个页面。

如果你在以前的同步跳转页面因为某些原因,比如用户将浏览器关闭,或者你的服务器出了问题等,没有将交易订单处理成功,你就可以在notify_url.asp再处理一次,成功后返回sucess.如果你在之前的同步中已经处理成功了,则这一次就不需要再写数据库了,直接返回sucess就行了。

明白了吗?



读书人网 >ASP

热点推荐