Does not try to be smart, stays close to the documentation while adhering to Ruby conventions.
gem install adyen_client
In your Gemfile:
gem "adyen_client"
Require and configure the client:
require "adyen_client"
# Block style
AdyenClient.configure do |c|
c.environment = :test
c.username = "[email protected]"
c.password = "correctbatteryhorsestaple"
c.cse_public_key = "10001|..."
c.default_merchant_account = "FooBar123"
c.default_currency = "EUR"
end
# Hash style works too, string or symbol keys
AdyenClient.configure(environment: :test, username: "[email protected]", ...)
# That comes in handy to configure the client from a YAML file
AdyenClient.configure(YAML.load_file(Rails.root.join("config", "adyen.yml"))[Rails.env.to_s])
# You can override all default_* options for each instance of a client
client = AdyenClient.new(merchant_account: "FooBarSubMerchant123")
eur_client = AdyenClient.new(currency: "EUR")
client = AdyenClient.new
response = client.authorise(amount: 100, encrypted_card: "adyenjs_0_1_15$OlmG...")
if response.authorised?
puts "( ノ ゚ー゚)ノ"
else
puts "(-‸ლ)"
end
user = User.create(email: "[email protected]", last_ip: request.remote_ip)
client = AdyenClient.new
response = client.create_recurring_contract(encrypted_card: "adyenjs_0_1_15$OlmG...", shopper: {
reference: user.id,
email: user.email,
ip: user.last_ip # optional but recommended
})
if response.authorised?
# now we know the users card is valid
else
# something is wrong with the users card or we got an error
end
Later, we want to charge the user based on that contract.
user = User.find_by_email("[email protected]")
client = AdyenClient.new
response = client.authorise_recurring_payment(amount: 1699, shopper: { reference: user.id })
if response.authorised?
# we know the payment is on its way
else
# something is wrong, maybe we got an error
end
All publicly usable methods and classes are documented here.
This library does not try to be too smart, it simply provides a layer of abstraction on top of the Adyen JSON API.
Also the default AdyenClient::Response
class basically just wraps the JSON response.
The only work it does is converting camelCase
keys to sneak_case
, removing unnecessary object nestings and providing you with a convenience authorised?
method.
If you want a more sophisticated response class, you can easily hook up your own.
The only method you need to provide is ::parse
. It will receive one argument, the HTTParty::Response
for the given request.
class MyAdyenResponse
def self.parse(http_response)
# ... your fancy code
end
end
Hook it up by initialising the client like this: AdyenClient.new(response_class: MyAdyenResponse)
.
Similar, if you want nothing else than the bare HTTParty::Response
, initialise the client with: response_class: nil
.
I am very happy to receive pull requests or bug reports for problems with the library. Please make sure you are only reporting an actual issue with the library itself, I cannot help with your payment flow or advise you on anything related to the Adyen API.
I am not associated with Adyen in any way.
If you have problems with your adyen account or your payment flow, please contact the very helpful Adyen support using support ät adyen.com
.
Please make yourself comfortable with the Adyen documentation on how you want to setup your payment flow.
The MIT License (MIT), Copyright (c) 2015 Lukas Rieder
See LICENSE
.