【发布时间】: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=success或status=failed的回调URL并且只提供一些交易消息而没有其他内容,那么这真是一个糟糕支付网关......跨度> -
是啊……它太基础了,但我找到了克服它的方法。我加密了数据并将其添加到会话中并进行了比较。到目前为止效果很好..