我正在尝试实施Sagepay支付网关,但我遇到了通知网址的问题。这就是我生成它的方式:
request.NotificationUrl = string.Format(
"{0}Notification.aspx?orderid={1}&vendortxcode={2}&amount={3}",
SagePaySettings.SiteFqdn,
Request.QueryString["orderid"],
request.VendorTxCode,
txtOnlineDepositAmount.Text.Trim()
);
当我提交付款时,在我的sagepay门户网站中,它会将通知网址报告为:
Callback URL: https://www.****.uk/Notification.aspx?orderid={3a35f950-5b7c-e311-8437-12d0d8a96a66}
它缺少orderid之后的所有参数。
我提交了一张票,他们说:
“您的通知网址应仅响应Status,RedirectURL和可选的StatusDetail字段。在这些字段之前或之后不应包含其他HTML,标题,评论或文字.Sage Pay会将所有此类文字视为错误为了回答你的问题,不能使用&符号,因为它们不符合RFC1738 URL编码。请注意我们不是Sage Pay的开发人员,但我们会尽力协助您解决问题。这是一个链接我们的服务器协议指南以及指向StackOverflow的专业Web开发人员论坛链接“
我可能误解了,但我想用
&
对于正确的&符号。
有没有人碰到过这个?
我可以通过使用单个参数并使用管道或其他东西分隔参数来绕过它。但是用各个参数正确地做它会很好。
答案 0 :(得分:1)
您应该使用URL编码而不是实体字符编码。
&&;因为& 放大器中的& 字符;分离注册帖体中的参数。如果您希望参数包含&您应该用%26替换它,或者只使用一个将为您执行转换的库。
Difference between Url Encode and HTML encode
此致 亚当