realexpayment-сообщение об ошибке после успешного платежа

Я использую realexpayment с membermember-5.1.5 и использую тестовый аккаунт системы realexpayment.

Когда я регистрируюсь и совершаю оплату с помощью тестовой карты, я получаю следующее сообщение, и оно не перенаправляется обратно на наш сайт:

Ваша транзакция прошла успешно, но при подключении к веб-сайту продавца возникла проблема. Пожалуйста, свяжитесь с продавцом и сообщите им, что вы получили это сообщение об ошибке.

3 ответа

Решение

Это означает, что наша страница размещенных платежей (HPP) не смогла подключиться к URL-адресу ответа, который вы нам предоставили. Этот URL указывается в HTTP POST в поле MERCHANT_RESPONSE_URL.

Это должна быть общедоступная конечная точка, чтобы наша ГЭС могла к ней подключиться. Менеджер вашего счета в Realex Payments сможет предоставить больше информации об ответе, который мы получили от вашего сервера, когда мы попытались подключиться к вашему URL-адресу ответа, если вы сможете предоставить им соответствующий идентификатор клиента и идентификатор заказа.

Лучший,

Шон МакДомхналл

Realex Payments

У меня недавно была эта проблема, и я хотел бы дать некоторые разъяснения. Realex не перенаправляет на MERCHANT_RESPONSE_URL но вместо этого отображает его содержимое.

Кажется, он принимает базовый HTML-ответ, но не полноценный HTML-документ.

Что я сделал, чтобы вывести небольшой кусочек JavaScript на MERCHANT_RESPONSE_URL страница для перенаправления клиента на другой URL-адрес, содержащий наше сообщение о брендинге и успехе (или ошибке):

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

Сначала я попробовал решение с JavaScript от @MrCarrot, и оно не сработало, но позже нашел другое работающее решение . Я подумал, что вместо простого комментария я упомяну несколько слов об ответе и обработке ошибок.

MERCHANT_RESPONSE_URL должен быть общедоступным (и я предполагаю, HTTPS) адресом, где ваш скрипт ожидает POST от серверов Realex. ПОСТ выглядит так:

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

Теперь вам действительно нужно проверить SHA1HASH , как описано в разделе « Карточные платежи: проверка хэша » . Вам понадобится исходный TIMESTAMP, от которого был отправлен ваш запрос, MERCHANT_ID, ORDER_ID, номер RESULT, MESSAGE, PASREF и AUTHCODE. Взорвите их с точкой, так что вы получите что-то вроде

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

и запустите на нем sha1(). Затем добавьте свой секрет

ea4dcce506c6e5ee3fbaeae212477be838733694.mySecr3t

и снова запустите sha1(), затем сравните его с ответом SHA1HASH. Только если он равен, вы должны пометить платеж как действительный и отправить заголовок ("HTTP/1.0 200 OK").

Затем вы можете перенаправить обратно с помощью приведенного выше JavaScript, и, возможно, вместо всего сообщения вы можете просто отправить этот идентификатор ошибки . Что я делаю, так это возвращаюсь на свою страницу оплаты с помощью /thanks или /error111, чтобы показать возможное сообщение об ошибке.

      <script language='javascript' type='text/javascript'>
 window.location.replace('https://pay.example.com/{orderId}/error{result}');
</script>
Другие вопросы по тегам