Hace un par de semanas, en uno de los proyectos, surgió la cuestión de integrar CRM con la API de Tinkoff Bank. En particular, se trataba de obtener un estado de cuenta bancaria.
El activo tenía:
- openapi.tinkoff.ru
- Servicio de asistencia telefónica (dada la ocupación del departamento de asistencia técnica: el trabajo de salvar al ahogado, la obra del ahogado).
- Documento en Google: 24386_policy.pdf (con letras rusas adentro, con expresiones entretenidas, giros de brujería, inadecuados pero, sin embargo, una cosa ...)
En el curso de la caja de google, también se encontraron revisiones de que configurar la API de Tinkoff Bank es muy entretenido y no trivial (vea el artículo en banki.ru
"API de Tinkoff: somos demasiado estúpidos para esto" ).
Sí, tuve que pensar un poco, por lo tanto, para ahorrar tiempo a otros compañeros en el taller, este artículo fue escrito.
Observo que la API de Tinkoff Bank usa Oauth 2.0 para la autorización.
¿Por qué necesitamos openapi.tinkoff.ru?
- para la prueba (ver abajo);
- para adivinar qué es qué y cómo; no hay férula directa; ¡Trabajamos al nivel de la intuición! ...
Empecemos En la sección "Autorización de SSO", haga clic en "cómo / Ocultar", y luego / secure / token # refresh-token ("emitir un token por refrescar token"), seleccione grant_type como parámetro, luego en el campo refresh_token (puede obtenerlo en Cuenta de usuario). Haga clic en el botón "¡Pruébelo!" El resultado de estas acciones es obtener algo tan
importante como access_token (es decir, openapi.tinkoff.ru
demuestra la posibilidad de recibirlo).
A continuación, consulte la sección "Cuentas y pagos", haga clic en / partner / company / {INN} / excerpt ("Recibo de extracto"). Estudiamos qué parámetros son necesarios para obtenerlo: Autorización, INN, número de cuenta, desde, hasta.
Autorización: suponemos que la Autorización no es más que un token de acceso, que recibimos en la sección "Autorización de SSO";
INN - INN de la organización para la cual configuramos la API;
desde - a partir de qué día (período de alta);
hasta - en qué día (período de alta).
Por lo tanto (observamos el material de Oauth 2.0), la
obtención de datos de la declaración ocurre en dos etapas: primero obtenemos access_token, luego, teniendo access_token a mano, obtenemos los datos para esta declaración . Genial El algoritmo es claro, escribimos el código (los parámetros de acceso en los valores del código para $ user, $ pass, $ refresh_token, $ inn, $ accountNumber - en el código a continuación se cambian, por razones obvias).
Crea los siguientes archivos:
- El primer archivo de configuración es StartSettings.php
- El segundo archivo de inicio es Start.php
- El tercer archivo para publicar / analizar datos a / desde la API es TinkoffInsertData.php ; Usamos CURL (php).
- Un volcado de base de datos vacío donde puede cargar los datos de sus extractos: bank.sql ; Base de datos MySQL (enviamos datos a la base de datos a través de PDO).
¡Entonces, mira el código y comenta sobre él!
Archivo de configuración - StartSettings.php:
$host = '127.0.0.1'; $db = 'bank'; $user = 'root'; $pass = ''; $charset = 'utf8'; $dsn = "mysql:host=$host;dbname=$db;charset=$charset"; $opt = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; $pdo = new PDO($dsn, $user, $pass, $opt); $user="IKu0jn98kllkI90kklii";
Archivo de inicio - Start.php:
session_start(); error_reporting(E_ALL); include 'StartSettings.php'; include 'TinkoffInsertData.php'; TinkoffInsertData($user,$pass,$refresh_token, $inn, $accountNumber, $from_year, $from_month, $from_day, $till_year, $till_month, $till_day, $pdo); $stmt = $pdo->prepare("INSERT INTO `bank`.`dateofwork` (dateofwork) VALUES (NOW())"); $stmt->execute();
Archivo para publicar / analizar datos a / desde API - TinkoffInsertData.php:
function TinkoffInsertData($user,$pass,$refresh_token, $inn, $accountNumber, $from_year, $from_month, $from_day, $till_year, $till_month, $till_day, $pdo){
Lectores: Espero que este material ayude a monetizar sus servicios web y los servicios de sus clientes. ¡Que la fuerza te acompañe!
Soporte técnico de Tinkoff Bank chicos: ¡espero que este artículo reduzca la carga sobre ustedes! Buena suerte