Closed custanator closed 4 weeks ago
@custanator, пока не знаю. А вы пробовали свой вариант? В принципе, если нужно только использовать application/json
вместо application/x-www-form-urlencoded
, то такую поддержку добавить можно. Или есть ещё какие-то изменения?
Да, мой вариант работает. Из того что бросилось в глаза:
@custanator, благодарю за детали! Полагаю, в таком случае поддержку нового протокола можно добавить.
@custanator, я сделал пулл-реквест с поддержкой нового протокола: https://github.com/voronkovich/sberbank-acquiring-client/pull/30. Посмотрите, если будет время. Буду рад замечаниям и предложениям.
Выглядит супер! Единственное наверно стоит реализовать все методы из документации. (Раз уж это библиотека =) ) МирПэй, работа с 3DS и прочее. На проде пока проверить не могу. Как смогу - отпишусь
@custanator, остальные методы я решил добавить в отдельных пулл-реквестах. В большинстве своём они являются просто обёртками над execute()
. И скорее всего я это сделаю уже в версии 3.0
, в которой новый протокол будет влючён по умолчанию. Спасибо за отзыв!
unBindCard.do -> unbindCard.do ¯_(ツ)_/¯
@custanator, спасибо, поправил.
@voronkovich Здравствуйте! Можете сказать когда планируется запуск версии 3.0 ?
@antonpresn, по видимому, никогда. Сбербанк закрывает свой эквайринг.
Т.к. само решение для Сбербанка предоставляла компания RBS Payments, я планирую просто создать новый пакет rbs-payments-client
и перенести в него код с небольшими изменениями, чтобы он не был привязан к конкретному банку.
if ($rest && !$this->ecom) {
$headers['Content-Type'] = 'application/x-www-form-urlencoded';
if (null !== $this->token) {
$data['token'] = $this->token;
} else {
$data['userName'] = $this->userName;
$data['password'] = $this->password;
}
$data = \http_build_query($data, '', '&');
} else {
$headers['Content-Type'] = 'application/json';
$data = \json_encode($data);
$method = HttpClientInterface::METHOD_POST;
}
@voronkovich Привет. В случае если ecom = true
, то userName
и password
не попадают в $data. Можешь поправить?
@Amirsz01, поправил.
Информацию ни про какое закрытие эквайринга мы не получали и про перевод в ЮМоней тоже.
Сбербанк по новому протоколу ecom свой прямой шлюз запустил и перевел нас на него с 01.09.2024.
Адреса:
Тестовая среда: https://ecomtest.sberbank.ru/...
Боевая среда: https://ecommerce.sberbank.ru/...
Ссылку на документацию кидали выше. Поэтому, если есть возможность внести изменения - были бы благодарны =)
Заранее спасибо.
@zzlyns, PR давно готов: https://github.com/voronkovich/sberbank-acquiring-client/pull/30 Если есть возможность - проверьте и напишите что всё работает. Я тогда его приму и выпущу новую версию пакета.
@zzlyns, PR давно готов: #30 Если есть возможность - проверьте и напишите что всё работает. Я тогда его приму и выпущу новую версию пакета.
Да, на неделе постараюсь проверить и сообщу. Благодарю!
При возврате errorCode отличным от 0, падает в Fatal error. В данном случае обращение к методу register.do попытка зарегистрировать заказ с номером, который уже был.
PHP Fatal error: Uncaught Voronkovich\SberbankAcquiring\Exception\ActionException: Заказ с таким номером уже обработан in /home/serg/vendor/voronkovich/sberbank-acquiring-client/src/Client.php:830 Stack trace:
0 /home/serg/vendor/voronkovich/sberbank-acquiring-client/src/Client.php(763): Voronkovich\SberbankAcquiring\Client->handleErrors()
1 /home/serg/vendor/voronkovich/sberbank-acquiring-client/src/Client.php(312): Voronkovich\SberbankAcquiring\Client->execute()
2 /home/serg/vendor/voronkovich/sberbank-acquiring-client/src/Client.php(232): Voronkovich\SberbankAcquiring\Client->doRegisterOrder()
3 /home/serg/test.php(26): Voronkovich\SberbankAcquiring\Client->registerOrder()
4 {main}
thrown in /home/serg/vendor/voronkovich/sberbank-acquiring-client/src/Client.php on line 830
$response
array(2) { ["errorCode"]=> string(1) "1" ["errorMessage"]=> string(65) "Заказ с таким номером уже обработан" }
@zzlyns, тут всё в порядке. Когда шлюз Сбербанка возвращает ошибку, библиотека бросает исключение ActionException
. В документации я это не описывал, но код должен быть примерно таким:
use Voronkovich\SberbankAcquiring\Client;
use Voronkovich\SberbankAcquiring\Exception\SberbankAcquiringException;
$client = new Client();
try {
$result = $client->registerOrder($orderId, $orderAmount, $returnUrl, $params);
} catch (SberbankAcquiringException $e) {
// Обработка исключения
}
Олег, пока проблем по ecom нет. Правда я могу проверить только регистрацию заказа, отмена, статус и т.п. работу с заказом. С другими методами мы не работаем. Возможно пока. Единственное что, если есть возможность, то добавить работу с методом setPermanentPassword - https://ecomtest.sberbank.ru/doc#tag/changePasswordServices Сейчас когда сбер выдает боевые данные для мерчанта, то требуется обязательная смена пароля на новый постоянный. Я понимаю, что эта функция не будет постоянно пользоваться спросом, одноразовая, но все равно наверное было бы удобно. Особенно когда периодически добавляются новые мерчанты.
@zzlyns, возвожности добавить setPermanentPassword
пока нет т.к. класс Client
при создании уже требует текущий пароль, который передаётся в каждом запросе к шлюзу в поле password
.
Раньше сменить пароль на постоянный требовалось при самом первом входе в личный кабинет. Полагаю сейчас всё работает также.
Раз всё работает, то я приму PR в течение текущей недели и выпущу новыую версию 2.9
.
Благодарю за помощь с тестированием!
Личного кабинета по интернет-эквайрингу больше нет, сбербанк все привязал к кабинету Сбербанк-Бизнес. А пароль дается временный при получении данных, который и требуется сразу сменить перед работой. Спасибо в любом случае!
Сбербанк переходит на свое решение Доки https://ecomtest.sberbank.ru/doc Методы максимально совместимы но со своими отличиями На базе вашей библиотеки я смастерил свой https://github.com/custanator/sberbank-ecom-acquiring-client Будет ли поддержка в вашей библиотеке?