Sagepay Server .Net集成-在POST到通知页面的

时间:2018-10-25 09:11:44

标签: .net post webforms sagepay

我已经下载了.Net sagepay集成工具包并将其安装到一个项目中,并且正在尝试实现服务器集成。

直到将用户转移到sagepay为止,所有操作都可以正常进行,您可以成功进行付款,但是当sagepay POST到我的Notification.aspx页面时,我没有收到任何数据。

服务器日志中肯定会显示POST,并且将URL传递回去,以便Sagepay将用户重定向回我的站点,但是我找不到要处理的POST数据并知道我是什么交易处理。

该套件中应处理的代码为:

public partial class Server_Notification : System.Web.UI.Page
{
private const string OK = "OK";
private const string INVALID = "INVALID";

protected void Page_Load(object sender, EventArgs e)
{
    IServerNotificationRequest serverNotificationRequest = new SagePayServerIntegration().GetServerNotificationRequest();

    try
    {
        OrderDataService.handleNotification(serverNotificationRequest);

        if (Request.QueryString["uid"] != null && !string.IsNullOrEmpty(Request.QueryString["uid"]))
        {
            new CardDB().Add(Convert.ToInt32(Request.QueryString["uid"]), serverNotificationRequest.Token, serverNotificationRequest.Last4Digits);
        }

        if (serverNotificationRequest.Status == SagePay.IntegrationKit.ResponseStatus.OK)
        {
            ShoppingCart.Current().Clean();
        }
    }
    catch (Exception ex)
    {
        Debug.WriteLine("ERROR: " + System.Reflection.MethodBase.GetCurrentMethod().Name + ": " + ex.Message);
    }
    Response.Clear();
    Response.ContentType = "text/plain";
    Response.Write(string.Format("Status={0}\n", serverNotificationRequest.Status == ResponseStatus.ERROR ? INVALID : OK));
    Response.Write(string.Format("RedirectURL={0}server/Result.aspx?Status={1}&VendorTxCode={2}", SagePaySettings.SiteFqdn, serverNotificationRequest.Status, serverNotificationRequest.VendorTxCode));
}
}

失败的特定行是IServerNotificationRequest serverNotificationRequest = new SagePayServerIntegration().GetServerNotificationRequest();

这将返回一个没有交易数据的空对象。

我添加了一些日志记录,并尝试手动提取任何POST数据,但没有使用Request.InputStreamRequest.Form.AllKeysRequest.QueryString来查找任何内容(除了我通过的客户UID,我自己)。

我曾尝试向sagepay寻求帮助,但他们“ ...无法提供对套件的直接开发支持,因为它们只是示例”。

我没主意了,想知道是否还有其他人可以帮忙阐明一下?

欢呼

西蒙(Simon)

1 个答案:

答案 0 :(得分:0)

最后有了一个解决方案,这要感谢https://www.mikesdotnetting.com/article/293/request-form-is-empty-when-posting-to-aspx-page

问题是友好的URL。只需在RouteConfig.cs中注释//settings.AutoRedirectMode = RedirectMode.Permanent;即可解决问题!