Project

flexpay

0.0
No commit activity in last 3 years
No release in over 3 years
An API for using the Amazon Flexible Payment Service (FPS).
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

>= 0.8.1
>= 1.4.2
 Project Readme

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