Beberapa minggu yang lalu, di salah satu proyek, muncul pertanyaan tentang mengintegrasikan CRM dengan Tinkoff Bank API. Secara khusus, ini tentang mendapatkan laporan rekening bank.
Aset memiliki:
- openapi.tinkoff.ru
- Layanan dukungan telepon (mengingat kesibukan departemen dukungan teknis - pekerjaan menyelamatkan orang yang tenggelam, hasil pekerjaan orang yang tenggelam).
- Dokumen Google: 24386_policy.pdf (dengan huruf-huruf Rusia di dalamnya, dengan ekspresi yang menghibur, belokan sihir, tidak cocok tetapi, bagaimanapun, ...)
Dalam perjalanan Akun Google, umpan balik juga ditemukan bahwa pengaturan Tinkoff Bank API sangat menghibur dan non-sepele (lihat artikel di banki.ru
"Tinkoff API - kami terlalu bodoh untuk ini" ).
Ya, saya harus sedikit mengotak-atik, oleh karena itu, untuk menghemat waktu bagi kawan-kawan lain di bengkel, artikel ini ditulis.
Saya perhatikan bahwa Tinkoff Bank API menggunakan Oauth 2.0 untuk otorisasi.
Mengapa kita perlu openapi.tinkoff.ru?
- untuk ujian (lihat di bawah);
- untuk menebak apa itu apa dan bagaimana; tidak ada belat langsung; Kami bekerja pada tingkat intuisi! ...
Mari kita mulai. Di bagian "Otorisasi SSO", klik "bagaimana / Sembunyikan" dan kemudian / secure / token # refresh-token ("mengeluarkan token dengan menyegarkan token"), pilih grant_type sebagai parameter, kemudian di bidang refresh_token (Anda bisa mendapatkannya di Akun pengguna). Klik tombol "Cobalah!" Hasil dari tindakan ini adalah untuk memperoleh
hal penting seperti access_token (mis. Openapi.tinkoff.ru
menunjukkan kemungkinan menerimanya).
Selanjutnya, lihat bagian “Akun dan pembayaran”, klik pada / partner / perusahaan / {INN} / kutipan (“Kwitansi pernyataan”). Kami mempelajari parameter apa yang diperlukan untuk mendapatkannya: Otorisasi, INN, accountNumber, dari, hingga.
Otorisasi - kami menduga Otorisasi tidak lebih dari access_token, yang diterima oleh kami di bagian "Otorisasi SSO";
INN - INN dari organisasi tempat kami mengkonfigurasi API;
dari - sejak hari itu (periode debit);
sampai - pada hari apa (periode pembuangan).
Dengan demikian (kita melihat materi Oauth 2.0),
menerima data pernyataan terjadi dalam dua tahap - pertama kita mendapatkan access_token, kemudian memiliki access_token di tangan, kita mendapatkan data untuk pernyataan ini . Bagus Algoritmanya jelas, kami menulis kode (parameter akses dalam nilai kode untuk $ user, $ pass, $ refresh_token, $ inn, $ accountNumber - dalam kode di bawah ini diubah, untuk alasan yang jelas).
Buat file berikut:
- File pengaturan pertama adalah StartSettings.php
- File awal kedua adalah Start.php
- File ketiga untuk memposting / mem-parsing data ke / dari API adalah TinkoffInsertData.php ; kami menggunakan CURL (php).
- Basis data yang kosong tempat Anda dapat mengunggah data laporan: bank.sql ; Basis data MySQL (kami mengirim data ke basis data melalui PDO).
Jadi, lihat kode dan komentarnya!
File pengaturan - 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";
Mulai file - 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();
File untuk mengirim / mem-parsing data ke / dari API - TinkoffInsertData.php:
function TinkoffInsertData($user,$pass,$refresh_token, $inn, $accountNumber, $from_year, $from_month, $from_day, $till_year, $till_month, $till_day, $pdo){
Pembaca: Saya harap materi ini akan membantu dalam memonetisasi layanan web Anda dan layanan pelanggan Anda. Semoga pasukan datang bersamamu!
Tinkoff Bank, orang-orang dukungan teknis: Saya harap artikel ini akan mengurangi beban Anda! Semoga beruntung