Всем привет!
Можете подсказать, на сколько сложный в создании модуль для Drupal 7 я описываю?
Есть нода "Счет-фактура", у нее есть поля:
-
field_payment_id
-
field_payment_price
-
field_payment_status
На основе этих данных формируется оплата в Приват24 формой
<form method="POST" action="https://api.privatbank.ua/p24api/ishop">
<input type="hidden" name="amt" value="<?php echo $field_payment_price ?>" />
<input type="hidden" name="ccy" value="UAH" />
<input type="hidden" name="merchant" value="12345" />
<input type="hidden" name="order" value="<?php echo $field_payment_id ?>" />
<input type="hidden" name="details" value="Детали платежя" />
<input type="hidden" name="ext_details" value="Описание" />
<input type="hidden" name="pay_way" value="privat24" />
<input type="hidden" name="return_url" value="http://..." />
<input type="hidden" name="server_url" value="http://..." />
<button formtarget="_blank" class="privat" type="submit"></button>
</form>
После совершения клиентом оплаты модуль как я понял должен посылать вот такой XML запрос
<?xml version="1.0" encoding="UTF-8"?>
<request version="1.0">
<merchant>
<id>12345</id>
<signature>d66d192cb123456788e08cfe1ca171535</signature>
</merchant>
<data>
<oper>cmt</oper>
<wait>0</wait>
<test>0</test>
<payment>
<prop name="id" value="1234567" />
<prop name="ref" value="P24A02509023364489" />
</payment>
</data>
</request>
Сигнатура запроса рассчитывается следующим образом (PHP):$sign=sha1(md5($data.$password)); $data - содержимое тега данного запроса; $password - личный пароль мерчанта, полученный им при регистрации.
И от Privat24 должен быть ответ:
<?xml version="1.0" encoding="UTF-8"?>
<response version="1.0">
<merchant>
<id>12345</id>
<signature>37aad972d7461234567893802230be38</signature>
</merchant>
<data>
<oper>cmt</oper>
<payment id="1234567" status="ok" message="Исполнен" ref="P24A02509023364480" />
</data>
</response>
Возможные значения статуса:
not found - не найден платеж;
ok - успешный;
err - забракован;
snd - в обработке
После того как была получена оплата (status="ok")
Нужно в ноде, у которой значение поля $field_payment_id, соответствует приходящему значению менять соответствующий статус в поле ноды $payment_status
Интерфейс в админке никакой не нужен, тупо PHP костыль! id мерчанта и другие данные забиваются там же.
На сколько может быть сложный такой модуль? Поделитесь дельным советом, как такое проще всего реализовать? где соответствующую документацию читать?