realexpayment-支付成功后提示错误

realexpayment-got an error message after successful payment

我正在使用带有 amember-5.1.5 的 realexpayment 并使用 realexpayment 系统的测试帐户。

当我注册并使用测试卡付款时,我收到以下消息,但它没有重定向回我们的网站:

Your transaction has been successful but there was a problem connecting back to the merchant's web site. Please contact the merchant and advise them that you received this error message.

这意味着我们的托管支付页面 (HPP) 无法连接到您提供给我们的响应 URL。此 URL 在 HTTP POST 字段 MERCHANT_RESPONSE_URL 中指定。

它必须是一个可公开访问的端点,以便我们的 HPP 可以连接到它。当我们尝试连接到您的响应 URL 时,您的 Realex Payments 客户经理将能够提供有关我们从您的服务器收到的响应的更多信息,前提是您可以向他们提供相关的客户 ID 和订单 ID。

最佳,

肖恩·麦克多姆纳尔

Realex 支付

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

它似乎接受了基本的 HTML 回复,但没有接受完整的 HTML 文档。

我所做的是在 MERCHANT_RESPONSE_URL 页面上输出一小段 JavaScript 以将客户重定向到另一个包含我们的品牌和成功(或错误)的 URL留言:

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

我先尝试了@MrCarrot 用 JavaScript 的解决方案,但没有用,但后来发现 another working one。我认为,我不只是评论,而是提到一些关于响应和错误处理的内容。

MERCHANT_RESPONSE_URL 需要是一个 public(我假设是 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

现在您真的应该按照 Card Payments: Check hash 中的描述检查 SHA1HASH。您将需要您的请求来自的原始时间戳、MERCHANT_ID、ORDER_ID、结果编号、MESSAGE、PASREF 和 AUTHCODE。用一个句号将它们内爆,这样你就会得到类似

的东西

20220603224317.merchantid.INV-223665.00.[ test system ] AUTHORISED.16542926167123558.12345

和 运行 sha1() 就可以了。然后,添加您的秘密

ea4dcce506c6e5ee3fbaeae212477be838733694.mySecr3t

and 运行 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>