Сделать интеграцию банка точка и linerfin.ru

Рушан

Рушан

· 5 мин. чтение
Thumbnail

Репозиторий приложения: https://git.tablecrm.com/linerfin.ru/linerfinru

Ссылка на документацию банка точка: https://enter.tochka.com/doc/v2/redoc#section/Pro-API


Сделать интеграцию нашего сервиса linerfn.ru c банком точка:


Сущности:

Платежи

Контрагенты

Счета


Что нужно делать:

Синхронизироваться каждый час список платежей из банка точка.


Что появляется на интерфейсе?

Кнопка для того, чтобы пройти oauth-авторизацию в банке для клиента.


Далее идет редирект юзера на наш endpoint.

После чего клиент выбирает какие же рассчетные счета из своего банка он хочет связать с нашим решением.


Выгружаются платежи только из настроенных на интерфейсе приложения linerfin.ru рассчетных счетов клиента.

Если клиент нажал на удалить интеграцию, то платежи больше не выгружаются, но сама интеграция продолжает жить на уровне бекенда, на случай если клиент нажмет на активировать интеграцию.


Итого, клиент все делает сам без нашего участия.

Выгружаются платежи, создаются контрагенты уникальные по инн или имени клиента.

Счета переходят в статус оплачено по факту оплаты в рамках счета.



Примеры кода:


Конечно! Вот пример кода на PHP с использованием фреймворка Laravel для получения списка счетов и их балансов:


php
use Illuminate\Support\Facades\Http;

// Параметры авторизации
$access_token = "your_access_token";
$refresh_token = "your_refresh_token";
$client_id = "your_client_id";
$client_secret = "your_client_secret";

// URL для получения списка счетов
$accounts_url = "https://api.tochka.com/banking/v1/accounts";

// Заголовки запроса
$headers = [
  "Content-Type" => "application/json",
  "Authorization" => "Bearer $access_token"
];

// Функция для обновления access токена с использованием refresh токена
function refreshAccessToken() {
  global $refresh_token, $client_id, $client_secret;

  $refresh_url = "https://api.tochka.com/oauth2/v1/token";

  // Параметры запроса на обновление токена
  $data = [
    "grant_type" => "refresh_token",
    "refresh_token" => $refresh_token,
    "client_id" => $client_id,
    "_secret" => $client_secret
  ];

  $response = Http::post($refresh_url, $data);

  if ($response->status() === 200) {
    $token_data = $response->json();
    $new_access_token = $token_data["access_token"];
    $new_refresh_token = $token_data["refresh_token"];

    // Обновляем значения токен
    global $access_token, $refresh_token;
    $access_token = $new_access_token;
    $refresh_token = $new_refresh_token;

    // Возможно, стоит сохранить новые значения токенов в защищенном хранилище
  }
}

// Функция для получения списка счетов и балансов
functionAccountList() {
  global $accounts_url, $headers;

  $response = Http::withHeaders($headers)->get($accounts_url);

  if ($response->status() === 200) {
    $accounts_data = $response->json();
     
    foreach ($accounts_data["accounts"] as $account) {
      $account_id = $account["id"];
      $balance = $account["balance"];
       
      // Ваша логика для обработки деталей счета
      echo "Account ID: $account_id, Balance: $balance";
    }
  } elseif ($response->status() === 401) {
    // Если получен статус 401 (Unauthorized), обновляем access токен и повторяем запрос
    refreshAccessToken();
    getAccountList(); // Рекурсивный вызов функции
  } else {
    $error_message = $response->body();
    echo "Error getting account list: $error_message";
  }
}

// Вызов функции для получения списка счетов и балансов
getAccountList();


В этом примере необходимо заменить your_access_token, your_refresh_token, your_client_id и your_client_secret на соответствующие значения, связанные с вашим приложением и аккаунтом в банке "Точка".


Если при запросе получен статус 401 (Unauthorized), это означает, что access токен истек или недействителен. В таком случае вызывается функция refreshAccessToken(), которая обновляет access токен с использованием refresh токена. После обновления токена происходит повторный вызов функции getAccountList() для получения списка счетов и балансов.


Рекомендуется внимательно изучить документацию банка "Точка" и документацию фреймворка Laravel для полного понимания процесса авторизации и использования API.



==============================================



Конечно! В пример кода на PHP с использованием фреймворка Laravel для создания выписки с использованием access и refresh токенов:


php

use Illuminate\Support\Facades\Http;


// Параметры авторизации

$access_token = "your_access_token";

$refresh = "your_refresh_token";

$client_id = "your_client_id";

$client_secret = "your_client_secret";


// URL для создания выписки

$statements_url = "https://api.tochka.com/banking/v1/statements";


// Параметры выписки

$statement_params = [

  "account_id" => "your_account_id",

  "start_date" => "2022-01-01",

  "end_date" => "2022-01-31"

];


// Заголовки запроса

$headers = [

  "Content-Type" => "application/json",

  "Authorization" => "Bearer $access_token"

];


// Функция для обновления access токена с использованием refresh токена

function refreshAccessToken() {

  global $refresh_token, $client_id, $client_secret;


  $refresh_url = "https://api.tochka.com/oauth2/v1/token";


  // Параметры запроса на обновление токена

  $data = [

    "grant_type" => "refresh_token",

    "refresh_token" => $refresh_token,

    "client_id" => $client_id,

    "client_secret" => $client_secret

  ];


  $response = Http::post($refresh_url, $data);


  if ($response->status() === 200) {

    $token_data = $response->json();

    $new_access_token = $token_data["access_token"];

    $new_refresh_token = $token_data["refresh_token"];


    // Обновляем значения токенов

    global $access_token, $refresh_token;

    $access_token = $new_access_token;

    $refresh_token = $new_refresh_token;


    // Возможно, стоит сохранить новые значения токенов в защищенном хранилище

  }

}


// Функция для создания выписки

function createStatement() {

  global $statements_url, $statement_params, $headers;


  $response = Http::withHeaders($headers)->post($statements_url, $statement_params);


  if ($response->status() === 201) {

    $statement_data = $response->json();

    $statement_id = $statement_data["id"];


    // Ваша логика для обработки созданной выписки

    echo "Выписка создана успешно: $statement_id";

  } elseif ($response->status() === 401) {

    // Если получен статус 401 (Unauthorized), обновляем access токен и повторяем запрос

    refreshAccessToken();

    createStatement(); // Рекурсивный вызов функции

  } else {

    $error_message = $response->body();

    echo "Ошибка создания выписки: $error_message";

  }

}


// Вызов функции для создания выписки

createStatement();


В этом примере необходимо заменить your_access_token, your_refresh_token, your_client_id, your_client_secret и your_account_id на соответствующие значения, связанные с вашим приложением и аккаунтом в банке "Точка".


Если при запросе получен статус 401 (Unauthorized), это означает, что access токен истек или недействителен. В таком случае вызывается функция refreshAccessToken(), которая обновляет access токен с использованием refresh токена. После обновления токена происходит повторный вызов функции createStatement() для создания выписки.


Рекомендуется внимательно изучить документацию банка "Точка" и документацию фреймворка Laravel для полного понимания процесса авторизации и использования API.




Рушан

Про Рушан

Краткое описание
Посмотреть профиль
Copyright © 2025 . Все права защищены.