Implements iPizza protocol to communicate with Estonian Banks.
Add gem dependency in your Gemfile
and install the gem:
gem 'ipizza'
Configuration can be made in two different ways, using Ipizza::Config.configure
block or loading configuration properties from YAML file.
Loading from YAML file:
Ipizza::Config.load_from_file('config.yml')
Configuration values should be set in YAML file in provider.attribute_value format. See example YAML file below in "Configuration parameters" section.
At any time, configuration can be modified with Ipizza::Config.configure
block:
Ipizza::Config.configure do |c|
c.certs_root = '/path/to/certificates'
c.swedbank_service_url = 'http://foo.bar/swedbank'
end
swedbank:
service_url: http://foo.bar/swedbank
return_url: http://mycompany.com/store
cancel_url: http://mycompany.com/cancel
# Your private key file path. Can be specified relatively
# to YAML file
file_key: ./certificates/my_private.key
# If your private key is protected with password,
# provide it here
key_secret: private_key_password
# Path to bank's public key file. Can be specified
# relatively to YAML file
file_cert: ./certificates/bank_public.crt
snd_id: dealer
encoding: ISO-8859-4
Please note that currently only ISO-8859-4 encoding is supported with Swedbank. UTF-8 works well with other payment providers.
payment = Ipizza::Payment.new(
:stamp => 1, :amount => '123.34', :refnum => 1,
:message => 'Payment message', :currency => 'EUR'
)
request = Ipizza::Provider::Swedbank.new.payment_request(@payment)
request = Ipizza::Provider::Swedbank.new.authentication_request
response = Ipizza::Provider::Swedbank.new.authentication_response({'VK_PARAM_1' => 'VALUE 1', ...})
response.valid?
This library currently works with four Estonian Banks. Here are their respective interface specifications:
- Thanks to all contributors!
- Tarmo Talu (Thanks for the 7-3-1 algorithm)