首页 文章

将数据发送到支付网关并返回可能的问题

提问于
浏览
0

我将使用其中一个支付网关,因此我网站上的用户将被重定向到网关托管页面,以提供所有CC详细信息 . Gateway会将结果返回到我指定的页面(让我们称之为paymentProcessed.php) . 但现在我担心的是:

  • 有人可能会假装它 . 我的意思是有人可能被重定向到支付网关,然后将结果返回到我的网站paymentProcessed.php页面,并确认所有已付款 . 此确认将由用户自己通过正常POST发送,然后我的网站将向用户提供产品,尽管实际上没有付款 . 避免这种情况的常见做法是什么?

  • 某人被重定向到网关托管页面,付费,重定向回我的网站,他登录的会话已过期 . 通常我会依赖会话来查看是否应允许用户访问网站的某些部分,但现在我是否需要实施其他类型的检查确认页面?现在我想在数据库中存储订单ID和随机生成的值,当用户重定向时将其传递给网关(连同总数,总数将传递给网关,然后返回,以便我可以确认已支付了适当的金额) . 然后,当确认与订单ID一起出现时,我随机生成的值(和总数)而不是像我通常对正常购物车页面那样依赖会话,我应该检查此值与匹配的订单ID并根据需要更改订单状态 . 处理这类问题的常见做法是什么?

  • 我应该考虑哪些其他可能的问题?

我试图尽可能清楚地解释,我希望以上所有都有道理 . 如果我需要澄清一些事情,请告诉我 . 顺便说一下我在php / mysql中编码

2 回答

  • 1

    它实际上比你意识到的更简单,更安全 . 使用托管付款页面(如Authorize.Net's SIM API)时,会包含某种类型的散列,只有您和处理器才知道 . 因为生成它只需要您和处理器所需的私人信息是不可能的 . 因此,您需要做的就是验证支付处理器发送到您的返回页面的哈希是否与您用于交易的哈希匹配 . 如果是这样,您可以100%确定交易没有被欺骗 .

    会话往往持续时间更长,然后通常需要完成远程结账表单的访问,即使用户离开您的网站,会话也会持续 . 但是,如果您担心会话在返回到您的站点之前到期,只需将会话信息存储在数据库中并使用cookie来跟踪用户 . 然后当他们回来时使用cookie来识别它们并从数据库中检索它们的会话信息 .

    UPDATE:

    以下是使用PHP使会话cookie持续更长时间的方法:

    // Makes the cookie last two hours. Make it a higher number to last longer.
    session_set_cookie_params(7200); 
    session_start();
    
  • 1

    我已经实现了一些支付网关,其中一个共同点是卡处理器将始终为您返回交易状态,其中一些使用弱重定向中继用户完成,其他允许您使用他们的网络服务验证交易 . 无论哪种方式,您都需要获得处理器文档以了解如何验证您的交易 .

    现在关于避免会话到期的其他几率你可能想要将所有交易数据存储在一个表上,你也可以有会话来加速这个过程,但是你不需要再进一步看到仅在中继的问题 Session :

    • 如果用户在进程中间断开连接怎么办?

    • 某些CC处理器强制您打开要处理的弹出窗口,如果用户关闭它会怎么样?

    • 如果服务器崩溃怎么办?

    • 如果付款方式失败并且用户想要使用其他类型的付款重试,该怎么办?

    现在关于支付网关实施的一些随机想法:

    • 某些处理器延迟验证购买,他们将返回您的网站已接受付款,但您必须使用他们的网络服务来检查最终状态;

    • 某些处理器要求您捕获购买,这意味着即使它被批准您可以在以后废弃或最终确定,这样可以避免购物者从您的网站上购买东西,您可以检查用户's info to make sure it' s所有好的捕获或无效购买避免退款 .

    • 如果您的信用卡处理器允许您访问webservice或他们做服务器到服务器购买身份验证这将需要一个有效的ssl证书,所以要注意 .

    这就是我现在所能记得的 .

相关问题