【问题标题】:Prevent posting response value to asp.net page other than payment gate way防止将响应值发布到 asp.net 页面而不是支付网关方式
【发布时间】:2021-08-15 11:14:20
【问题描述】:

我正在使用 c# asp.net(.NET framework 4.0) 集成支付网关“First Atlantic Commerce”。我使用了 3dsecureAuthorize 方法。在这种方法中,支付网关将响应值发布到我们的商家网站。对于创建的名为“Success.aspx”的页面,该页面从支付网关接收一些响应值,这些响应值在处理交易后由支付网关发布。我使用下面的代码来接收响应值

request.form["responsecode"]

并将交易的支付状态更新到商家网站,这似乎任何人都可以从支付网关以外的任何人将响应值发布到此页面“Success.aspx”。如果发生这种情况,则有机会从其他来源将付款状态更新到我们的网站,而无需通过付款网关进行付款。能否请您告诉我如何防止将数据发布到此页面而不是支付网关的尝试?

【问题讨论】:

  • 理想情况下,响应应该有某种SingleUseToken
  • 你能发布一个示例回复吗?带有虚拟值的完整 jsonxml
  • 这是示例响应,类似于查询字符串:- MerID=&AcqID=464748&OrderID=TEST013009&ResponseCode=1&ReasonCode=1&Re asonCodeDesc=Transaction+is+approved.&ReferenceNo=903016874912&PaddedCardNo=XXXXXXXXXXX 65&AuthCode=03 =M&AuthenticationResult=Y&CAVVValue=jGqyM3D&ECIIndicator=02&TransactionStain=AgAA3D&Origin alResponseCode=00&Signature=vnt3D&SignatureMethod=SHA1

标签: c# asp.net .net payment-gateway


【解决方案1】:

响应消息签名验证

Authorize3DSResponse 操作响应返回验证哈希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;
 }

参考First Atlantic Commerce Payment Gateway 2 Integration Guide for Developers

【讨论】:

  • 将计算得到的hash 值与查询字符串中收到的Signature 进行比较。如果匹配,则来自 FAC 的系统。
  • 谢谢。答案对我有帮助
猜你喜欢
  • 2021-08-15
  • 2011-06-28
  • 1970-01-01
  • 2015-04-12
  • 1970-01-01
  • 1970-01-01
  • 2011-08-28
  • 1970-01-01
  • 2020-01-29
相关资源
最近更新 更多