Ruby wrapper for the Paymill API
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
spec
.gitignore
.rspec
.travis.yml
Gemfile
Gemfile.lock
LICENSE
README.md
Rakefile
paymill.gemspec

README.md

Paymill Build Status

This is a Ruby wrapper for Paymill's API.

Documentation

We use RubyDoc for documentation.

The documentation of the current release can be found here: http://rubydoc.info/gems/paymill/frames/index

Usage

First, you've to install the gem

gem install paymill

and require it

require "paymill"

Then you have to set your API key:

Paymill.api_key = "your-api-key"

Configuration

You can also set the API version, base endpoint and port:

Paymill.api_version = "v2"
Paymill.api_base    = "0.0.0.0"
Paymill.api_port    = 3000

Logging

Out of the box paymill-ruby will log all requests and responses to STDOUT, you can use any logger you want, though:

Paymill.logger = Logger.new(STDERR)

Clients

Paymill documentation on clients

Creating a new client:

Paymill::Client.create(email: "stefan.sprenger@dkd.de", description: "He is a Ruby guy.")

Or find an existing client:

Paymill::Client.find("client_88a388d9dd48f86c3136")

Updating an existing client only works on an instance:

client = Paymill::Client.find("client_88a388d9dd48f86c3136")
client.update_attributes(email: "carl.client@example.com")

Deleting a client:

Paymill::Client.delete("client_88a388d9dd48f86c3136")

For retrieving a collection of all clients you might use the all operation:

Paymill::Client.all

To sort and filter collection lists of objects, use the all method with an options hash. For example to find the most recent transactions belonging to a client you can use the following code:

Paymill::Transaction.all(client: "<client_id>", order: "created_at_desc")

Please note that Transactions and Payments cannot be updated.

Payments

Paymill documentation on payments

Creating a new credit card payment:

Paymill::Payment.create(token: "098f6bcd4621d373cade4e832627b4f6")

Creating a new debit card payment:

Paymill::Payment.create(type: "debit", code: "12345678", account: "1234512345", holder: "Max Mustermann")

Or finding an existing payment:

Paymill::Payment.find("pay_3af44644dd6d25c820a8")

Deleting a payment:

Paymill::Payment.delete("pay_3af44644dd6d25c820a8")

For retrieving a collection of all payments you might use the all operation:

Paymill::Payment.all

Transactions

Paymill documentation on transactions

A transaction can be executed as following

params = {
    :amount => 2000, # cents. Must be an integer
    :currency => 'USD', # iso
    :client => 'client_123', # client id. Use 'Paymill::Client'
    :payment => 'payment_123', # payment id. Use 'Paymill::Payment'
    :description => "some comment if needed"
}
Paymill::Transaction.create(params)

Offers

Paymill documentation on offers

Creating a new offer:

Paymill::Offer.create(name: "Monthly", interval: "1 month", amount: 1000, currency: "GBP", trial_period_days: 0)

Updating an offer (works on an Offer instance and only the name can be changed):

offer = Paymill::Offer.find("offer_08064e30032afa3aa046")
offer.update_attributes(name: "New name")

Deleting an offer:

Paymill::Offer.delete('offer_08064e30032afa3aa046')

Retrieving an offer:

Paymill::Offer.find("offer_753480df39aeb114f2f3")

Retrieving all offers:

Paymill::Offer.all

Webhooks

Paymill documentation on webhooks

Creating a new webhook:

Paymill::Webhook.create(email: "email@bob.com", event_types: ["transaction.succeeded", "subscription.succeeded"])

Updating a webhook works on an instance (url/email and the event types can be changed):

hook = Paymill::Webhook.find("hook_940143bcdc0c40e7756f")
hook.update_attributes(email: "bob@email.com")

Deleting a webhook:

Paymill::Webhook.delete("hook_940143bcdc0c40e7756f")

Retrieving a webhook:

hook = Paymill::Webhook.find("hook_940143bcdc0c40e7756f")

Retrieving all webhooks:

Paymill::Webhook.all

Refunds

Paymill documentation on refunds

Creating a new refund:

Paymill::Refund.create(id: "tran_023d3b5769321c649435", amount: 4200)

Retrieving a refund:

refund = Paymill::Refund.find("refund_87bc404a95d5ce616049")

Retrieving all refunds:

Paymill::Refund.all

Requirements

This gem requires Ruby 1.9 and faces version 2 of Paymill's API.

Bugs

Please report bugs at http://github.com/dkd/paymill-ruby/issues.

Note on Patches/Pull Requests

  • Fork the project from http://github.com/dkd/paymill-ruby.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.

Copyright

Copyright (c) 2012-2014 dkd Internet Service GmbH, Stefan Sprenger. See LICENSE for details.