Перенаправление результата на страницу коммерсанта


Для того, чтобы на шаге 3 или 8 вместо стандартной страницы результата eCom коммерсант мог отобразить клиенту свою страницу результата на своем сайте, нужно передать адрес этой страницы в параметре BACKREF и добавить в адрес параметр redirect=true. В этом случае к указанному адресу будут добавлены параметры результата операции, и браузер клиента будет перенаправлен на этот адрес методом GET.

Добавляются параметры:
Параметр Описание
order Номер заказа
mpi_order Номер заказа MPI
rrn RRN (возвращается в REF, только в случае успешной операции)
res_code Код результата операции:
0 - Операция успешно завершена
иначе – код ошибки
amount Сумма операции
currency Валюта операции
res_desc Описание результата из MPI
sign Подпись

Например, если указать в BACKREF адрес https://www.google.kz?redirect=true то браузер будет перенаправлен на адрес:

https://www.google.kz?redirect=true&order=529619375&mpi_order=529619375&res_code=28&amount=0.9¤cy=EUR&res_desc=12123&desc=111&sign=12345678

Алгоритм проверки подписи sign следующий: нужно собрать в одну строку значения всех полей заказа в указанном в таблице порядке через разделитель «;», затем добавить эту строку к значению секретного ключа SHARED_SECRET (этот ключ индивидуальный для каждого коммерсанта), и вычислить из полученной строки значение хэш SHA512. В строках desc, res_desc перед обработкой нужно убрать все переносы строк. Например, на PHP это будет выглядеть примерно так:

vSign=hash("sha512",
C_SHARED_KEY
.$_POST["order"].";"
.$_POST["mpi_order"].";"
.$_POST["rrn"].";"
.$_POST["res_code"].";"
.$_POST["amount"].";"
.$_POST["сurrency"].";"
.preg_replace("/\n|\r/g","",$_POST["res_desc"]).";" );

Обратите внимание! В продуктовой системе на сервере коммерсанта обязательно должна быть проверка значения sign для исключения подделки результата заказа!

Секретный ключ SHARED_SECRET ни в коем случае не должен быть доступен кому-либо вне Вашего сервера!