在 URL QueryString 中返回的 cardIdentifier 而不是隐藏字段
cardIdentifier returned in URL QueryString rather than hidden-field
我已将 SagePay 的 'Drop In Checkout' 集成到测试解决方案中。问题是,当我提交 'cardIdentifier' 的表单时,它在 URL 中被 return 编辑为查询字符串,而不是文档中的隐藏字段。
http://integrations.sagepay.co.uk/content/getting-started-integrate-using-drop-checkout
"Once the customer initiates the form submission, the payment details are validated, tokenised and passed as a hidden field called cardIdentifier which is then posted with the rest of the form contents"
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CustomPayment.aspx.cs" Async="true" Inherits="SagePayDropInTest.CustomPayment" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="https://pi-test.sagepay.com/api/v1/js/sagepay-dropin.js"></script>
</head>
<body>
<div id="main">
<h1>My Test Shop</h1>
<form id ="checkout-form">
<h2>Payment Details</h2>
<div id="payment-details"></div>
<div id="submit-container">
<input type="submit"/>
</div>
</form>
</div>
<script>
sagepayCheckout({
merchantSessionKey: '<%=MerchID%>',
containerSelector: '#payment-details'
}).form({
formSelector: '#checkout-form'
});
</script>
</body>
</html>
C# 代码隐藏
namespace SagePayDropInTest
{
public partial class CustomPayment : System.Web.UI.Page
{
public string MerchID = "";
protected void Page_Load(object sender, EventArgs e)
{
MerchID = GetMerchSessionID();
}}}
它 return cardIdentifier,但只是作为 QueryString,但我宁愿将其作为隐藏字段获取,如文档所述。集成的其余部分按照记录工作,只是这一步让我感到困惑。
我无疑遗漏了一些明显的东西,任何指导将不胜感激。
尝试更改 <form>
标签以包含 method="post"
属性。这应该意味着 cardIdentifier
作为已发布的字段而不是在查询字符串中发送。表单的默认方法通常是 GET 请求,SagePay JS 可能不会改变这一点。
此外,<form id ="checkout-form">
标签中看起来像一个额外的 space。我建议把它去掉,因为一些不太宽容的浏览器可能无法正确解析它,破坏你 JS 中的 CSS 选择器。
我已将 SagePay 的 'Drop In Checkout' 集成到测试解决方案中。问题是,当我提交 'cardIdentifier' 的表单时,它在 URL 中被 return 编辑为查询字符串,而不是文档中的隐藏字段。
http://integrations.sagepay.co.uk/content/getting-started-integrate-using-drop-checkout
"Once the customer initiates the form submission, the payment details are validated, tokenised and passed as a hidden field called cardIdentifier which is then posted with the rest of the form contents"
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CustomPayment.aspx.cs" Async="true" Inherits="SagePayDropInTest.CustomPayment" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="https://pi-test.sagepay.com/api/v1/js/sagepay-dropin.js"></script>
</head>
<body>
<div id="main">
<h1>My Test Shop</h1>
<form id ="checkout-form">
<h2>Payment Details</h2>
<div id="payment-details"></div>
<div id="submit-container">
<input type="submit"/>
</div>
</form>
</div>
<script>
sagepayCheckout({
merchantSessionKey: '<%=MerchID%>',
containerSelector: '#payment-details'
}).form({
formSelector: '#checkout-form'
});
</script>
</body>
</html>
C# 代码隐藏
namespace SagePayDropInTest
{
public partial class CustomPayment : System.Web.UI.Page
{
public string MerchID = "";
protected void Page_Load(object sender, EventArgs e)
{
MerchID = GetMerchSessionID();
}}}
它 return cardIdentifier,但只是作为 QueryString,但我宁愿将其作为隐藏字段获取,如文档所述。集成的其余部分按照记录工作,只是这一步让我感到困惑。
我无疑遗漏了一些明显的东西,任何指导将不胜感激。
尝试更改 <form>
标签以包含 method="post"
属性。这应该意味着 cardIdentifier
作为已发布的字段而不是在查询字符串中发送。表单的默认方法通常是 GET 请求,SagePay JS 可能不会改变这一点。
此外,<form id ="checkout-form">
标签中看起来像一个额外的 space。我建议把它去掉,因为一些不太宽容的浏览器可能无法正确解析它,破坏你 JS 中的 CSS 选择器。