Ruby implementation of the Mollie iDEAL API
Ruby
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
config
lib
remote
test
.gitignore
.kick
.travis.yml
Gemfile
Gemfile.lock
LICENSE
README.md
Rakefile
TODO
supreme.gemspec

README.md

A Ruby client that allows you to do iDEAL transactions through the Mollie iDEAL API.

Travis-CI badge

Install

$ gem install supreme

Payment flow

You start by setting the mode of the library to either :test or :live. The default is :test, so for tests you don't have to change anything.

Supreme.mode = :live

You can choose to set the partner (client) id globally so you don't have to include it with every call.

Supreme.partner_id = '000000'

Then you get a list of supported banks. Note that this list can change at any time, so be conservative with caching these values.

Supreme.api.bank_list #=> [["ABN AMRO", "0031"], ["Postbank", "0721"], ["Rabobank", "0021"]]

When the user has selected a bank, you start a transaction.

transaction = Supreme.api.fetch(
  :bank_id => '0031',
  :amount => 1299,
  :description => 'A fluffy bunny',
  :return_url => 'http://example.com/payments/as45re/thanks',
  :report_url => 'http://example.com/payments/as45re'
)
transaction.transaction_id #=> '482d599bbcc7795727650330ad65fe9b'

Keep the transaction_id around for reference and redirect the customer to the indicated URL.

Location: #{transaction.url}

Once the transaction is done you will receive a GET on the report_url with a transaction_id parameter to indicate that the transaction has changed state. You will need to check the status of the transaction.

status = Supreme.api.check(
  :transaction_id => '482d599bbcc7795727650330ad65fe9b'
)

# Note that the status will only be paid? after the first check, for each consecutive call
# paid? will be false regardless of the outcome of the transaction.
#
# We use success? and make sure we don't deliver the product more than once.
if status.success?
  # Update the local status of the payment
end

When the customer returns to your site it returns with its transaction_id attached to your provided URL. You can present a page depending on the status of the payment.

Errors

When an error occurs you get a Supreme::Error object instead of the response object you expected.

status = Supreme.api.check(
  :transaction_id => '482d599bbcc7795727650330ad65fe9b'
)
if status.error?
  log("#{status.message} (#{status.code})")
end