Skip to content

Repository files navigation

iDEAL

Library for the iDEAL payment standard.

What is iDEAL?

iDEAL is a set of standards developed to facilitate online payments through the online banking applications that most Dutch banks provide.

If a consumer already has online banking with ABNAMRO, Fortis, ING/Postbank, Rabobank, or SNS Bank, they can make payments using iDEAL in a way that they are already familiar with.

See http://ideal.nl and http://idealdesk.com for more information.

Merchant account

In order to use iDEAL you will need to get an iDEAL merchant account from your bank. Every bank offers ‘complete payment’ services, which can obfuscate the right choice. The payment product that you will want to get, in order to use this gateway class, is a bare bones iDEAL account.

  • ING/Postbank: iDEAL Advanced
  • ABNAMRO: iDEAL Zelfbouw
  • Fortis: ? (Unknown)
  • Rabobank: Rabo iDEAL Professional. (Unverified)
  • SNS Bank: Not yet available

Install

The iDEAL gem does not have any large external dependencies. It depends on Nap (a small HTTP library) and Builder (for building XML files). Because of these minor dependencies it’s suited to use in Ruby projects other than Ruby on Rails.

The easiest way to install is as a gem.

sudo gem install ideal

Or you can add it as a dependency in your Gemfile.

gem 'ideal'

Finally, if you don’t dig any of that gemming that’s so popular nowadays, you can install it as a plugin;

cd vendor/plugins
git clone --depth 1 git://github.com/sieudang2002/Ideal.git ideal

Generate private keys and certificates

Messages between you and the acquirer are all signed in order to prove their authenticity. You will need a certificate for your side, this can be self-issued. If you like spending money, you can buy a certificate from some SSL authority. The certificate of the acquirer is probably hidden somewhere in plain sight in their documentation.

To create a self-signed certificate follow these steps:

  • /usr/bin/openssl genrsa -des3 -out private_key.pem -passout pass:the_passphrase 1024
  • /usr/bin/openssl req -x509 -new -key private_key.pem -passin pass:the_passphrase -days 3650 -out private_certificate.cer

Substitute the_passphrase with your own passphrase. You will need to configure that passphrase later on, so hand on to it.

You will need to upload your public key (certificate) to your iDEAL dashboard. Usually they have a completely independent test and live environment so you can use different certificates for both.

For more information on certificates and encryption see:

Test and activation

Once you’ve uploaded the certificate you need to initiate a number of transactions to complete the activation process. Luckily these transactions are part of the remote test for the gem. It’s still kind of a pain, but here we go!

git clone --depth 1 git://github.com/Fingertips/Ideal.git ideal
cd ideal
bundle install
  • Create the ~/.ideal directory.
  • Copy test/fixtures.yml to ~/.ideal.
  • Fill in your own merchant id, passphrase and the correct locations to your private key and certificates.
ruby test/remote_test.rb

If you’ve succeeded you will see the following:

ruby test/remote_test.rb Loaded suite test/remote_test
Started
...........
Finished in 9.768389 seconds.
11 tests, 33 assertions, 0 failures, 0 errors

If you see test errors, you’re on your own (; You can run the test in debug mode to check what’s sent across the wire.

ruby -d test/remote_test.rb 

Dashboards

ING

ABNAMRO

Compatibility

We run continuous integration tests with Ruby 1.8.7, 1.9.2, and 1.9.3. We’re pretty sure that means it works (see the badge at the top of this file).

Example (Rails)

The following code was written as an example and should not be used without further testing in your application. USE AT YOUROWNPERIL. Remember to have fun (;

Config

Configure the Gateway somewhere. One place could be config/initializers/ideal.rb.

unless Rails.env.production?
Ideal::Gateway.environment = :test
end
# Other banks preloaded are :abnamro and :rabobank
Ideal::Gateway.acquirer = :ing Ideal::Gateway.merchant_id = '00123456789'
# Maybe you'd like another location
ideal_directory = Rails.root + 'config/ideal'
Ideal::Gateway.passphrase = 'the_passphrase'
Ideal::Gateway.private_key_file = ideal_directory + 'private_key.pem'
Ideal::Gateway.private_certificate_file = ideal_directory + 'private_certificate.cer'
Ideal::Gateway.ideal_certificate_file = ideal_directory + 'ideal.cer'

Show a payment form

Show a list of all issuers (banks) to choose from.

class PaymentsController < ActionController::Base
def new
@payment = Payment.new
@issuers = sorted_issuers
end
private
def ideal
Ideal::Gateway.new
end
def sorted_issuers
# NOTE: this does a GET on the bankend, you might want to memoize this
ideal.issuers.list.sort_by do |issuer|
issuer[:name]
end.map do |issuer|
[issuer[:name], issuer[:id]]
end
end
end

<%= form_for(@payment) do |f| %>
<%= f.select(:issuer_id, @issuers) %>
<% end %>

Would result in something like:

ABN AMRO Bank Asr bank Postbank Rabobank Van Lanschot

Set up a payment

First you’ll need to setup a transaction and redirect the consumer there so she can make the payment:

class Payment < ActiveRecord::Base
# Validation code used to validate returning notifications from iDeal
def ideal_entrance_code
Digest::SHA1.hexdigest("#{id}-#{created_at}-#{access_token}")
end
def ideal_attributes
{
# The customer has 30 minutes to complete the iDeal transaction (ISO 8601)
:expiration_period => "PT30M",
:issuer_id => issuer_id,
:return_url => return_url,
:order_id => id.to_s,
:description => description,
:entrance_code => ideal_entrance_code
}
end
end
class PaymentsController < ActionController::Base
def create
payment = Payment.create(params[:payment].merge(
:price_in_cents => 1000, # €10.00 in cents
:return_url => payment_url(payment), # This is where the customer will be returned to
:description => 'A Dutch windmill' # This will end up on the customer's bank statement (max 32 ASCII chars)
))
response = ideal.setup_purchase(payment.price_in_cents, payment.ideal_attributes)
if response.success?
payment.transaction_id = response.transaction_id
payment.status = 'pending'
payment.save(false)
else
Rails.logger.info("Payment initialization failed: [#{response.error_message}] #{response.error_details}")
end
# Redirect the consumer to the issuer’s payment page.
redirect_to response.service_url
end
end

After the consumer is done with the payment she will be redirected to the :return_url. It’s now your responsibility as merchant to check if the payment has been made:


class PaymentsController < ActionController::Base
def show
@payment = Payment.find(params[:id])
status = ideal.capture(@payment.transaction_id)
if status.success?
@payment.update_attributes!(:status => 'paid')
flash[:notice] = "Congratulations, you are now the proud owner of a Dutch windmill!"
end
end
end

Help out!

If you find anything wrong with the gem, we would love to hear from you. Please create an issue with a patch if you run into anything.

History

In 2006 an iDEAL payment library was written in Ruby for a web shop build in Rails for selling mobile phone credits. It was basically a translation of the PHP example given by the iDEAL organization (see iDEAL Advanced Integration Manual PHP). Is was released as the ideal-on-rails library.

In 2007 this code was refactored as a patch for the ActiveMerchant library, this was mainly done by Fingertips for a client project. This patch was never accepted due to the fact it was too different (and maybe too obscure) from the ‘normal’ credit card gateways. After some lobbying an older patch of the code eventually found it’s way into ActiveMerchant.

In 2009 Fingertips forked the ActiveMerchant library and added an iDEAL gateway based on the ActiveMerchant path.

In 2010 this code was extracted and converted into a separate gem by Frank Oxener of Agile Dovadi, so it can be more easily used in combination with the latest version of ActiveMerchant. This library was just an extraction, nothing more and nothing less. There were no fundamental changes between the code from the ideal branch and the code of this gem. Later that year Sernin van de Krol added support for ABNAMRO.

At the end of 2011 Fingertips made yet another fork of the code as the iDeal gem. They ripped out all ActiveMerchant and Rails dependencies. In 2012 ABNAMRO switched their backend and support for this was also added.

About

Modified Library for iDEAL 3.1.1 payments. (change ideal acquirer v3 for abn amro bank)

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - ClusterTV/Ideal: Modified Library for iDEAL 3.1.1 payments. (change ideal acquirer v3 for abn amro bank) · GitHub
Skip to content

Repository files navigation

iDEAL

Library for the iDEAL payment standard.

What is iDEAL?

iDEAL is a set of standards developed to facilitate online payments through the online banking applications that most Dutch banks provide.

If a consumer already has online banking with ABNAMRO, Fortis, ING/Postbank, Rabobank, or SNS Bank, they can make payments using iDEAL in a way that they are already familiar with.

See http://ideal.nl and http://idealdesk.com for more information.

Merchant account

In order to use iDEAL you will need to get an iDEAL merchant account from your bank. Every bank offers ‘complete payment’ services, which can obfuscate the right choice. The payment product that you will want to get, in order to use this gateway class, is a bare bones iDEAL account.

  • ING/Postbank: iDEAL Advanced
  • ABNAMRO: iDEAL Zelfbouw
  • Fortis: ? (Unknown)
  • Rabobank: Rabo iDEAL Professional. (Unverified)
  • SNS Bank: Not yet available

Install

The iDEAL gem does not have any large external dependencies. It depends on Nap (a small HTTP library) and Builder (for building XML files). Because of these minor dependencies it’s suited to use in Ruby projects other than Ruby on Rails.

The easiest way to install is as a gem.

sudo gem install ideal

Or you can add it as a dependency in your Gemfile.

gem 'ideal'

Finally, if you don’t dig any of that gemming that’s so popular nowadays, you can install it as a plugin;

cd vendor/plugins
git clone --depth 1 git://github.com/sieudang2002/Ideal.git ideal

Generate private keys and certificates

Messages between you and the acquirer are all signed in order to prove their authenticity. You will need a certificate for your side, this can be self-issued. If you like spending money, you can buy a certificate from some SSL authority. The certificate of the acquirer is probably hidden somewhere in plain sight in their documentation.

To create a self-signed certificate follow these steps:

  • /usr/bin/openssl genrsa -des3 -out private_key.pem -passout pass:the_passphrase 1024
  • /usr/bin/openssl req -x509 -new -key private_key.pem -passin pass:the_passphrase -days 3650 -out private_certificate.cer

Substitute the_passphrase with your own passphrase. You will need to configure that passphrase later on, so hand on to it.

You will need to upload your public key (certificate) to your iDEAL dashboard. Usually they have a completely independent test and live environment so you can use different certificates for both.

For more information on certificates and encryption see:

Test and activation

Once you’ve uploaded the certificate you need to initiate a number of transactions to complete the activation process. Luckily these transactions are part of the remote test for the gem. It’s still kind of a pain, but here we go!

git clone --depth 1 git://github.com/Fingertips/Ideal.git ideal
cd ideal
bundle install
  • Create the ~/.ideal directory.
  • Copy test/fixtures.yml to ~/.ideal.
  • Fill in your own merchant id, passphrase and the correct locations to your private key and certificates.
ruby test/remote_test.rb

If you’ve succeeded you will see the following:

ruby test/remote_test.rb Loaded suite test/remote_test
Started
...........
Finished in 9.768389 seconds.
11 tests, 33 assertions, 0 failures, 0 errors

If you see test errors, you’re on your own (; You can run the test in debug mode to check what’s sent across the wire.

ruby -d test/remote_test.rb 

Dashboards

ING

ABNAMRO

Compatibility

We run continuous integration tests with Ruby 1.8.7, 1.9.2, and 1.9.3. We’re pretty sure that means it works (see the badge at the top of this file).

Example (Rails)

The following code was written as an example and should not be used without further testing in your application. USE AT YOUROWNPERIL. Remember to have fun (;

Config

Configure the Gateway somewhere. One place could be config/initializers/ideal.rb.

unless Rails.env.production?
Ideal::Gateway.environment = :test
end
# Other banks preloaded are :abnamro and :rabobank
Ideal::Gateway.acquirer = :ing Ideal::Gateway.merchant_id = '00123456789'
# Maybe you'd like another location
ideal_directory = Rails.root + 'config/ideal'
Ideal::Gateway.passphrase = 'the_passphrase'
Ideal::Gateway.private_key_file = ideal_directory + 'private_key.pem'
Ideal::Gateway.private_certificate_file = ideal_directory + 'private_certificate.cer'
Ideal::Gateway.ideal_certificate_file = ideal_directory + 'ideal.cer'

Show a payment form

Show a list of all issuers (banks) to choose from.

class PaymentsController < ActionController::Base
def new
@payment = Payment.new
@issuers = sorted_issuers
end
private
def ideal
Ideal::Gateway.new
end
def sorted_issuers
# NOTE: this does a GET on the bankend, you might want to memoize this
ideal.issuers.list.sort_by do |issuer|
issuer[:name]
end.map do |issuer|
[issuer[:name], issuer[:id]]
end
end
end

<%= form_for(@payment) do |f| %>
<%= f.select(:issuer_id, @issuers) %>
<% end %>

Would result in something like:

ABN AMRO Bank Asr bank Postbank Rabobank Van Lanschot

Set up a payment

First you’ll need to setup a transaction and redirect the consumer there so she can make the payment:

class Payment < ActiveRecord::Base
# Validation code used to validate returning notifications from iDeal
def ideal_entrance_code
Digest::SHA1.hexdigest("#{id}-#{created_at}-#{access_token}")
end
def ideal_attributes
{
# The customer has 30 minutes to complete the iDeal transaction (ISO 8601)
:expiration_period => "PT30M",
:issuer_id => issuer_id,
:return_url => return_url,
:order_id => id.to_s,
:description => description,
:entrance_code => ideal_entrance_code
}
end
end
class PaymentsController < ActionController::Base
def create
payment = Payment.create(params[:payment].merge(
:price_in_cents => 1000, # €10.00 in cents
:return_url => payment_url(payment), # This is where the customer will be returned to
:description => 'A Dutch windmill' # This will end up on the customer's bank statement (max 32 ASCII chars)
))
response = ideal.setup_purchase(payment.price_in_cents, payment.ideal_attributes)
if response.success?
payment.transaction_id = response.transaction_id
payment.status = 'pending'
payment.save(false)
else
Rails.logger.info("Payment initialization failed: [#{response.error_message}] #{response.error_details}")
end
# Redirect the consumer to the issuer’s payment page.
redirect_to response.service_url
end
end

After the consumer is done with the payment she will be redirected to the :return_url. It’s now your responsibility as merchant to check if the payment has been made:


class PaymentsController < ActionController::Base
def show
@payment = Payment.find(params[:id])
status = ideal.capture(@payment.transaction_id)
if status.success?
@payment.update_attributes!(:status => 'paid')
flash[:notice] = "Congratulations, you are now the proud owner of a Dutch windmill!"
end
end
end

Help out!

If you find anything wrong with the gem, we would love to hear from you. Please create an issue with a patch if you run into anything.

History

In 2006 an iDEAL payment library was written in Ruby for a web shop build in Rails for selling mobile phone credits. It was basically a translation of the PHP example given by the iDEAL organization (see iDEAL Advanced Integration Manual PHP). Is was released as the ideal-on-rails library.

In 2007 this code was refactored as a patch for the ActiveMerchant library, this was mainly done by Fingertips for a client project. This patch was never accepted due to the fact it was too different (and maybe too obscure) from the ‘normal’ credit card gateways. After some lobbying an older patch of the code eventually found it’s way into ActiveMerchant.

In 2009 Fingertips forked the ActiveMerchant library and added an iDEAL gateway based on the ActiveMerchant path.

In 2010 this code was extracted and converted into a separate gem by Frank Oxener of Agile Dovadi, so it can be more easily used in combination with the latest version of ActiveMerchant. This library was just an extraction, nothing more and nothing less. There were no fundamental changes between the code from the ideal branch and the code of this gem. Later that year Sernin van de Krol added support for ABNAMRO.

At the end of 2011 Fingertips made yet another fork of the code as the iDeal gem. They ripped out all ActiveMerchant and Rails dependencies. In 2012 ABNAMRO switched their backend and support for this was also added.

About

Modified Library for iDEAL 3.1.1 payments. (change ideal acquirer v3 for abn amro bank)

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - ClusterTV/Ideal: Modified Library for iDEAL 3.1.1 payments. (change ideal acquirer v3 for abn amro bank) · GitHub
Skip to content

Repository files navigation

iDEAL

Library for the iDEAL payment standard.

What is iDEAL?

iDEAL is a set of standards developed to facilitate online payments through the online banking applications that most Dutch banks provide.

If a consumer already has online banking with ABNAMRO, Fortis, ING/Postbank, Rabobank, or SNS Bank, they can make payments using iDEAL in a way that they are already familiar with.

See http://ideal.nl and http://idealdesk.com for more information.

Merchant account

In order to use iDEAL you will need to get an iDEAL merchant account from your bank. Every bank offers ‘complete payment’ services, which can obfuscate the right choice. The payment product that you will want to get, in order to use this gateway class, is a bare bones iDEAL account.

  • ING/Postbank: iDEAL Advanced
  • ABNAMRO: iDEAL Zelfbouw
  • Fortis: ? (Unknown)
  • Rabobank: Rabo iDEAL Professional. (Unverified)
  • SNS Bank: Not yet available

Install

The iDEAL gem does not have any large external dependencies. It depends on Nap (a small HTTP library) and Builder (for building XML files). Because of these minor dependencies it’s suited to use in Ruby projects other than Ruby on Rails.

The easiest way to install is as a gem.

sudo gem install ideal

Or you can add it as a dependency in your Gemfile.

gem 'ideal'

Finally, if you don’t dig any of that gemming that’s so popular nowadays, you can install it as a plugin;

cd vendor/plugins
git clone --depth 1 git://github.com/sieudang2002/Ideal.git ideal

Generate private keys and certificates

Messages between you and the acquirer are all signed in order to prove their authenticity. You will need a certificate for your side, this can be self-issued. If you like spending money, you can buy a certificate from some SSL authority. The certificate of the acquirer is probably hidden somewhere in plain sight in their documentation.

To create a self-signed certificate follow these steps:

  • /usr/bin/openssl genrsa -des3 -out private_key.pem -passout pass:the_passphrase 1024
  • /usr/bin/openssl req -x509 -new -key private_key.pem -passin pass:the_passphrase -days 3650 -out private_certificate.cer

Substitute the_passphrase with your own passphrase. You will need to configure that passphrase later on, so hand on to it.

You will need to upload your public key (certificate) to your iDEAL dashboard. Usually they have a completely independent test and live environment so you can use different certificates for both.

For more information on certificates and encryption see:

Test and activation

Once you’ve uploaded the certificate you need to initiate a number of transactions to complete the activation process. Luckily these transactions are part of the remote test for the gem. It’s still kind of a pain, but here we go!

git clone --depth 1 git://github.com/Fingertips/Ideal.git ideal
cd ideal
bundle install
  • Create the ~/.ideal directory.
  • Copy test/fixtures.yml to ~/.ideal.
  • Fill in your own merchant id, passphrase and the correct locations to your private key and certificates.
ruby test/remote_test.rb

If you’ve succeeded you will see the following:

ruby test/remote_test.rb Loaded suite test/remote_test
Started
...........
Finished in 9.768389 seconds.
11 tests, 33 assertions, 0 failures, 0 errors

If you see test errors, you’re on your own (; You can run the test in debug mode to check what’s sent across the wire.

ruby -d test/remote_test.rb 

Dashboards

ING

ABNAMRO

Compatibility

We run continuous integration tests with Ruby 1.8.7, 1.9.2, and 1.9.3. We’re pretty sure that means it works (see the badge at the top of this file).

Example (Rails)

The following code was written as an example and should not be used without further testing in your application. USE AT YOUROWNPERIL. Remember to have fun (;

Config

Configure the Gateway somewhere. One place could be config/initializers/ideal.rb.

unless Rails.env.production?
Ideal::Gateway.environment = :test
end
# Other banks preloaded are :abnamro and :rabobank
Ideal::Gateway.acquirer = :ing Ideal::Gateway.merchant_id = '00123456789'
# Maybe you'd like another location
ideal_directory = Rails.root + 'config/ideal'
Ideal::Gateway.passphrase = 'the_passphrase'
Ideal::Gateway.private_key_file = ideal_directory + 'private_key.pem'
Ideal::Gateway.private_certificate_file = ideal_directory + 'private_certificate.cer'
Ideal::Gateway.ideal_certificate_file = ideal_directory + 'ideal.cer'

Show a payment form

Show a list of all issuers (banks) to choose from.

class PaymentsController < ActionController::Base
def new
@payment = Payment.new
@issuers = sorted_issuers
end
private
def ideal
Ideal::Gateway.new
end
def sorted_issuers
# NOTE: this does a GET on the bankend, you might want to memoize this
ideal.issuers.list.sort_by do |issuer|
issuer[:name]
end.map do |issuer|
[issuer[:name], issuer[:id]]
end
end
end

<%= form_for(@payment) do |f| %>
<%= f.select(:issuer_id, @issuers) %>
<% end %>

Would result in something like:

ABN AMRO Bank Asr bank Postbank Rabobank Van Lanschot

Set up a payment

First you’ll need to setup a transaction and redirect the consumer there so she can make the payment:

class Payment < ActiveRecord::Base
# Validation code used to validate returning notifications from iDeal
def ideal_entrance_code
Digest::SHA1.hexdigest("#{id}-#{created_at}-#{access_token}")
end
def ideal_attributes
{
# The customer has 30 minutes to complete the iDeal transaction (ISO 8601)
:expiration_period => "PT30M",
:issuer_id => issuer_id,
:return_url => return_url,
:order_id => id.to_s,
:description => description,
:entrance_code => ideal_entrance_code
}
end
end
class PaymentsController < ActionController::Base
def create
payment = Payment.create(params[:payment].merge(
:price_in_cents => 1000, # €10.00 in cents
:return_url => payment_url(payment), # This is where the customer will be returned to
:description => 'A Dutch windmill' # This will end up on the customer's bank statement (max 32 ASCII chars)
))
response = ideal.setup_purchase(payment.price_in_cents, payment.ideal_attributes)
if response.success?
payment.transaction_id = response.transaction_id
payment.status = 'pending'
payment.save(false)
else
Rails.logger.info("Payment initialization failed: [#{response.error_message}] #{response.error_details}")
end
# Redirect the consumer to the issuer’s payment page.
redirect_to response.service_url
end
end

After the consumer is done with the payment she will be redirected to the :return_url. It’s now your responsibility as merchant to check if the payment has been made:


class PaymentsController < ActionController::Base
def show
@payment = Payment.find(params[:id])
status = ideal.capture(@payment.transaction_id)
if status.success?
@payment.update_attributes!(:status => 'paid')
flash[:notice] = "Congratulations, you are now the proud owner of a Dutch windmill!"
end
end
end

Help out!

If you find anything wrong with the gem, we would love to hear from you. Please create an issue with a patch if you run into anything.

History

In 2006 an iDEAL payment library was written in Ruby for a web shop build in Rails for selling mobile phone credits. It was basically a translation of the PHP example given by the iDEAL organization (see iDEAL Advanced Integration Manual PHP). Is was released as the ideal-on-rails library.

In 2007 this code was refactored as a patch for the ActiveMerchant library, this was mainly done by Fingertips for a client project. This patch was never accepted due to the fact it was too different (and maybe too obscure) from the ‘normal’ credit card gateways. After some lobbying an older patch of the code eventually found it’s way into ActiveMerchant.

In 2009 Fingertips forked the ActiveMerchant library and added an iDEAL gateway based on the ActiveMerchant path.

In 2010 this code was extracted and converted into a separate gem by Frank Oxener of Agile Dovadi, so it can be more easily used in combination with the latest version of ActiveMerchant. This library was just an extraction, nothing more and nothing less. There were no fundamental changes between the code from the ideal branch and the code of this gem. Later that year Sernin van de Krol added support for ABNAMRO.

At the end of 2011 Fingertips made yet another fork of the code as the iDeal gem. They ripped out all ActiveMerchant and Rails dependencies. In 2012 ABNAMRO switched their backend and support for this was also added.

About

Modified Library for iDEAL 3.1.1 payments. (change ideal acquirer v3 for abn amro bank)

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - ClusterTV/Ideal: Modified Library for iDEAL 3.1.1 payments. (change ideal acquirer v3 for abn amro bank) · GitHub
Skip to content

Repository files navigation

iDEAL

Library for the iDEAL payment standard.

What is iDEAL?

iDEAL is a set of standards developed to facilitate online payments through the online banking applications that most Dutch banks provide.

If a consumer already has online banking with ABNAMRO, Fortis, ING/Postbank, Rabobank, or SNS Bank, they can make payments using iDEAL in a way that they are already familiar with.

See http://ideal.nl and http://idealdesk.com for more information.

Merchant account

In order to use iDEAL you will need to get an iDEAL merchant account from your bank. Every bank offers ‘complete payment’ services, which can obfuscate the right choice. The payment product that you will want to get, in order to use this gateway class, is a bare bones iDEAL account.

  • ING/Postbank: iDEAL Advanced
  • ABNAMRO: iDEAL Zelfbouw
  • Fortis: ? (Unknown)
  • Rabobank: Rabo iDEAL Professional. (Unverified)
  • SNS Bank: Not yet available

Install

The iDEAL gem does not have any large external dependencies. It depends on Nap (a small HTTP library) and Builder (for building XML files). Because of these minor dependencies it’s suited to use in Ruby projects other than Ruby on Rails.

The easiest way to install is as a gem.

sudo gem install ideal

Or you can add it as a dependency in your Gemfile.

gem 'ideal'

Finally, if you don’t dig any of that gemming that’s so popular nowadays, you can install it as a plugin;

cd vendor/plugins
git clone --depth 1 git://github.com/sieudang2002/Ideal.git ideal

Generate private keys and certificates

Messages between you and the acquirer are all signed in order to prove their authenticity. You will need a certificate for your side, this can be self-issued. If you like spending money, you can buy a certificate from some SSL authority. The certificate of the acquirer is probably hidden somewhere in plain sight in their documentation.

To create a self-signed certificate follow these steps:

  • /usr/bin/openssl genrsa -des3 -out private_key.pem -passout pass:the_passphrase 1024
  • /usr/bin/openssl req -x509 -new -key private_key.pem -passin pass:the_passphrase -days 3650 -out private_certificate.cer

Substitute the_passphrase with your own passphrase. You will need to configure that passphrase later on, so hand on to it.

You will need to upload your public key (certificate) to your iDEAL dashboard. Usually they have a completely independent test and live environment so you can use different certificates for both.

For more information on certificates and encryption see:

Test and activation

Once you’ve uploaded the certificate you need to initiate a number of transactions to complete the activation process. Luckily these transactions are part of the remote test for the gem. It’s still kind of a pain, but here we go!

git clone --depth 1 git://github.com/Fingertips/Ideal.git ideal
cd ideal
bundle install
  • Create the ~/.ideal directory.
  • Copy test/fixtures.yml to ~/.ideal.
  • Fill in your own merchant id, passphrase and the correct locations to your private key and certificates.
ruby test/remote_test.rb

If you’ve succeeded you will see the following:

ruby test/remote_test.rb Loaded suite test/remote_test
Started
...........
Finished in 9.768389 seconds.
11 tests, 33 assertions, 0 failures, 0 errors

If you see test errors, you’re on your own (; You can run the test in debug mode to check what’s sent across the wire.

ruby -d test/remote_test.rb 

Dashboards

ING

ABNAMRO

Compatibility

We run continuous integration tests with Ruby 1.8.7, 1.9.2, and 1.9.3. We’re pretty sure that means it works (see the badge at the top of this file).

Example (Rails)

The following code was written as an example and should not be used without further testing in your application. USE AT YOUROWNPERIL. Remember to have fun (;

Config

Configure the Gateway somewhere. One place could be config/initializers/ideal.rb.

unless Rails.env.production?
Ideal::Gateway.environment = :test
end
# Other banks preloaded are :abnamro and :rabobank
Ideal::Gateway.acquirer = :ing Ideal::Gateway.merchant_id = '00123456789'
# Maybe you'd like another location
ideal_directory = Rails.root + 'config/ideal'
Ideal::Gateway.passphrase = 'the_passphrase'
Ideal::Gateway.private_key_file = ideal_directory + 'private_key.pem'
Ideal::Gateway.private_certificate_file = ideal_directory + 'private_certificate.cer'
Ideal::Gateway.ideal_certificate_file = ideal_directory + 'ideal.cer'

Show a payment form

Show a list of all issuers (banks) to choose from.

class PaymentsController < ActionController::Base
def new
@payment = Payment.new
@issuers = sorted_issuers
end
private
def ideal
Ideal::Gateway.new
end
def sorted_issuers
# NOTE: this does a GET on the bankend, you might want to memoize this
ideal.issuers.list.sort_by do |issuer|
issuer[:name]
end.map do |issuer|
[issuer[:name], issuer[:id]]
end
end
end

<%= form_for(@payment) do |f| %>
<%= f.select(:issuer_id, @issuers) %>
<% end %>

Would result in something like:

ABN AMRO Bank Asr bank Postbank Rabobank Van Lanschot

Set up a payment

First you’ll need to setup a transaction and redirect the consumer there so she can make the payment:

class Payment < ActiveRecord::Base
# Validation code used to validate returning notifications from iDeal
def ideal_entrance_code
Digest::SHA1.hexdigest("#{id}-#{created_at}-#{access_token}")
end
def ideal_attributes
{
# The customer has 30 minutes to complete the iDeal transaction (ISO 8601)
:expiration_period => "PT30M",
:issuer_id => issuer_id,
:return_url => return_url,
:order_id => id.to_s,
:description => description,
:entrance_code => ideal_entrance_code
}
end
end
class PaymentsController < ActionController::Base
def create
payment = Payment.create(params[:payment].merge(
:price_in_cents => 1000, # €10.00 in cents
:return_url => payment_url(payment), # This is where the customer will be returned to
:description => 'A Dutch windmill' # This will end up on the customer's bank statement (max 32 ASCII chars)
))
response = ideal.setup_purchase(payment.price_in_cents, payment.ideal_attributes)
if response.success?
payment.transaction_id = response.transaction_id
payment.status = 'pending'
payment.save(false)
else
Rails.logger.info("Payment initialization failed: [#{response.error_message}] #{response.error_details}")
end
# Redirect the consumer to the issuer’s payment page.
redirect_to response.service_url
end
end

After the consumer is done with the payment she will be redirected to the :return_url. It’s now your responsibility as merchant to check if the payment has been made:


class PaymentsController < ActionController::Base
def show
@payment = Payment.find(params[:id])
status = ideal.capture(@payment.transaction_id)
if status.success?
@payment.update_attributes!(:status => 'paid')
flash[:notice] = "Congratulations, you are now the proud owner of a Dutch windmill!"
end
end
end

Help out!

If you find anything wrong with the gem, we would love to hear from you. Please create an issue with a patch if you run into anything.

History

In 2006 an iDEAL payment library was written in Ruby for a web shop build in Rails for selling mobile phone credits. It was basically a translation of the PHP example given by the iDEAL organization (see iDEAL Advanced Integration Manual PHP). Is was released as the ideal-on-rails library.

In 2007 this code was refactored as a patch for the ActiveMerchant library, this was mainly done by Fingertips for a client project. This patch was never accepted due to the fact it was too different (and maybe too obscure) from the ‘normal’ credit card gateways. After some lobbying an older patch of the code eventually found it’s way into ActiveMerchant.

In 2009 Fingertips forked the ActiveMerchant library and added an iDEAL gateway based on the ActiveMerchant path.

In 2010 this code was extracted and converted into a separate gem by Frank Oxener of Agile Dovadi, so it can be more easily used in combination with the latest version of ActiveMerchant. This library was just an extraction, nothing more and nothing less. There were no fundamental changes between the code from the ideal branch and the code of this gem. Later that year Sernin van de Krol added support for ABNAMRO.

At the end of 2011 Fingertips made yet another fork of the code as the iDeal gem. They ripped out all ActiveMerchant and Rails dependencies. In 2012 ABNAMRO switched their backend and support for this was also added.

About

Modified Library for iDEAL 3.1.1 payments. (change ideal acquirer v3 for abn amro bank)

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - ClusterTV/Ideal: Modified Library for iDEAL 3.1.1 payments. (change ideal acquirer v3 for abn amro bank) · GitHub
Skip to content

Repository files navigation

iDEAL

Library for the iDEAL payment standard.

What is iDEAL?

iDEAL is a set of standards developed to facilitate online payments through the online banking applications that most Dutch banks provide.

If a consumer already has online banking with ABNAMRO, Fortis, ING/Postbank, Rabobank, or SNS Bank, they can make payments using iDEAL in a way that they are already familiar with.

See http://ideal.nl and http://idealdesk.com for more information.

Merchant account

In order to use iDEAL you will need to get an iDEAL merchant account from your bank. Every bank offers ‘complete payment’ services, which can obfuscate the right choice. The payment product that you will want to get, in order to use this gateway class, is a bare bones iDEAL account.

  • ING/Postbank: iDEAL Advanced
  • ABNAMRO: iDEAL Zelfbouw
  • Fortis: ? (Unknown)
  • Rabobank: Rabo iDEAL Professional. (Unverified)
  • SNS Bank: Not yet available

Install

The iDEAL gem does not have any large external dependencies. It depends on Nap (a small HTTP library) and Builder (for building XML files). Because of these minor dependencies it’s suited to use in Ruby projects other than Ruby on Rails.

The easiest way to install is as a gem.

sudo gem install ideal

Or you can add it as a dependency in your Gemfile.

gem 'ideal'

Finally, if you don’t dig any of that gemming that’s so popular nowadays, you can install it as a plugin;

cd vendor/plugins
git clone --depth 1 git://github.com/sieudang2002/Ideal.git ideal

Generate private keys and certificates

Messages between you and the acquirer are all signed in order to prove their authenticity. You will need a certificate for your side, this can be self-issued. If you like spending money, you can buy a certificate from some SSL authority. The certificate of the acquirer is probably hidden somewhere in plain sight in their documentation.

To create a self-signed certificate follow these steps:

  • /usr/bin/openssl genrsa -des3 -out private_key.pem -passout pass:the_passphrase 1024
  • /usr/bin/openssl req -x509 -new -key private_key.pem -passin pass:the_passphrase -days 3650 -out private_certificate.cer

Substitute the_passphrase with your own passphrase. You will need to configure that passphrase later on, so hand on to it.

You will need to upload your public key (certificate) to your iDEAL dashboard. Usually they have a completely independent test and live environment so you can use different certificates for both.

For more information on certificates and encryption see:

Test and activation

Once you’ve uploaded the certificate you need to initiate a number of transactions to complete the activation process. Luckily these transactions are part of the remote test for the gem. It’s still kind of a pain, but here we go!

git clone --depth 1 git://github.com/Fingertips/Ideal.git ideal
cd ideal
bundle install
  • Create the ~/.ideal directory.
  • Copy test/fixtures.yml to ~/.ideal.
  • Fill in your own merchant id, passphrase and the correct locations to your private key and certificates.
ruby test/remote_test.rb

If you’ve succeeded you will see the following:

ruby test/remote_test.rb Loaded suite test/remote_test
Started
...........
Finished in 9.768389 seconds.
11 tests, 33 assertions, 0 failures, 0 errors

If you see test errors, you’re on your own (; You can run the test in debug mode to check what’s sent across the wire.

ruby -d test/remote_test.rb 

Dashboards

ING

ABNAMRO

Compatibility

We run continuous integration tests with Ruby 1.8.7, 1.9.2, and 1.9.3. We’re pretty sure that means it works (see the badge at the top of this file).

Example (Rails)

The following code was written as an example and should not be used without further testing in your application. USE AT YOUROWNPERIL. Remember to have fun (;

Config

Configure the Gateway somewhere. One place could be config/initializers/ideal.rb.

unless Rails.env.production?
Ideal::Gateway.environment = :test
end
# Other banks preloaded are :abnamro and :rabobank
Ideal::Gateway.acquirer = :ing Ideal::Gateway.merchant_id = '00123456789'
# Maybe you'd like another location
ideal_directory = Rails.root + 'config/ideal'
Ideal::Gateway.passphrase = 'the_passphrase'
Ideal::Gateway.private_key_file = ideal_directory + 'private_key.pem'
Ideal::Gateway.private_certificate_file = ideal_directory + 'private_certificate.cer'
Ideal::Gateway.ideal_certificate_file = ideal_directory + 'ideal.cer'

Show a payment form

Show a list of all issuers (banks) to choose from.

class PaymentsController < ActionController::Base
def new
@payment = Payment.new
@issuers = sorted_issuers
end
private
def ideal
Ideal::Gateway.new
end
def sorted_issuers
# NOTE: this does a GET on the bankend, you might want to memoize this
ideal.issuers.list.sort_by do |issuer|
issuer[:name]
end.map do |issuer|
[issuer[:name], issuer[:id]]
end
end
end

<%= form_for(@payment) do |f| %>
<%= f.select(:issuer_id, @issuers) %>
<% end %>

Would result in something like:

ABN AMRO Bank Asr bank Postbank Rabobank Van Lanschot

Set up a payment

First you’ll need to setup a transaction and redirect the consumer there so she can make the payment:

class Payment < ActiveRecord::Base
# Validation code used to validate returning notifications from iDeal
def ideal_entrance_code
Digest::SHA1.hexdigest("#{id}-#{created_at}-#{access_token}")
end
def ideal_attributes
{
# The customer has 30 minutes to complete the iDeal transaction (ISO 8601)
:expiration_period => "PT30M",
:issuer_id => issuer_id,
:return_url => return_url,
:order_id => id.to_s,
:description => description,
:entrance_code => ideal_entrance_code
}
end
end
class PaymentsController < ActionController::Base
def create
payment = Payment.create(params[:payment].merge(
:price_in_cents => 1000, # €10.00 in cents
:return_url => payment_url(payment), # This is where the customer will be returned to
:description => 'A Dutch windmill' # This will end up on the customer's bank statement (max 32 ASCII chars)
))
response = ideal.setup_purchase(payment.price_in_cents, payment.ideal_attributes)
if response.success?
payment.transaction_id = response.transaction_id
payment.status = 'pending'
payment.save(false)
else
Rails.logger.info("Payment initialization failed: [#{response.error_message}] #{response.error_details}")
end
# Redirect the consumer to the issuer’s payment page.
redirect_to response.service_url
end
end

After the consumer is done with the payment she will be redirected to the :return_url. It’s now your responsibility as merchant to check if the payment has been made:


class PaymentsController < ActionController::Base
def show
@payment = Payment.find(params[:id])
status = ideal.capture(@payment.transaction_id)
if status.success?
@payment.update_attributes!(:status => 'paid')
flash[:notice] = "Congratulations, you are now the proud owner of a Dutch windmill!"
end
end
end

Help out!

If you find anything wrong with the gem, we would love to hear from you. Please create an issue with a patch if you run into anything.

History

In 2006 an iDEAL payment library was written in Ruby for a web shop build in Rails for selling mobile phone credits. It was basically a translation of the PHP example given by the iDEAL organization (see iDEAL Advanced Integration Manual PHP). Is was released as the ideal-on-rails library.

In 2007 this code was refactored as a patch for the ActiveMerchant library, this was mainly done by Fingertips for a client project. This patch was never accepted due to the fact it was too different (and maybe too obscure) from the ‘normal’ credit card gateways. After some lobbying an older patch of the code eventually found it’s way into ActiveMerchant.

In 2009 Fingertips forked the ActiveMerchant library and added an iDEAL gateway based on the ActiveMerchant path.

In 2010 this code was extracted and converted into a separate gem by Frank Oxener of Agile Dovadi, so it can be more easily used in combination with the latest version of ActiveMerchant. This library was just an extraction, nothing more and nothing less. There were no fundamental changes between the code from the ideal branch and the code of this gem. Later that year Sernin van de Krol added support for ABNAMRO.

At the end of 2011 Fingertips made yet another fork of the code as the iDeal gem. They ripped out all ActiveMerchant and Rails dependencies. In 2012 ABNAMRO switched their backend and support for this was also added.

About

Modified Library for iDEAL 3.1.1 payments. (change ideal acquirer v3 for abn amro bank)

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - ClusterTV/Ideal: Modified Library for iDEAL 3.1.1 payments. (change ideal acquirer v3 for abn amro bank) · GitHub
Skip to content

Repository files navigation

iDEAL

Library for the iDEAL payment standard.

What is iDEAL?

iDEAL is a set of standards developed to facilitate online payments through the online banking applications that most Dutch banks provide.

If a consumer already has online banking with ABNAMRO, Fortis, ING/Postbank, Rabobank, or SNS Bank, they can make payments using iDEAL in a way that they are already familiar with.

See http://ideal.nl and http://idealdesk.com for more information.

Merchant account

In order to use iDEAL you will need to get an iDEAL merchant account from your bank. Every bank offers ‘complete payment’ services, which can obfuscate the right choice. The payment product that you will want to get, in order to use this gateway class, is a bare bones iDEAL account.

  • ING/Postbank: iDEAL Advanced
  • ABNAMRO: iDEAL Zelfbouw
  • Fortis: ? (Unknown)
  • Rabobank: Rabo iDEAL Professional. (Unverified)
  • SNS Bank: Not yet available

Install

The iDEAL gem does not have any large external dependencies. It depends on Nap (a small HTTP library) and Builder (for building XML files). Because of these minor dependencies it’s suited to use in Ruby projects other than Ruby on Rails.

The easiest way to install is as a gem.

sudo gem install ideal

Or you can add it as a dependency in your Gemfile.

gem 'ideal'

Finally, if you don’t dig any of that gemming that’s so popular nowadays, you can install it as a plugin;

cd vendor/plugins
git clone --depth 1 git://github.com/sieudang2002/Ideal.git ideal

Generate private keys and certificates

Messages between you and the acquirer are all signed in order to prove their authenticity. You will need a certificate for your side, this can be self-issued. If you like spending money, you can buy a certificate from some SSL authority. The certificate of the acquirer is probably hidden somewhere in plain sight in their documentation.

To create a self-signed certificate follow these steps:

  • /usr/bin/openssl genrsa -des3 -out private_key.pem -passout pass:the_passphrase 1024
  • /usr/bin/openssl req -x509 -new -key private_key.pem -passin pass:the_passphrase -days 3650 -out private_certificate.cer

Substitute the_passphrase with your own passphrase. You will need to configure that passphrase later on, so hand on to it.

You will need to upload your public key (certificate) to your iDEAL dashboard. Usually they have a completely independent test and live environment so you can use different certificates for both.

For more information on certificates and encryption see:

Test and activation

Once you’ve uploaded the certificate you need to initiate a number of transactions to complete the activation process. Luckily these transactions are part of the remote test for the gem. It’s still kind of a pain, but here we go!

git clone --depth 1 git://github.com/Fingertips/Ideal.git ideal
cd ideal
bundle install
  • Create the ~/.ideal directory.
  • Copy test/fixtures.yml to ~/.ideal.
  • Fill in your own merchant id, passphrase and the correct locations to your private key and certificates.
ruby test/remote_test.rb

If you’ve succeeded you will see the following:

ruby test/remote_test.rb Loaded suite test/remote_test
Started
...........
Finished in 9.768389 seconds.
11 tests, 33 assertions, 0 failures, 0 errors

If you see test errors, you’re on your own (; You can run the test in debug mode to check what’s sent across the wire.

ruby -d test/remote_test.rb 

Dashboards

ING

ABNAMRO

Compatibility

We run continuous integration tests with Ruby 1.8.7, 1.9.2, and 1.9.3. We’re pretty sure that means it works (see the badge at the top of this file).

Example (Rails)

The following code was written as an example and should not be used without further testing in your application. USE AT YOUROWNPERIL. Remember to have fun (;

Config

Configure the Gateway somewhere. One place could be config/initializers/ideal.rb.

unless Rails.env.production?
Ideal::Gateway.environment = :test
end
# Other banks preloaded are :abnamro and :rabobank
Ideal::Gateway.acquirer = :ing Ideal::Gateway.merchant_id = '00123456789'
# Maybe you'd like another location
ideal_directory = Rails.root + 'config/ideal'
Ideal::Gateway.passphrase = 'the_passphrase'
Ideal::Gateway.private_key_file = ideal_directory + 'private_key.pem'
Ideal::Gateway.private_certificate_file = ideal_directory + 'private_certificate.cer'
Ideal::Gateway.ideal_certificate_file = ideal_directory + 'ideal.cer'

Show a payment form

Show a list of all issuers (banks) to choose from.

class PaymentsController < ActionController::Base
def new
@payment = Payment.new
@issuers = sorted_issuers
end
private
def ideal
Ideal::Gateway.new
end
def sorted_issuers
# NOTE: this does a GET on the bankend, you might want to memoize this
ideal.issuers.list.sort_by do |issuer|
issuer[:name]
end.map do |issuer|
[issuer[:name], issuer[:id]]
end
end
end

<%= form_for(@payment) do |f| %>
<%= f.select(:issuer_id, @issuers) %>
<% end %>

Would result in something like:

ABN AMRO Bank Asr bank Postbank Rabobank Van Lanschot

Set up a payment

First you’ll need to setup a transaction and redirect the consumer there so she can make the payment:

class Payment < ActiveRecord::Base
# Validation code used to validate returning notifications from iDeal
def ideal_entrance_code
Digest::SHA1.hexdigest("#{id}-#{created_at}-#{access_token}")
end
def ideal_attributes
{
# The customer has 30 minutes to complete the iDeal transaction (ISO 8601)
:expiration_period => "PT30M",
:issuer_id => issuer_id,
:return_url => return_url,
:order_id => id.to_s,
:description => description,
:entrance_code => ideal_entrance_code
}
end
end
class PaymentsController < ActionController::Base
def create
payment = Payment.create(params[:payment].merge(
:price_in_cents => 1000, # €10.00 in cents
:return_url => payment_url(payment), # This is where the customer will be returned to
:description => 'A Dutch windmill' # This will end up on the customer's bank statement (max 32 ASCII chars)
))
response = ideal.setup_purchase(payment.price_in_cents, payment.ideal_attributes)
if response.success?
payment.transaction_id = response.transaction_id
payment.status = 'pending'
payment.save(false)
else
Rails.logger.info("Payment initialization failed: [#{response.error_message}] #{response.error_details}")
end
# Redirect the consumer to the issuer’s payment page.
redirect_to response.service_url
end
end

After the consumer is done with the payment she will be redirected to the :return_url. It’s now your responsibility as merchant to check if the payment has been made:


class PaymentsController < ActionController::Base
def show
@payment = Payment.find(params[:id])
status = ideal.capture(@payment.transaction_id)
if status.success?
@payment.update_attributes!(:status => 'paid')
flash[:notice] = "Congratulations, you are now the proud owner of a Dutch windmill!"
end
end
end

Help out!

If you find anything wrong with the gem, we would love to hear from you. Please create an issue with a patch if you run into anything.

History

In 2006 an iDEAL payment library was written in Ruby for a web shop build in Rails for selling mobile phone credits. It was basically a translation of the PHP example given by the iDEAL organization (see iDEAL Advanced Integration Manual PHP). Is was released as the ideal-on-rails library.

In 2007 this code was refactored as a patch for the ActiveMerchant library, this was mainly done by Fingertips for a client project. This patch was never accepted due to the fact it was too different (and maybe too obscure) from the ‘normal’ credit card gateways. After some lobbying an older patch of the code eventually found it’s way into ActiveMerchant.

In 2009 Fingertips forked the ActiveMerchant library and added an iDEAL gateway based on the ActiveMerchant path.

In 2010 this code was extracted and converted into a separate gem by Frank Oxener of Agile Dovadi, so it can be more easily used in combination with the latest version of ActiveMerchant. This library was just an extraction, nothing more and nothing less. There were no fundamental changes between the code from the ideal branch and the code of this gem. Later that year Sernin van de Krol added support for ABNAMRO.

At the end of 2011 Fingertips made yet another fork of the code as the iDeal gem. They ripped out all ActiveMerchant and Rails dependencies. In 2012 ABNAMRO switched their backend and support for this was also added.

About

Modified Library for iDEAL 3.1.1 payments. (change ideal acquirer v3 for abn amro bank)

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - ClusterTV/Ideal: Modified Library for iDEAL 3.1.1 payments. (change ideal acquirer v3 for abn amro bank) · GitHub
Skip to content

Repository files navigation

iDEAL

Library for the iDEAL payment standard.

What is iDEAL?

iDEAL is a set of standards developed to facilitate online payments through the online banking applications that most Dutch banks provide.

If a consumer already has online banking with ABNAMRO, Fortis, ING/Postbank, Rabobank, or SNS Bank, they can make payments using iDEAL in a way that they are already familiar with.

See http://ideal.nl and http://idealdesk.com for more information.

Merchant account

In order to use iDEAL you will need to get an iDEAL merchant account from your bank. Every bank offers ‘complete payment’ services, which can obfuscate the right choice. The payment product that you will want to get, in order to use this gateway class, is a bare bones iDEAL account.

  • ING/Postbank: iDEAL Advanced
  • ABNAMRO: iDEAL Zelfbouw
  • Fortis: ? (Unknown)
  • Rabobank: Rabo iDEAL Professional. (Unverified)
  • SNS Bank: Not yet available

Install

The iDEAL gem does not have any large external dependencies. It depends on Nap (a small HTTP library) and Builder (for building XML files). Because of these minor dependencies it’s suited to use in Ruby projects other than Ruby on Rails.

The easiest way to install is as a gem.

sudo gem install ideal

Or you can add it as a dependency in your Gemfile.

gem 'ideal'

Finally, if you don’t dig any of that gemming that’s so popular nowadays, you can install it as a plugin;

cd vendor/plugins
git clone --depth 1 git://github.com/sieudang2002/Ideal.git ideal

Generate private keys and certificates

Messages between you and the acquirer are all signed in order to prove their authenticity. You will need a certificate for your side, this can be self-issued. If you like spending money, you can buy a certificate from some SSL authority. The certificate of the acquirer is probably hidden somewhere in plain sight in their documentation.

To create a self-signed certificate follow these steps:

  • /usr/bin/openssl genrsa -des3 -out private_key.pem -passout pass:the_passphrase 1024
  • /usr/bin/openssl req -x509 -new -key private_key.pem -passin pass:the_passphrase -days 3650 -out private_certificate.cer

Substitute the_passphrase with your own passphrase. You will need to configure that passphrase later on, so hand on to it.

You will need to upload your public key (certificate) to your iDEAL dashboard. Usually they have a completely independent test and live environment so you can use different certificates for both.

For more information on certificates and encryption see:

Test and activation

Once you’ve uploaded the certificate you need to initiate a number of transactions to complete the activation process. Luckily these transactions are part of the remote test for the gem. It’s still kind of a pain, but here we go!

git clone --depth 1 git://github.com/Fingertips/Ideal.git ideal
cd ideal
bundle install
  • Create the ~/.ideal directory.
  • Copy test/fixtures.yml to ~/.ideal.
  • Fill in your own merchant id, passphrase and the correct locations to your private key and certificates.
ruby test/remote_test.rb

If you’ve succeeded you will see the following:

ruby test/remote_test.rb Loaded suite test/remote_test
Started
...........
Finished in 9.768389 seconds.
11 tests, 33 assertions, 0 failures, 0 errors

If you see test errors, you’re on your own (; You can run the test in debug mode to check what’s sent across the wire.

ruby -d test/remote_test.rb 

Dashboards

ING

ABNAMRO

Compatibility

We run continuous integration tests with Ruby 1.8.7, 1.9.2, and 1.9.3. We’re pretty sure that means it works (see the badge at the top of this file).

Example (Rails)

The following code was written as an example and should not be used without further testing in your application. USE AT YOUROWNPERIL. Remember to have fun (;

Config

Configure the Gateway somewhere. One place could be config/initializers/ideal.rb.

unless Rails.env.production?
Ideal::Gateway.environment = :test
end
# Other banks preloaded are :abnamro and :rabobank
Ideal::Gateway.acquirer = :ing Ideal::Gateway.merchant_id = '00123456789'
# Maybe you'd like another location
ideal_directory = Rails.root + 'config/ideal'
Ideal::Gateway.passphrase = 'the_passphrase'
Ideal::Gateway.private_key_file = ideal_directory + 'private_key.pem'
Ideal::Gateway.private_certificate_file = ideal_directory + 'private_certificate.cer'
Ideal::Gateway.ideal_certificate_file = ideal_directory + 'ideal.cer'

Show a payment form

Show a list of all issuers (banks) to choose from.

class PaymentsController < ActionController::Base
def new
@payment = Payment.new
@issuers = sorted_issuers
end
private
def ideal
Ideal::Gateway.new
end
def sorted_issuers
# NOTE: this does a GET on the bankend, you might want to memoize this
ideal.issuers.list.sort_by do |issuer|
issuer[:name]
end.map do |issuer|
[issuer[:name], issuer[:id]]
end
end
end

<%= form_for(@payment) do |f| %>
<%= f.select(:issuer_id, @issuers) %>
<% end %>

Would result in something like:

ABN AMRO Bank Asr bank Postbank Rabobank Van Lanschot

Set up a payment

First you’ll need to setup a transaction and redirect the consumer there so she can make the payment:

class Payment < ActiveRecord::Base
# Validation code used to validate returning notifications from iDeal
def ideal_entrance_code
Digest::SHA1.hexdigest("#{id}-#{created_at}-#{access_token}")
end
def ideal_attributes
{
# The customer has 30 minutes to complete the iDeal transaction (ISO 8601)
:expiration_period => "PT30M",
:issuer_id => issuer_id,
:return_url => return_url,
:order_id => id.to_s,
:description => description,
:entrance_code => ideal_entrance_code
}
end
end
class PaymentsController < ActionController::Base
def create
payment = Payment.create(params[:payment].merge(
:price_in_cents => 1000, # €10.00 in cents
:return_url => payment_url(payment), # This is where the customer will be returned to
:description => 'A Dutch windmill' # This will end up on the customer's bank statement (max 32 ASCII chars)
))
response = ideal.setup_purchase(payment.price_in_cents, payment.ideal_attributes)
if response.success?
payment.transaction_id = response.transaction_id
payment.status = 'pending'
payment.save(false)
else
Rails.logger.info("Payment initialization failed: [#{response.error_message}] #{response.error_details}")
end
# Redirect the consumer to the issuer’s payment page.
redirect_to response.service_url
end
end

After the consumer is done with the payment she will be redirected to the :return_url. It’s now your responsibility as merchant to check if the payment has been made:


class PaymentsController < ActionController::Base
def show
@payment = Payment.find(params[:id])
status = ideal.capture(@payment.transaction_id)
if status.success?
@payment.update_attributes!(:status => 'paid')
flash[:notice] = "Congratulations, you are now the proud owner of a Dutch windmill!"
end
end
end

Help out!

If you find anything wrong with the gem, we would love to hear from you. Please create an issue with a patch if you run into anything.

History

In 2006 an iDEAL payment library was written in Ruby for a web shop build in Rails for selling mobile phone credits. It was basically a translation of the PHP example given by the iDEAL organization (see iDEAL Advanced Integration Manual PHP). Is was released as the ideal-on-rails library.

In 2007 this code was refactored as a patch for the ActiveMerchant library, this was mainly done by Fingertips for a client project. This patch was never accepted due to the fact it was too different (and maybe too obscure) from the ‘normal’ credit card gateways. After some lobbying an older patch of the code eventually found it’s way into ActiveMerchant.

In 2009 Fingertips forked the ActiveMerchant library and added an iDEAL gateway based on the ActiveMerchant path.

In 2010 this code was extracted and converted into a separate gem by Frank Oxener of Agile Dovadi, so it can be more easily used in combination with the latest version of ActiveMerchant. This library was just an extraction, nothing more and nothing less. There were no fundamental changes between the code from the ideal branch and the code of this gem. Later that year Sernin van de Krol added support for ABNAMRO.

At the end of 2011 Fingertips made yet another fork of the code as the iDeal gem. They ripped out all ActiveMerchant and Rails dependencies. In 2012 ABNAMRO switched their backend and support for this was also added.

About

Modified Library for iDEAL 3.1.1 payments. (change ideal acquirer v3 for abn amro bank)

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - ClusterTV/Ideal: Modified Library for iDEAL 3.1.1 payments. (change ideal acquirer v3 for abn amro bank) · GitHub
Skip to content

Repository files navigation

iDEAL

Library for the iDEAL payment standard.

What is iDEAL?

iDEAL is a set of standards developed to facilitate online payments through the online banking applications that most Dutch banks provide.

If a consumer already has online banking with ABNAMRO, Fortis, ING/Postbank, Rabobank, or SNS Bank, they can make payments using iDEAL in a way that they are already familiar with.

See http://ideal.nl and http://idealdesk.com for more information.

Merchant account

In order to use iDEAL you will need to get an iDEAL merchant account from your bank. Every bank offers ‘complete payment’ services, which can obfuscate the right choice. The payment product that you will want to get, in order to use this gateway class, is a bare bones iDEAL account.

  • ING/Postbank: iDEAL Advanced
  • ABNAMRO: iDEAL Zelfbouw
  • Fortis: ? (Unknown)
  • Rabobank: Rabo iDEAL Professional. (Unverified)
  • SNS Bank: Not yet available

Install

The iDEAL gem does not have any large external dependencies. It depends on Nap (a small HTTP library) and Builder (for building XML files). Because of these minor dependencies it’s suited to use in Ruby projects other than Ruby on Rails.

The easiest way to install is as a gem.

sudo gem install ideal

Or you can add it as a dependency in your Gemfile.

gem 'ideal'

Finally, if you don’t dig any of that gemming that’s so popular nowadays, you can install it as a plugin;

cd vendor/plugins
git clone --depth 1 git://github.com/sieudang2002/Ideal.git ideal

Generate private keys and certificates

Messages between you and the acquirer are all signed in order to prove their authenticity. You will need a certificate for your side, this can be self-issued. If you like spending money, you can buy a certificate from some SSL authority. The certificate of the acquirer is probably hidden somewhere in plain sight in their documentation.

To create a self-signed certificate follow these steps:

  • /usr/bin/openssl genrsa -des3 -out private_key.pem -passout pass:the_passphrase 1024
  • /usr/bin/openssl req -x509 -new -key private_key.pem -passin pass:the_passphrase -days 3650 -out private_certificate.cer

Substitute the_passphrase with your own passphrase. You will need to configure that passphrase later on, so hand on to it.

You will need to upload your public key (certificate) to your iDEAL dashboard. Usually they have a completely independent test and live environment so you can use different certificates for both.

For more information on certificates and encryption see:

Test and activation

Once you’ve uploaded the certificate you need to initiate a number of transactions to complete the activation process. Luckily these transactions are part of the remote test for the gem. It’s still kind of a pain, but here we go!

git clone --depth 1 git://github.com/Fingertips/Ideal.git ideal
cd ideal
bundle install
  • Create the ~/.ideal directory.
  • Copy test/fixtures.yml to ~/.ideal.
  • Fill in your own merchant id, passphrase and the correct locations to your private key and certificates.
ruby test/remote_test.rb

If you’ve succeeded you will see the following:

ruby test/remote_test.rb Loaded suite test/remote_test
Started
...........
Finished in 9.768389 seconds.
11 tests, 33 assertions, 0 failures, 0 errors

If you see test errors, you’re on your own (; You can run the test in debug mode to check what’s sent across the wire.

ruby -d test/remote_test.rb 

Dashboards

ING

ABNAMRO

Compatibility

We run continuous integration tests with Ruby 1.8.7, 1.9.2, and 1.9.3. We’re pretty sure that means it works (see the badge at the top of this file).

Example (Rails)

The following code was written as an example and should not be used without further testing in your application. USE AT YOUROWNPERIL. Remember to have fun (;

Config

Configure the Gateway somewhere. One place could be config/initializers/ideal.rb.

unless Rails.env.production?
Ideal::Gateway.environment = :test
end
# Other banks preloaded are :abnamro and :rabobank
Ideal::Gateway.acquirer = :ing Ideal::Gateway.merchant_id = '00123456789'
# Maybe you'd like another location
ideal_directory = Rails.root + 'config/ideal'
Ideal::Gateway.passphrase = 'the_passphrase'
Ideal::Gateway.private_key_file = ideal_directory + 'private_key.pem'
Ideal::Gateway.private_certificate_file = ideal_directory + 'private_certificate.cer'
Ideal::Gateway.ideal_certificate_file = ideal_directory + 'ideal.cer'

Show a payment form

Show a list of all issuers (banks) to choose from.

class PaymentsController < ActionController::Base
def new
@payment = Payment.new
@issuers = sorted_issuers
end
private
def ideal
Ideal::Gateway.new
end
def sorted_issuers
# NOTE: this does a GET on the bankend, you might want to memoize this
ideal.issuers.list.sort_by do |issuer|
issuer[:name]
end.map do |issuer|
[issuer[:name], issuer[:id]]
end
end
end

<%= form_for(@payment) do |f| %>
<%= f.select(:issuer_id, @issuers) %>
<% end %>

Would result in something like:

ABN AMRO Bank Asr bank Postbank Rabobank Van Lanschot

Set up a payment

First you’ll need to setup a transaction and redirect the consumer there so she can make the payment:

class Payment < ActiveRecord::Base
# Validation code used to validate returning notifications from iDeal
def ideal_entrance_code
Digest::SHA1.hexdigest("#{id}-#{created_at}-#{access_token}")
end
def ideal_attributes
{
# The customer has 30 minutes to complete the iDeal transaction (ISO 8601)
:expiration_period => "PT30M",
:issuer_id => issuer_id,
:return_url => return_url,
:order_id => id.to_s,
:description => description,
:entrance_code => ideal_entrance_code
}
end
end
class PaymentsController < ActionController::Base
def create
payment = Payment.create(params[:payment].merge(
:price_in_cents => 1000, # €10.00 in cents
:return_url => payment_url(payment), # This is where the customer will be returned to
:description => 'A Dutch windmill' # This will end up on the customer's bank statement (max 32 ASCII chars)
))
response = ideal.setup_purchase(payment.price_in_cents, payment.ideal_attributes)
if response.success?
payment.transaction_id = response.transaction_id
payment.status = 'pending'
payment.save(false)
else
Rails.logger.info("Payment initialization failed: [#{response.error_message}] #{response.error_details}")
end
# Redirect the consumer to the issuer’s payment page.
redirect_to response.service_url
end
end

After the consumer is done with the payment she will be redirected to the :return_url. It’s now your responsibility as merchant to check if the payment has been made:


class PaymentsController < ActionController::Base
def show
@payment = Payment.find(params[:id])
status = ideal.capture(@payment.transaction_id)
if status.success?
@payment.update_attributes!(:status => 'paid')
flash[:notice] = "Congratulations, you are now the proud owner of a Dutch windmill!"
end
end
end

Help out!

If you find anything wrong with the gem, we would love to hear from you. Please create an issue with a patch if you run into anything.

History

In 2006 an iDEAL payment library was written in Ruby for a web shop build in Rails for selling mobile phone credits. It was basically a translation of the PHP example given by the iDEAL organization (see iDEAL Advanced Integration Manual PHP). Is was released as the ideal-on-rails library.

In 2007 this code was refactored as a patch for the ActiveMerchant library, this was mainly done by Fingertips for a client project. This patch was never accepted due to the fact it was too different (and maybe too obscure) from the ‘normal’ credit card gateways. After some lobbying an older patch of the code eventually found it’s way into ActiveMerchant.

In 2009 Fingertips forked the ActiveMerchant library and added an iDEAL gateway based on the ActiveMerchant path.

In 2010 this code was extracted and converted into a separate gem by Frank Oxener of Agile Dovadi, so it can be more easily used in combination with the latest version of ActiveMerchant. This library was just an extraction, nothing more and nothing less. There were no fundamental changes between the code from the ideal branch and the code of this gem. Later that year Sernin van de Krol added support for ABNAMRO.

At the end of 2011 Fingertips made yet another fork of the code as the iDeal gem. They ripped out all ActiveMerchant and Rails dependencies. In 2012 ABNAMRO switched their backend and support for this was also added.

About

Modified Library for iDEAL 3.1.1 payments. (change ideal acquirer v3 for abn amro bank)

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages