Skip to content

cchandler/flexpay

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Flexpay - Just-above-the-metal API for Amazon FPS & Simple Pay

A (hopefully) simple implementation of Amazon’s FPS and Simple Pay API for dealing with pipelines, FPS requests, and a few simple pay features.

At this stage this should be considered beta though it’s going to production in the next week or so. If you want more information on how to use stuff take a look at the specs.

Amazon Simple Pay Advanced Guide: docs.amazonwebservices.com/AmazonSimplePay/2008-09-17/ASPAdvancedUserGuide/

Amazon FPS Advanced Guide (includes Cobranding): docs.amazonwebservices.com/AmazonFPS/2008-09-17/FPSAdvancedGuide/

Getting an API object

require 'flexpay'
api = Flexpay::API.new(:access_key => ACCESS_KEY, :secret_key => SECRET_KEY)

Recurring payments that are NOT subscriptions

api = Flexpay::API.new(:access_key => FPS_ACCESS_KEY, :secret_key => FPS_SECRET_KEY, :sandbox => true)
recurring_pipeline = api.get_recurring_pipeline
recurring_pipeline.callerReference = Time.now.to_i.to_s # Keep this somewhere
recurring_pipeline.transactionAmount = order.amount
recurring_pipeline.recurringPeriod = "#{order.interval_in_months} Month"
recurring_pipeline.returnURL = "http://yoursite.com/wherever/"

redirect_to recurring_pipeline.generate_url

Verifying Signatures from Amazon

require 'cgi'
api = Flexpay::API.new(:access_key => FPS_ACCESS_KEY, :secret_key => FPS_SECRET_KEY, :sandbox => true)

url = request.url.split('?')[0]
query = request.query_string

verify_signature = api.get_verify_signature
verify_signature.UrlEndPoint = url
verify_signature.HttpParameters = CGI::escape(query)

result = verify_signature.go!(false)

if result[:VerificationStatus] == "Success"
  #Victory
end

Actually getting paid

api = Flexpay::API.new(:access_key => FPS_ACCESS_KEY, :secret_key => FPS_SECRET_KEY, :sandbox => true)

pay = api.get_pay
pay.CallerReference = Time.now.to_i.to_s
pay.SenderTokenId = order.tokenID
pay.TransactionAmount_Value = order.amount
pay.TransactionAmount_CurrencyCode = "USD"
pay.AWSAccessKeyId = FPS_ACCESS_KEY
pay.Timestamp = Time.now.utc.strftime("%Y-%m-%dT%H:%M:%SZ")
pay.Version = "2008-09-17"

pay_response = pay.go!
# pay_response is a simple hash containing :TransactionId and :TransactionStatus

Handling subscriptions

subscription = Flexpay::API.new(:access_key => ACCESS_KEY, :secret_key => SECRET_KEY).get_subscription_button

subscription.accessKey = ACCESS_KEY
subscription.amount = "USD 10"
subscription.description = "The thing your subscribing too"
subscription.recurringFrequency = "1 month"
subscription.returnURL = "http://localhost:3000"

redirect_to subscription.generate_url

For Developers

I tried to make this pretty simple and maintainable, hence the no-frills approach. All the Amazon APIs are internally namespaced using Amazon’s classifications and by their published version numbers so newer/older versions of the API can easily be added side-by-side. You can look at any of the current ones to see how it’s done since the same structure is used everywhere.

Updates are happily accepted with tests :-).

Meta

Written by Chris Chandler(chrischandler.name) of Flatterline(flatterline.com)

Released under the MIT License: www.opensource.org/licenses/mit-license.php

Main page: github.com/cchandler/flexpay

Issue tracking: flatterline.lighthouseapp.com/projects/49220-flexpay/overview

About

Ruby gem for accessing Amazon FPS and CoBranding APIs

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages