Realex支付-成功付款后收到错误消息

4
我正在使用amember-5.1.5和realexpayment的测试账户。当我注册并使用测试卡进行付款时,我会收到以下信息,并且无法重定向回我们的网站:
“您的交易已成功完成,但与商家网站连接时出现问题。请联系商家并告知他们您收到了此错误消息。”
3个回答

5
这意味着我们的托管支付页面(HPP)无法连接到您提供的响应URL。该URL在HTTP POST中在字段MERCHANT_RESPONSE_URL中指定。
它必须是一个公共可访问的端点,以便我们的HPP可以连接到它。如果您能够向Realex Payments账户经理提供相关客户ID和订单ID,则他们将能够为我们尝试连接到您的响应URL时从您的服务器接收到的响应提供更多信息。
祝好,
Seán MacDomhnall
Realex Payments

您的交易已成功,但连接回商家网站时出现问题。请联系商家并告知他们您收到了此错误消息。请帮助我@reaex-payments。 - Savan Dholu
嗨Savan,这意味着我们的HPP无法连接到您提供的响应URL。例如,安全规则可能已经阻止了它。您应该能够在服务器日志中看到连接尝试和失败。如果您提供使用的客户端ID和订单ID,您还可以向您的账户经理询问更多信息。 - Global Payments
我也遇到了同样的问题 - 我已经验证了我提供的正确的MERCHANT_RESPONSE_URL,并且它是公开可访问的。 - Mani5556
如果您能提供相关的订单ID和时间戳,请向您的账户经理或我们支持团队中的任何一员提出请求,他们将能够向您发送从尝试连接时我们HPP收到的确切错误代码。 - Global Payments
我有同样的问题。我在响应页面上使用了一些必要的数据库调用。问题出现在向数据库插入查询时。我检查了查询语句,它是正确的并且可以工作。但是不知道为什么响应页面只在插入时显示此消息。如果我注释掉向数据库插入查询,响应页面就可以正常工作。 - Abdul

4

我最近遇到了这个问题,想提供一些澄清。Realex不会重定向到MERCHANT_RESPONSE_URL,而是显示它的内容。

它似乎接受基本的HTML响应,但不是完整的HTML文档。

我的做法是在MERCHANT_RESPONSE_URL页面输出一小段JavaScript代码,将客户重定向到包含我们品牌和成功(或错误)消息的不同网址:

<script>
    window.location=https://example.com/success?msg=<?php echo urlencode( $msg ); ?>
</script>

我刚刚尝试了一下,不幸的是我只得到了一个空白的白色页面,重定向没有发生,HTML输出显示上述脚本在一个带有类名为“success”和ID为“result-message”的div中。不确定自从那时以来支付网关是否有所改变,但现在似乎不起作用了。 - Adrian
1
很有趣,上面的方法完美地解决了我的问题。谢谢@MrCarrot! - Josef Habr

0

我先尝试了@MrCarrot的JavaScript解决方案,但它没有起作用,后来找到了另一个可行的解决方案。我认为,除了评论之外,我还应该提及一些关于响应和错误处理的细节。

MERCHANT_RESPONSE_URL需要是一个公共地址(我假设是HTTPS),您的脚本在那里等待Realex服务器的POST请求。POST请求如下:

[RESULT] => 00
[AUTHCODE] => 12345
[MESSAGE] => [ test system ] AUTHORISED
[PASREF] => 16542926167123558
[MERCHANT_ID] => merchantid
[ORDER_ID] => INV-223665
[TIMESTAMP] => 20220603224317
[AMOUNT] => 9480
[SHA1HASH] => 934138a1157dead529806e9ed5578f538e1a68c8

现在你应该按照卡支付:检查哈希中描述的方式检查SHA1HASH。您需要原始时间戳、商户ID、订单ID、结果编号、消息、PASREF和AUTHCODE。将它们用句号连接起来,就会得到类似以下的内容:

20220603224317.merchantid.INV-223665.00.[测试系统]已授权。16542926167123558.12345

然后对其运行sha1()。接着,添加您的秘密。

ea4dcce506c6e5ee3fbaeae212477be838733694.mySecr3t

再次运行sha1(),然后将结果与SHA1HASH响应进行比较。只有相等时,您才应标记付款为有效,并发送header("HTTP/1.0 200 OK")。

然后,您可以使用上述JavaScript进行重定向,也许不需要发送整个消息,只需发送this error id即可。我的做法是返回到我的付款页面,使用/thanks或/error111显示可能的错误消息。

<script language='javascript' type='text/javascript'>
 window.location.replace('https://pay.example.com/{orderId}/error{result}');
</script>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接