Project

foxy_sync

0.01
Repository is archived
No commit activity in last 3 years
No release in over 3 years
Encapsulates FoxyCart SSO, datafeed, and cart validation protocols
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 2.11.0

Runtime

~> 1.5.5
~> 0.1.5
 Project Readme

FoxySync

A gem to synchronize your Ruby application with FoxyCart.

It encapsulates the FoxyCart SSO, Datafeed, and cart validation protocols and abstracts the entire FoxyCart API.

Installation

If you use Bundler just add gem 'foxy_sync' to your Gemfile and then run bundle install. Otherwise you can gem install foxy_sync manually.

Setup

You'll need to configure FoxySync. In particular you need to make known your FoxyCart API key and store URL.

FoxySync.setup do |config|
  config.api_key = 'YOUR API KEY HERE'
  config.store_url = 'YOUR STORE URL HERE'
end

You should do this in an application startup file. In Rails it's best to put it in a file config/initializers/foxy_sync.rb

Cart validation

FoxySync provides methods to help with FoxyCart's cart validation service. To create a hidden input like this:

<input type="hidden" value="mai" name="code||5651608dde5a2abeb51fad7099fbd1a026690a7ddbd93a1a3167362e2f611b53"/>

You would include FoxySync::CartValidation and output your hidden field with a name whose value is cart_input_name 'code', 'mai', 'mai'

Single sign on

FoxySync provides methods for helping with FoxyCart's single sign on service.

To create the URL that FoxyCart expects your server to redirect to just include FoxySync::Sso and redirect_to sso_url(params, user). The params argument should be something that responds to [] and holds the 'fcsid' and 'timestamp' parameters given by the FoxyCart SSO request (in Rails that's the params object). The user argument should be the currently logged in user, if any.

XML datafeeds

FoxySync provides methods for helping with FoxyCart's datafeeds. Typically done in a controller you would include FoxySync::Datafeed and, in the method that handles the datafeed request, parse the request parameter and read the XML:

  receipt = []
  xml = datafeed_unwrap params
  receipt << xml.customer_first_name
  receipt << xml.customer_last_name
  receipt << xml.receipt_url
  # ... etc ....

params should respond to [] and hold the 'FoxyData' parameter that FoxyCart sends (in Rails that's the params object). xml would be a FoxySync::Xml::Transaction. FoxyCart expects a particular reply when responding to its datafeed requests. The reply can be sent using the datafeed_response method.

FoxyCart API

You can access any part of the FoxyCart API via the FoxySync::Api::Messenger class. To use it create a new instance and then send it a message that corresponds to the FoxyCart API. All messages return an instance of FoxySync::Xml::Document through which you can access FoxyCart's XML response. For Example:

    api = FoxySync::Api::Messenger.new
    reply = api.customer_get :customer_email => 'foo@bar.com'
    reply.customer_id # is the customer's FoxyCart id

Messenger instances respond to every API call in FoxyCart v1.0.