API for Amazon's Flexible Payments Service
Ruby
Latest commit c161adb Mar 30, 2015 @dandrabik dandrabik Merge pull request #5 from kickstarter/upgrade_rest_client
Upgrade rest client / Use bundler MiniTest

README.rdoc

AmazonFlexPay

Library for Amazon's Flexible Payment Service.

INITIALIZE

Initialize the gem, probably in config/initializers/amazon_flex_pay.rb (for Rails):

AmazonFlexPay.access_key = 'your access key'
AmazonFlexPay.secret_key = 'your secret key'
AmazonFlexPay.go_live! if Rails.env.production?

CALL

AmazonFlexPay::Pipelines

Start here. You'll need tokens for API calls. These are generated by users via parameterized pipelines.

Example

Construct a single-use pipeline for the user. This is where the user will agree to pay a certain amount to a specific recipient (maybe you?).

redirect_to AmazonFlexPay.single_use_pipeline(
  'mypipeline3292',
  'http://example.com/return',
  :recipient_token => 'RTOKEN',
  :transaction_amount => '12.99'
)

AmazonFlexPay::API

With tokens, you can make API calls. Note that results are asynchronous via IPNs. Payment and Refund examples are below. You can see all available API methods here.

Payment Example

Once you have a sender token, you can attempt to collect.

begin
  response = AmazonFlexPay.pay('12.99', 'USD', 'senderToken123')
  flash[:notice] = "Thanks! Your payment is processing."
rescue AmazonFlexPay::API::Error => e
  flash[:error] = "Sorry, something went wrong."
  e.errors.each do |error|
    # notify yourself about error.code and error.message
  end
end

redirect_to product_path

Refund Example

If you would like to give your last order a $10 refund, you can call the refund method like this:

order = Order.last

AmazonFlexPay.refund(
  order.transaction_id,
  order.id,
  caller_description: 'Friends and family discount.',
  refund_amount: { value: 10, currency_code: 'USD' },
)

Note: In this example, we are using the order id as the caller reference. You can pass any reference that you like. Also, the 'caller_description' and 'refund_amount' options are not required. The default refund amount is the original transaction amount.

Copyright © 2013 Kickstarter, released under the MIT license.