АльфаБанк vs Т-Банк API

Вы что курили? Дайте мне тоже.
Вы что курили? Дайте мне тоже.

После проведения небольшой интеграции api альфабанка, хочется узнать, что они там курили и кто их поставщик.

Для сравнения, сразу опишу как происходит интеграция по api c Т-Банк. Заходим в лк -> интеграции -> выпускаем токен ( https://developer.tbank.ru/docs/intro/manuals/ ). Профит. Переходим в документацию https://developer.tbank.ru/docs/api и быстро интегрируемся.

фигак фигак и в продакшн
фигак фигак и в продакшн

В альфе все не просто, но надо сказать, что служба поддержки активно помогает, люди там есть и они заинтересованы в сотрудничестве. Однако, что бы полностью разобраться с авторизацией я потратил 3 дня (с учетом всех переписок) и еще 1 день для переключения на продуктовую среду.

АльфаБанк vs Т-Банк API

Первое, что вам нужно сделать, это написать на e-mail письмо со своими данными и просьбой предоставить доступ к API. В ответ придет письмо с данными для подключения к тестовой среде. Документация https://developers.alfabank.ru/products/alfa-api/documentati... .

Теперь необходимо получить client_secret https://developers.alfabank.ru/products/alfa-api/documentati... .

Нет, это еще не все, получаем authorization_code https://developers.alfabank.ru/products/alfa-api/documentati...

Уф, меняем authorization_code на refresh_token. Код для примера, сам по себе он работать не будет. В ответе access_token.

/** * Обмен authorization_code на refresh_token * return void */ public function authorizationCodeToRefreshToken($authorization_code) { try { $res = $this->client->request('POST', $this->getApiUrl() . '/oidc/token', [ 'form_params' => [ 'grant_type' => 'authorization_code', 'code' => $authorization_code, 'client_id' => $this->getClientId(), 'client_secret' => $this->getClientSecret(), 'redirect_uri' => 'http://localhost', 'code_verifier' => 'string', ], 'headers' => [ 'Accept' => 'application/json', 'Content-Type' => 'application/x-www-form-urlencoded' ], 'verify' => false,// без этого будет ошибка ssl 'cert' => $this->getSert(),// путь к сертификату 'ssl_key' => $this->getKey()// путь к ключу ] ); } catch (\Throwable $e) { $res = $e->getResponse(); } if ($res->getStatusCode() != 200) { throw new ServerErrorHttpException($res->getStatusCode() . ' ' . $res->getBody()->getContents()); } $json = json_decode($res->getBody(), true); $authToken = $json['access_token'] ?? ''; if (!$authToken) { throw new ServerErrorHttpException('Не удалось получить access_token'); } $cache = Yii::$app->cache; $expires_in = $json['expires_in']; $cache->set(self::TOKEN_NAME, $authToken, $expires_in - 600 ?? 3000); Params::updateParam('ALFA', 'ALFA_REFRESH_TOKEN', $json['refresh_token'] ?? ''); return $authToken; }

Когда access_token просрочится мы по рефрештокену получим новый, тут уже все стандартно.

Теперь можно свободно работать с тестовым api.

/** * Получение информации о компании * @return array * @throws GuzzleException * @throws ServerErrorHttpException */ public function companyInfo(): array { try { $res = $this->client->request('GET', $this->getApiUrl() . '/api/v2/customer-info', [ 'verify' => false, 'headers' => [ 'Accept' => 'application/json', 'Authorization' => 'Bearer ' . $this->getToken() ], 'cert' => $this->getSert(), 'ssl_key' => $this->getKey() ] ); } catch (GuzzleException $e) { $res = $e->getResponse(); } catch (\Throwable $e) { throw new ServerErrorHttpException($e->getMessage()); } if ($res->getStatusCode() != 200) { throw new ServerErrorHttpException($res->getStatusCode() . ' ' . $res->getBody()->getContents()); } return json_decode($res->getBody()->getContents(), true); }

После того как интеграция будет готова, нужно снова написать на email, из альфы пришлют инструкцию по генерации продуктового сертификата. Отправляем сертификат в банк и в ответ приходит новый сертификат и ключ из альфы. Ура, можно указывать боевой url, прописывать боевые сертификаты и начинать работу.

Получается на интеграцию альфы надо тратить на 1 неделю (округляю) больше чем на интеграцию тбанка. Если компенсация (брутто) программиста будет 250 тыс, то она будет стоить на 62 000 руб дороже чем интеграция с Т-Банк.

62 000 рублей. Я не знаю сколько это в футбольных полях, но лучше их потратить на себя.

Начать дискуссию