我一直在努力解决Sagepay服务器集成到c#.net站点的问题。起初我认为Sagepay模拟器没有发回POST。
我已经发现(在记录期间)模拟器正在将值重新发送回站点,但它正在丢失它们。我认为这可能是global.asax中的一个问题。
我已尝试在global.asax中注释掉所有内容,但模拟器中的值仍然丢失。
我一直在使用 log4net 来跟踪这个阶段,这是来自模拟器的调用之一以及我的log4net如何将它放入数据库中:
Application_BeginRequest
Application_BeginRequest Request.UrlReferrer:
Application_BeginRequest Request.ServerVariables.Count:49
Application_BeginRequest:Form count = 16
Application_AuthenticateRequest
Application_EndRequest
Application_PreSendRequestHeaders
Application_PreSendRequestContent
Application_End
申请 已启动
Application_BeginRequest
Application_BeginRequest Request.UrlReferrer:
Application_BeginRequest Request.ServerVariables.Count:48
Application_BeginRequest:Form count = 0
Application_Begin Request.Form:
Application_AuthenticateRequest
Application_AuthorizeRequest
Application_ResolveRequestCache
这一切都会在几秒钟内发生。在加载页面时,它丢失了帖子数据。
这是我们在sagepay模拟器上获得的回报:
Raw Reponse from your Notification URL
Your Notification URL returned the following information in the response part of the POST. It has been formatted to wrap every 100 characters to make it more readable.
<form method="post" action="/(A(ubPhPgmAzQEkAAAANzA1MTdhOTctZTJiZi00NzU3LWEyZjItODcxMzI2NW<BR>I3ZjA20))/PaymentGateway/SagePayServerReturn2.aspx" id="ctl00"><input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJMzIwOTI4NzM3ZGR7QWh08mOnnMUf7wtZMkwEWKknSW6n2TMurN5RJnAIbw==" />
我们使用.asp来检查模拟器是否返回了POST,它与.asp一起使用。我们真的很困惑为什么它不应该在.aspx中工作。任何帮助将不胜感激。
安德鲁
我已经设法更新并从sage页面获得至少一个有价值的响应。
Status=INVALID
StatusDetail=Unable to find the transaction in our database.
RedirectURL=/PaymentGateway/SagePayOrderFailed.aspx?reasonCode=001
但它仍然会丢失一些帖子数据,因为它会两次触发Application_BeginRequest。(我不知道这是否有任何帮助)
找出Application_BeginRequest两次触发的原因。当sage pay将数据发送到页面时,它将被重定向到同一页面。
所以它丢失了那里的数据但是我已经删除了所有的重定向规则,它仍然在做。在我们的解决方案中没有Response.Redriect()。所以我很想知道接下来会出现问题的地方。
答案 0 :(得分:1)
我们在Web配置中发现了与anonymousIdentification有关的问题。
在其中设置了cookieless值,这使得302将它移动到剥离帖子值的同一页面。在我们检查服务器日志之前,没有看到它正在重定向。
这是代码:
<anonymousIdentification enabled="true" cookieName=".ASPXANONYMOUS" cookieTimeout="100000" cookieless="UseDeviceProfile" cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="true" cookieProtection="None" />
所以我们所做的就是取出无cookie值,而Sagepay现在就是一个梦想。