如何在集成支付网关时避免金额篡改?

How to avoid amount tampering while integrating payment gateways?

我正在 php 中集成支付网关。网关提供商告诉我它包含高风险漏洞(即Amount Tampering)。我不是支付网关集成方面的专家。如何防止金额篡改?

您可以采取以下措施来防止金额篡改。

  1. 校验和或哈希摘要。如果支付网关实现了这一点。这只是意味着生成要发送到支付网关的有效负载的哈希值,并使用它发送哈希值。网关还将生成散列并与发送给它的散列进行比较。如果匹配,则有效负载未被篡改,否则,它已被篡改,支付网关将放弃交易。 请询问您的支付网关。最推荐的方法
  2. 在将付款发送到支付网关进行处理之前,请在您的数据库中记录交易详细信息。必须记录金额、交易参考和货币。收到支付网关的响应后,使用您的交易参考调用支付网关交易查询端点,以直接从支付网关确认交易,然后使用您从支付中获得的交易金额、交易参考和货币验证您记录的交易金额、交易参考和货币网关。如果有任何差异,请记录交易以解决争议,否则使用返回的交易状态更新您的交易记录。
  3. 2 仅在支付网关具有交易查询端点时才有效。如果您的支付网关没有交易查询端点,当您收到交易响应时,只需使用您从支付网关获得的交易金额、交易参考和货币来验证您记录的交易金额、交易参考和货币。如果有任何差异,请记录交易以解决争议,否则使用返回的交易状态更新您的交易记录。 (我会建议不要使用没有端点的支付网关来查询您的交易)

I recommend using 1 and 2 together if you can.