Connect Czech banks FIO and CSAS with your Ruby application
token = 'sdiohsiodgsr75rg7e8r7gh' # FIO bank token
@parser = CzechBanksParser.new.connect(token, 'fio')
token = 'sdiohsiodgsr75rg7e8r7gh' # CSAS Oauth2 refresh token
opts = {}
opts[:web_api_key] = CSAS_WEB_API_KEY
opts[:client_id] = CSAS_CLIENT_ID
opts[:secret] = CSAS_SECRET
otps[:mode] = 'production' # or sandbox
@parser = CzechBanksParser.new(opts).connect(token, 'csas')
date_from = Date.today - 1.week
date_to = Date.today
iban = 'CZ8788665897' # important only for CSAS
@parser.transactions(date_from, date_to, iban).each do |tr|
# output: {trans_id: tr[:id], variable_symbol: tr[:variable_symbol], date: tr[:date], amount: tr[:amount], currency: tr[:currency], from_account: tr[:account], bank: tr[:bank], name: tr[:name], message: tr[:message]}
end
class BankTokensController < ApplicationController
load_resource :account
load_resource through: :account
def auth
config = parser.config(params[:state])
redirect_to "#{config[:auth_uri]}?state=profil&redirect_uri=#{callback_account_bank_tokens_url(@account)}&client_id=#{config[:client_id]}&response_type=code&access_type=offline"
end
def callback
config = parser.config('csas')
redirect_to "#{config[:token_uri]}?grant_type=authorization_code&code=#{params[:code]}&client_id=#{config[:client_id]}&client_secret=#{config[:secret]}&redirect_uri=#{get_token_account_bank_tokens_url(@account)}&state=csas"
end
def get_token
if params[:refresh_token].present?
ibans = parser.connect(params[:refresh_token], 'csas').ibans # get accounts ibans from CSAS
if ibans.include?(@account.bank_account.iban)
bt = @account.bank_tokens.new(bank: 'csas', token: params[:refresh_token], active: true)
bt.save!
redirect_to accounts_path, notice: t('bank_account_connected')
else
flash[:error] = t('no_iban_match', iban: @account.bank_account.iban, ibans: ibans.join(', '))
redirect_to accounts_path
end
end
end
private
def parser
CzechBanksParser.new({web_api_key: CSAS_WEB_API_KEY, client_id: CSAS_CLIENT_ID, secret: CSAS_SECRET})
end
end
© Author: Richard Lapiš