专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

用ASP接收Paypal的notify_url通知“偶尔”出错

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 0:13:57       共计:3613 浏览
用hidden加了个notify_url的项目,value就是我要进行数据库处理的一个程序页面。
这个程序页面一般情况下没啥问题,但是偶尔会出现问题:就是paypal收到钱了,但是我这notify_url指向的Link却没有执行,导致数据库状态没更改过来。
查看日志文件,也没有保留,说明在这个异步请求里面,返回的值还是200。
当返回值是200,并且返回的字符串是“VERIFIED”的时候,我这就直接写数据库了(因为其他地方比较麻烦,我没做验证。)。
问题似乎就出在这个elseif上,因为其他错误我都写了日志的。

这个错误也不是说每次交易都出现,一般情况下是正常的。目前这个功能已经试运行了大约10天了,只出过两次错误,并且两次都是同一个用户提交了多个订单(因为我们还没做购物车),然后支付的时候明明已经付钱给paypal,但是我这数据库状态没更改过来。

如果说是因为多订单的问题,那这10天内也不止两个客户提交多个订单啊,绝大多数客户的订单都没问题的。
目前这个问题很头疼,求助。

notify_url返回的url中主要程序如下(其实就是paypal的官方文档说的那样):

VBScript code





Dim Item_name, Item_number, Payment_status, Payment_amount

Dim Txn_id, Receiver_email, Payer_email

Dim objHttp, str 

Dim OrderCode

'这里因为我们之前的程序员卷铺盖走人,我没办法才用querystring获取自定义订单号获取订单的ID

OrderCode=Trim(Request.QueryString("oc"))

'从PayPal 出读取POST 信息同时添加变量 "cmd?

str = Request.Form & "&cmd=_notify-validate"

'建议在此将接受到的信息记录到日志文件中以确认是否收到IPN 信息 '将信息POST 回给PayPal 进行验证

set objHttp = Server.CreateObject("Msxml2.ServerXMLHTTP")

'set obj Http = Server.CreateObject("Msxml2.ServerXMLHTTP.4.0") 

'set obj Http = Server.CreateObject("Microsoft.XMLHTTP") 

objHttp.open "POST", "https://www.paypal.com/cgi-bin/webscr", false

objHttp.setRequestHeader "Content-type", "application/x-www-form-urlencoded"

objHttp.Send str Item_name = Request.Form("item_name")

Item_number = Request.Form("item_number")

Payment_status = Request.Form("payment_status")

Payment_amount = Request.Form("mc_gross")

Payment_currency = Request.Form("mc_currency")

Txn_id = Request.Form("txn_id")

Receiver_email = Request.Form("receiver_email")

Payer_email = Request.Form("payer_email")

'检查通知是否合法

if (objHttp.status <> 200 ) then

'写入日志,http错误 

elseif (objHttp.responseText = "VERIFIED") then

'一通验证之后执行rs.open sql,conn,1,3之类的写入数据库操作

elseif (objHttp.responseText = "INVALID") then

'这个是服务器跟paypal核对的信息不一致的错误,paypal说是一般这是因为编码错误或者非法post变量导致。

'这个也写入日志

else

'paypal的官方文档说这是其他错误,我在错误日志里面没发现这个类型的错误 

end if

set objHttp=Nothing


版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:asp支付宝主动通知调用的页面(通知页) | ·下一条:Html.DropDownList()的用法 ( Asp.Net MVC)

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有