Vor einigen Wochen stellte sich in einem der Projekte die Frage, ob CRM in die Tinkoff Bank-API integriert werden soll. Insbesondere ging es darum, einen Kontoauszug zu bekommen.
Der Vermögenswert hatte:
- openapi.tinkoff.ru
- Telefonischer Support-Service (angesichts der Geschäftigkeit der Abteilung für technischen Support - die Aufgabe, den Ertrinkenden zu retten, die Handarbeit des Ertrinkenden).
- Googeltes Dokument: 24386_policy.pdf (mit russischen Buchstaben im Inneren, mit unterhaltsamen Ausdrücken, Hexenumdrehungen , ungeeignet, aber dennoch eine Sache ...)
Im Verlauf der Google-Box wurde auch festgestellt, dass das Einrichten der Tinkoff Bank-API sehr unterhaltsam und nicht trivial ist (siehe den Artikel auf banki.ru
„Tinkoff-API - dafür sind wir zu dumm“ ).
Ja, ich musste ein bisschen basteln, deshalb wurde dieser Artikel geschrieben, um Zeit für andere Kameraden in der Werkstatt zu sparen.
Ich stelle fest, dass die Tinkoff Bank API Oauth 2.0 zur Autorisierung verwendet.
Warum brauchen wir openapi.tinkoff.ru?
- für den Test (siehe unten);
- um zu erraten, was was und wie ist; es gibt keine direkte Schiene; Wir arbeiten auf der Ebene der Intuition! ...
Fangen wir an. Klicken Sie im Abschnitt "SSO-Autorisierung" auf "Wie / Ausblenden" und dann auf / Secure / Token # Refresh-Token ("Ausgeben eines Tokens durch Aktualisierungstoken"), wählen Sie grant_type als Parameter aus und geben Sie es dann in das Feld refresh_token ein (Sie können es abrufen) Benutzerkonto). Klicken Sie auf die Schaltfläche "Probieren Sie es aus!" Das Ergebnis dieser Aktionen besteht darin, eine so
wichtige Sache wie access_token zu erhalten (d. H. Openapi.tinkoff.ru
demonstriert die Möglichkeit, sie zu empfangen).
Schauen Sie sich als nächstes den Abschnitt „Konten und Zahlungen“ an und klicken Sie auf / partner / company / {INN} / excerpt („Beleg der Abrechnung“). Wir untersuchen, welche Parameter benötigt werden, um sie zu erhalten: Authorization, INN, accountNumber, from, till.
Autorisierung - Wir vermuten, dass die Autorisierung nichts anderes als access_token ist, das wir im Abschnitt "SSO-Autorisierung" erhalten haben.
INN - INN der Organisation, für die wir die API konfigurieren;
ab - ab welchem Tag (Entlassungszeitraum);
bis - an welchem Tag (Entlassungszeit).
Daher (wir betrachten das Oauth 2.0-Material) erfolgt das Abrufen von
Anweisungsdaten in zwei Schritten: Zuerst erhalten wir access_token, dann haben wir access_token zur Hand und erhalten die Daten für diese Anweisung . Großartig. Der Algorithmus ist klar, wir schreiben den Code (Zugriffsparameter in den Codewerten für $ user, $ pass, $ refresh_token, $ inn, $ accountNumber - im folgenden Code werden aus offensichtlichen Gründen geändert).
Erstellen Sie die folgenden Dateien:
- Die erste Einstellungsdatei ist StartSettings.php
- Die zweite Startdatei ist Start.php
- Die dritte Datei zum Posten / Parsen von Daten in / von der API ist TinkoffInsertData.php ; Wir verwenden CURL (PHP).
- Ein leerer Datenbankspeicherauszug, in den Sie die Daten Ihrer Kontoauszüge hochladen können: bank.sql ; MySQL-Datenbank (wir senden Daten über PDO an die Datenbank).
Schauen Sie sich also den Code an und kommentieren Sie ihn!
Einstellungsdatei - 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";
Datei starten - 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();
Datei zum Posten / Parsen von Daten zur / von der API - TinkoffInsertData.php:
function TinkoffInsertData($user,$pass,$refresh_token, $inn, $accountNumber, $from_year, $from_month, $from_day, $till_year, $till_month, $till_day, $pdo){
Leser: Ich hoffe, dieses Material hilft bei der Monetarisierung Ihrer Webdienste und der Dienste Ihrer Kunden. Möge die Macht mit dir kommen!
Technischer Support der Tinkoff Bank: Ich hoffe, dieser Artikel entlastet Sie! Viel Glück