Сбербанк Эквайринг

Главные вкладки

Аватар пользователя buddy90210 buddy90210 2 апреля 2020 в 20:51

Добрый день, есть необходимость подключить эквайринг от Сбербанка на сайт.
Знаю что есть модуль для комерса. Но сайт не является магазином, продавать необходимо услугу, т.е. необходимость в корзине, заполнении адреса и т.п. не нужна. Не хотелось бы ставить монстра Commerce.
Подскажите как это возможно реализовать, может кто сталкивался?
Пока из идей - это сбор данных и затем их отправка функцией:
<?phpdrupal_http_request(); ?>
Для связи с их REST API.
Обработка ответа и дальнейшие действия.
Подойдет такой вариант?
Пишу вопрос, и понимаю, что надо пробовать, прежде чем спрашивать)) Но все же может кто чего посоветует?

Лучший ответ

Аватар пользователя buddy90210 buddy90210 5 апреля 2020 в 18:58

Как оказалось использование их 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);
    }
}?>

Комментарии

Аватар пользователя Глот с планеты Катрук Глот с планеты ... 3 апреля 2020 в 1:20

Не проще ли с помощью Callback-уведомлений. https://securepayments.sberbank.ru/wiki/doku.php/integration:api:callbac...
В этом случае, вроде бы, перекидывают плательщика на страницу Сбера, где он заполняет форму.

Аватар пользователя buddy90210 buddy90210 5 апреля 2020 в 18:58

Как оказалось использование их 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);
    }
}?>