【问题标题】:protect opencart payment callback function from direct access保护 opencart 支付回调函数不被直接访问
【发布时间】:2014-03-12 13:40:07
【问题描述】:

我编写了一个 Frazy IPG 的扩展程序(这是一个本地支付网关,一点也不出名)。在他们的支付网关中,我们需要将值传递给他们的服务器,然后他们对其进行加密并将其发送到 MIGS,当交易成功或失败时,它会以状态返回到我的网站。

状态值在重定向到我的站点时添加到 url

如果成功

index.php?route=payment/frazyiph/callback/&?status=success&message=transaction_success

如果失败

index.php?route=payment/frazyiph/callback/&?status=failed&message=invalid_card

这些是付款后返回的唯一值。所以我从 url 捕获状态和消息并相应地更新数据库。

我遇到的问题是当一个人添加产品并直接粘贴成功网址时

index.php?route=payment/frazyiph/callback/&?status=success&message=transaction_success 

付款后会更新。所以我尝试捕获 order_id 并检查它是否为空并相应地更新。问题是当一个人选择在 IPG 付款并取消时,它会返回我的页面,说付款已取消。然后如果有人粘贴成功 url,它会在用户支付时更新,因为订单 id 已经生成。

有没有办法保护回调函数并确保用户从 IPG 重定向到我的站点以更新订单,而不仅仅是在地址栏中输入 url?

【问题讨论】:

  • 要么它是一个非常愚蠢的支付网关,要么是实施中有错误。来自支付网关的响应(回调)也应加密,同时包含 order_id(或您可以识别订单的其他唯一标识符),以便您可以将付款状态设置为已付款(如果成功)或将其挂起(错误)。如果支付网关确实只能访问带有status=successstatus=failed的回调URL并且只提供一些交易消息而没有其他内容,那么这真是一个糟糕支付网关......跨度>
  • 是啊……它太基础了,但我找到了克服它的方法。我加密了数据并将其添加到会话中并进行了比较。到目前为止效果很好..

标签: php opencart


【解决方案1】:

我不太了解您,这是您为正在开发的支付模块提出的第三个问题,到目前为止,我已尝试在每个问题上为您提供帮助,但直到现在我什至不知道我是否帮助了您,虽然我看到你在开发中继续前进,但我们将不胜感激一些反馈......

对于您当前的问题,有一种方法,您需要检查带有 php 变量 $_SERVER['HTTP_REFERER'] 或其他一些 $_SERVER[''] 变量的标头应该提供必要的信息,以便您可以指定只有来自 IPG 的数据是你会接受的。

【讨论】:

  • 对不起,伙计..这是我尝试整合的第二个支付网关。这里的网关提供商没有与购物车集成的方法。它们只是托管形式。我之前试过的那个没用。我尽力了,但失败了。这个有 90% 可用于我的购物车
  • 我尝试了$_SERVER['HTTP_REFERER'],当它在完成后从支付页面重定向到我的网站时,推荐人没有任何价值..它是空的..知道为什么吗?
  • 我的意思是你发布的问题真的很好,但是在所有 2 个问题上你都没有接受任何答案,我不知道我是否真的帮助过你......试试 var_dump($ _服务器);出口;并查看哪些变量适合您,以及您需要的变量。在很多情况下,http_refer 也可能为空,这取决于服务器。
  • 做了转储.. 但它没有提供有关推荐人的详细信息。没有任何细节可以用来验证交易:(
  • 如果你确定没有返回变量,你可以调用unique并返回给你,那么你要做的就是实现一个双重身份验证系统,他们至少应该有这个,并在回调中实现一个 curl 验证与服务器到服务器通信的支付。接受我不熟悉任何其他可以帮助你的方法。希望这能解决您的情况。
猜你喜欢
  • 2017-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多