防止将响应值发布到支付网关以外的 asp.net 页面
Prevent posting response value to asp.net page other than payment gate way
我正在使用 c# asp.net(.NET framework 4.0) 集成支付网关 'First Atlantic Commerce'。我使用了 3dsecureAuthorize 方法。在这种方法中,支付网关 post 将响应值发送到我们的商家网站。对于创建的名为 'Success.aspx' 的页面,该页面从支付网关接收一些响应值,这些响应值在处理交易后由支付网关 post 编辑。我使用下面的代码接收响应值
request.form["responsecode"]
并将交易的支付状态更新到商家网站,这似乎任何人都可以 post 从支付网关以外的地方 'Success.aspx' 到此页面的响应值。如果发生这种情况,则有机会从其他来源向我们的网站更新支付状态,而无需通过支付网关进行支付。您能告诉我如何防止 post 将数据发送到支付网关以外的页面吗?
响应消息签名验证
Authorize3DSResponse
操作响应 return 验证散列 Signature
,其中
批准和拒绝授权交易,以验证响应来自 FAC 的系统。
要使用此 Signature
作为验证,请从以下字段创建一个 BASE-64 编码的 SHA1 散列
顺序:
- 正在处理密码 (a1B23c)
- FAC ID (1234567890)
- 收单方 ID (464748)
- 订单 ID (FACTEST01)
例如:
a1B23c1234567890464748FACTEST01
生成的哈希值:LOijfhLT2JO2jYaA1bXPIZNWDPg=
using System.Security.Cryptography;
private string ComputeHash(string Key)
{
SHA1CryptoServiceProvider objSHA1 = new SHA1CryptoServiceProvider();
objSHA1.ComputeHash(System.Text.Encoding.UTF8.GetBytes(Key.ToCharArray()));
byte[] buffer = objSHA1.Hash;
string HashValue = System.Convert.ToBase64String(buffer);
return HashValue;
}
我正在使用 c# asp.net(.NET framework 4.0) 集成支付网关 'First Atlantic Commerce'。我使用了 3dsecureAuthorize 方法。在这种方法中,支付网关 post 将响应值发送到我们的商家网站。对于创建的名为 'Success.aspx' 的页面,该页面从支付网关接收一些响应值,这些响应值在处理交易后由支付网关 post 编辑。我使用下面的代码接收响应值
request.form["responsecode"]
并将交易的支付状态更新到商家网站,这似乎任何人都可以 post 从支付网关以外的地方 'Success.aspx' 到此页面的响应值。如果发生这种情况,则有机会从其他来源向我们的网站更新支付状态,而无需通过支付网关进行支付。您能告诉我如何防止 post 将数据发送到支付网关以外的页面吗?
响应消息签名验证
Authorize3DSResponse
操作响应 return 验证散列 Signature
,其中
批准和拒绝授权交易,以验证响应来自 FAC 的系统。
要使用此 Signature
作为验证,请从以下字段创建一个 BASE-64 编码的 SHA1 散列
顺序:
- 正在处理密码 (a1B23c)
- FAC ID (1234567890)
- 收单方 ID (464748)
- 订单 ID (FACTEST01)
例如: a1B23c1234567890464748FACTEST01
生成的哈希值:LOijfhLT2JO2jYaA1bXPIZNWDPg=
using System.Security.Cryptography;
private string ComputeHash(string Key)
{
SHA1CryptoServiceProvider objSHA1 = new SHA1CryptoServiceProvider();
objSHA1.ComputeHash(System.Text.Encoding.UTF8.GetBytes(Key.ToCharArray()));
byte[] buffer = objSHA1.Hash;
string HashValue = System.Convert.ToBase64String(buffer);
return HashValue;
}