Добрый день, есть необходимость подключить эквайринг от Сбербанка на сайт.
Знаю что есть модуль для комерса. Но сайт не является магазином, продавать необходимо услугу, т.е. необходимость в корзине, заполнении адреса и т.п. не нужна. Не хотелось бы ставить монстра Commerce.
Подскажите как это возможно реализовать, может кто сталкивался?
Пока из идей - это сбор данных и затем их отправка функцией:
<?phpdrupal_http_request(); ?>
Для связи с их REST API.
Обработка ответа и дальнейшие действия.
Подойдет такой вариант?
Пишу вопрос, и понимаю, что надо пробовать, прежде чем спрашивать)) Но все же может кто чего посоветует?
Сбербанк Эквайринг
Главные вкладки
Лучший ответ
Как оказалось использование их REST API, довольно простое!
Вот использованное мной решение:
Создал пользовательскую форму (модуль), в нем собираю необходимую информацию, затем при сабмите формы вызываю данный код, который передает запрос на сервер сбера и присылает ответ, в случае успешного ответа он возвращает url формы оплаты, куда я и перенаправляю пользователя, где он совершает оплату и сбер отправляет его на обратный url:
<?phpfunction module_form_submit($form, &$form_state) {
$result = drupal_http_request('https://3dsec.sberbank.ru/payment/rest/register.do', array(
'method' => 'POST',
'headers' => array(
'Content-Type' => 'application/x-www-form-urlencoded',
),
'data' => drupal_http_build_query(array(
'userName' => 'nameSberApi',
'password' => 'passSberApi',
'amount' => '200000',//сумма руб. в форме будет 2000,00 руб.
'orderNumber' => $id,
'returnUrl' => 'http://site.ru/success',
'failUrl' => 'http://site.ru/fail',
)),
));
$json = drupal_json_decode($result->data);
if (isset($json['formUrl'])) {
$url = $json['formUrl'];
$id = $json['orderId'];//пригодится для дальнейшей проверки, можно и не проверять.
drupal_goto($url);
} else {
$error = $json['errorMessage'];
drupal_set_message($error);
}
}?>
Комментарии
Не проще ли с помощью Callback-уведомлений. https://securepayments.sberbank.ru/wiki/doku.php/integration:api:callbac...
В этом случае, вроде бы, перекидывают плательщика на страницу Сбера, где он заполняет форму.
Как оказалось использование их REST API, довольно простое!
Вот использованное мной решение:
Создал пользовательскую форму (модуль), в нем собираю необходимую информацию, затем при сабмите формы вызываю данный код, который передает запрос на сервер сбера и присылает ответ, в случае успешного ответа он возвращает url формы оплаты, куда я и перенаправляю пользователя, где он совершает оплату и сбер отправляет его на обратный url:
<?phpfunction module_form_submit($form, &$form_state) {
$result = drupal_http_request('https://3dsec.sberbank.ru/payment/rest/register.do', array(
'method' => 'POST',
'headers' => array(
'Content-Type' => 'application/x-www-form-urlencoded',
),
'data' => drupal_http_build_query(array(
'userName' => 'nameSberApi',
'password' => 'passSberApi',
'amount' => '200000',//сумма руб. в форме будет 2000,00 руб.
'orderNumber' => $id,
'returnUrl' => 'http://site.ru/success',
'failUrl' => 'http://site.ru/fail',
)),
));
$json = drupal_json_decode($result->data);
if (isset($json['formUrl'])) {
$url = $json['formUrl'];
$id = $json['orderId'];//пригодится для дальнейшей проверки, можно и не проверять.
drupal_goto($url);
} else {
$error = $json['errorMessage'];
drupal_set_message($error);
}
}?>