После приема денег от клиента или при невозможности совершить платеж Platron вызывает Result URL магазина и передает на него методом Request Method информацию о результате платежа. В случае если при инициализации платежа магазином была выбрана кодировка отличная от utf-8, запрос будет производиться в установленной магазином кодировке. При получении данного запроса магазин должен произвести необходимые действия для передачи товара или услуги покупателю, в случае если платеж был успешным. Если pg_can_reject=1 и магазин не может принять платеж (например, бронь на билеты истекла), он обязан ответить со статусом rejected , и Platron отзовет платеж (по INPLAT нет возможности отказа от платежа). В этом случае поле pg_description из ответа магазина показывается пользователю как причина отказа.
Если сервер продавца недоступен в момент вызова Result URL (нет ответа более 30 секунд) или его ответ не удалось интерпретировать, Platron будет предпринимать повторные попытки его вызвать в течение 2 часов, даже если время жизни счета pg_lifetime истечет. Если первая попытка вызова Result URL оказалась неуспешной, то платеж не отменяется, и если платежная система позволяет отказаться от платежа только сразу после платежа, то Platron принимает платеж у платежной системы и в последующих вызовах Result URL не позволяет магазину отказаться от платежа. Магазин должен быть готов к тому, что Result URL будет вызван повторно для одного и того же платежа. Ответы на повторные вызовы должны совпадать с первоначальным ответом, даже если время жизни транзакции (pg_lifetime) истекло.
Параметры, передаваемые при вызове Result URL:
pg_order_id | Идентификатор платежа в системе продавца |
pg_payment_id | Внутренний идентификатор платежа в системе Platron |
pg_amount | Сумма выставленного счета (в валюте pg_ps_currency), совпадает с pg_amount в момент инициации платежа |
pg_currency | Валюта выставленного счета, совпадает с pg_currency в момент инициации платежа |
pg_net_amount | Сумма (в валюте pg_currency), которая будет перечислена магазину, в случае успешного завершения платежа |
pg_ps_amount | Сумма счета (в валюте pg_ps_currency), выставленного в ПС. Поле может отсутствовать в случае неудачного платежа. |
pg_ps_full_amount | Полная сумма (в валюте pg_ps_currency), которую заплатил покупатель с учетом всех комиссий. Поле может отсутствовать в случае неудачного платежа. |
pg_ps_currency | Валюта, в которой был произведен платеж в платежной системе. Поле может отсутствовать в случае неудачного платежа. |
pg_overpayment | Сумма переплаты в валюте платежной системы. Параметр передается только в случае, когда клиент оплатил больше, чем от него ожидалось, и переплата разрешена в настройках магазина. Если оплачено ровно столько, сколько ожидалось, этот параметр не передается. |
pg_payment_system | Идентификатор платежной системы |
pg_result | 1 – успех, 0 – неудача |
pg_payment_date | Дата и время совершения платежа в формате YYYY-MM-DD HH:MM:SS |
pg_can_reject | 1 – платеж можно откатить назад (например, Банковские карты), 0 – платеж безотзывный. По умолчанию, pg_can_reject=0. |
pg_card_brand | Бренд карты: CA – MasterCard и их продукты, VI – Visa, AX – AmericanExpress. Этот параметр передается только в случае успешной оплаты банковской картой. |
pg_card_pan | Маскированный номер карты (часть цифр номера карты скрыты). Этот параметр передается только в случае успешной оплаты банковской картой. |
pg_card_hash | Хешированный номер карты (номер карты, зашифрованный необратимым алгоритмом шифрования). Этот параметр передается только в случае успешной оплаты банковской картой. |
pg_auth_code | Код авторизации. Этот параметр передается только в случае успешной оплаты банковской картой. |
pg_captured | 0 или 1. Передается только в случае успешной оплаты банковской картой и показывает, был ли произведен клиринг в момент авторизации (что зависит только от настроек магазина). Если значение этого поля равно 0, магазин должен в последующем дать команду на клиринг (см. раздел Запрос на клиринг транзакций по банковским картам) или дождаться, когда Platron сделает это сам. |
pg_user_phone | Телефон покупателя (указанный при инициализации платежа) |
pg_need_phone_notification | Необходимость оповещения клиента (если услуга подключена) по смс о статусе транзакции. 0 – не уведомлять. |
pg_user_contact_email | Email покупателя, если был введен. Посылается только если есть email |
pg_need_email_notification | Необходимость оповещения клиента (если услуга подключена) по email о статусе транзакции. 0 – не уведомлять. Посылается только если есть pg_user_contact_email |
pg_failure_code | Код причины отказа (список кодов и их описание см. в разделе «Справочник причин отказа, возвращаемых в статусах платежей»). Поле присутствует только в случае неудачного платежа. |
pg_failure_description | Описание причины неудачи платежа. Передается на языке транзакции. Данное описание сформулировано в понятных пользователю терминах и может быть сообщено ему любым доступным способом. Поле присутствует только в случае неудачного платежа |
pg_recurring_profile_id | Идентификатор профиля рекуррентных платежей |
pg_recurring_profile_expiry_date | Дата, до которой рекуррентный профиль доступен к использованию |
Параметры продавца | Все поля, переданные с веб-сайта продавца, не имеющие префикса «pg_» |
pg_salt | Случайная строка |
pg_sig | Подпись |
Пример GET вызова магазина гейтом, при оплате по обычной платежной системой:
http://store.ru/result.php?pg_salt=0bd68e&pg_order_id=654&pg_payment_id=765432&pg_amount=100.0000&pg_currency=RUB&pg_net_amount=100.00&pg_ps_amount=105.00&pg_ps_full_amount=105.00&pg_ps_currency=RUB&pg_payment_system=INPLATMTS&pg_result=1&pg_payment_date=2008-12-30+23:59:30&pg_can_reject=0&pg_user_phone=79818244116&pg_need_phone_notification=1&pg_user_contact_email=test@test.ru&pg_need_email_notification=1&uservar1=45363456&pg_sig=da61f9d237952f56bd05c602d28780b3
Пример xml вызова (POST с XML в параметре pg_xml) магазина гейтом, при оплате по обычной платежной системой:
<?xml version="1.0" encoding="utf-8"?> <request> <pg_salt>0bd68e</pg_salt> <pg_order_id>654</pg_order_id> <pg_payment_id>765432</pg_payment_id> <pg_amount>100.0000</pg_amount> <pg_currency>RUB</pg_currency> <pg_net_amount>100.00</pg_net_amount> <pg_ps_amount>105.00</pg_ps_amount> <pg_ps_full_amount>105.00</pg_ps_full_amount> <pg_ps_currency>RUB</pg_ps_currency> <pg_payment_system>INPLATMTS</pg_payment_system> <pg_result>1</pg_result> <pg_payment_date>2008-12-30 23:59:30</pg_payment_date> <pg_can_reject>0</pg_can_reject> <pg_user_phone>79818244116</pg_user_phone> <pg_need_phone_notification>1</pg_need_phone_notification> <pg_user_contact_email>test@test.ru</pg_user_contact_email> <pg_need_email_notification>1</pg_need_email_notification> <uservar1>45363456</uservar1> <pg_sig>da61f9d237952f56bd05c602d28780b3</pg_sig> </request>
Пример GET вызова магазина гейтом, при оплате по карточной платежной системе:
http://store.ru/result.php?pg_salt=0bd68e&pg_order_id=654&pg_payment_id=765432&pg_amount=100.0000&pg_currency=RUB&pg_net_amount=100.00&pg_ps_amount=105.00&pg_ps_full_amount=105.00&pg_ps_currency=RUB&pg_payment_system=RUSSIANSTANDARD&pg_result=1&pg_payment_date=2008-12-30+23:59:30&pg_can_reject=1&pg_card_brand=CA&pg_card_pan=527594******4984&pg_card_hash=022380c107141f7e11f4271d7f6412a715222c32&pg_auth_code=014318&pg_captured=0&pg_user_phone=79818244116&pg_need_phone_notification=1&pg_user_contact_email=test@test.ru&pg_need_email_notification=1&uservar1=45363456&pg_sig=da61f9d237952f56bd05c602d28780b3
Пример xml вызова (POST с XML в параметре pg_xml) магазина гейтом, при оплате по карточной платежной системе:
<?xml version="1.0" encoding="utf-8"?> <request> <pg_salt>0bd68e</pg_salt> <pg_order_id>654</pg_order_id> <pg_payment_id>765432</pg_payment_id> <pg_amount>100.0000</pg_amount> <pg_currency>RUB</pg_currency> <pg_net_amount>100.00</pg_net_amount> <pg_ps_amount>105.00</pg_ps_amount> <pg_ps_full_amount>105.00</pg_ps_full_amount> <pg_ps_currency>RUB</pg_ps_currency> <pg_payment_system>RUSSIANSTANDARD</pg_payment_system> <pg_result>1</pg_result> <pg_payment_date>2008-12-30 23:59:30</pg_payment_date> <pg_can_reject>1</pg_can_reject> <pg_card_brand>CA</pg_card_brand> <pg_card_pan>527594******4984</pg_card_pan> <pg_card_hash>022380c107141f7e11f4271d7f6412a715222c32</pg_card_hash> <pg_auth_code>014318</pg_auth_code> <pg_captured>0</pg_captured> <pg_user_phone>79818244116</pg_user_phone> <pg_need_phone_notification>1</pg_need_phone_notification> <pg_user_contact_email>test@test.ru</pg_user_contact_email> <pg_need_email_notification>1</pg_need_email_notification> <uservar1>45363456</uservar1> <pg_sig>da61f9d237952f56bd05c602d28780b3</pg_sig> </request>
В случае если магазин принимает платеж, он должен ответить в виде XML со статусом ok:
<?xml version="1.0" encoding="utf-8"?> <response> <pg_salt>kdjdope983</pg_salt> <pg_status>ok</pg_status> <pg_description>Товар передан покупателю</pg_description> <pg_sig>9bfc5f602d287096ed237952f56bd05c</pg_sig> </response>
Если магазин отказывается от платежа, и в запросе был передан параметр pg_can_reject=1, магазин должен ответить в виде XML со статусом rejected:
<?xml version="1.0" encoding="utf-8"?> <response> <pg_salt>kdjdope983</pg_salt> <pg_status>rejected</pg_status> <pg_description>Бронь истекла</pg_description> <pg_sig>a3fc5f602d287096ed237952f56bd5fa</pg_sig> </response>
Список параметров ответа магазина:
pg_status |
ok – платеж принят
rejected – отказ от платежа (если pg_can_reject=1 ) error – ошибка в интерпретации данных |
pg_description |
(string[1024]) – В случае принятия платежа – поле не передается.
В случае отказа от приема платежа, описание причины отказа для клиента. В случае ошибки – описание ошибки, может дублировать поле pg_error_description. |
pg_error_description | описание ошибки, в случае pg_status=error |
pg_salt | Случайная строка |
pg_sig | Подпись |
Статус rejected может быть возвращен магазином только в случае, когда во входящем запросе от гейта был указан параметр pg_can_reject=1 , в противном случае, вне зависимости от ответа магазина, платеж будет считаться совершенным. Если магазин отказался от платежа (ответил rejected), покупатель перенаправляется на Failure URL, иначе – на Success URL.