No commit activity in last 3 years
No release in over 3 years
A wrapper for GIACT's Verification Services that cleans up their SOAP API
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.16
~> 0.11.3
~> 12.3.0
~> 3.7.0
~> 2.0.0
~> 3.3.0

Runtime

~> 1.8.2
~> 2.6.0
 Project Readme

GiactVerification

Build Status

WARNING This gem only works for Version 5.8.x of GIACT's API

Installation

Add this line to your application's Gemfile:

gem 'giact_verification'

Or install it yourself as:

$ gem install giact_verification

Configuration

To set up your API keys, use the configuration helper like this:

GiactVerification.configure do |config|
  config.api_username = 'foo'
  config.api_password = 'bar'
  config.giact_endpoint = :production
end

giact_endpoint options are :production, :sandbox and :stubbed.

  • :production Will send requests to their production endpoint
  • :sandbox Will send requests to their sandbox endpoint
  • :stubbed Will stub requests locally (no network request) and return one of a series of set responses based on the last name passed.

Authenticate

GiactVerification::Authenticate takes two arguements: a valid customer and a valid check.

GiactVerification::Authenticate.call(
  customer: {
    first_name: "Kent"
    last_name: "Beck"
    address_line1: "123 Test Dr."
    city: "Abbotsford"
    state: "MA"
    zip_code: "54321"
    phone_number: "4127982231"
    tax_id: 9876543210
    date_of_birth: Date.parse('Mar 6 1961')
  },
  check: {
    routing_number: 123456789
    account_number: 00012300089
  }
)

GiactVerification::Authenticate.call() will return a GiactVerification::Response object which has the following API:

response = GiactVerification::Authenticate.call(customer: some_customer, check: some_check)

response.raw_request
#=> The XML string sent to GIACT

response.raw_response
#=> The XML string returned from GIACT

response.success?
#=> A boolean value indicating if the request was successful
# `true` indicates GIACT returned valid XML 
# `false` indicates there was some kind of error. You can then check the raw_response for details.

response.parsed_response
#=> Hash of the data GIACT returned with keys: 
# If the response was successful the hash will be populated like this:
 {
  item_reference_id: String,
  created_date: DateTime,
  verification_response: String,
  account_response_code: String,
  bank_name: String,
  account_added_date: DateTime,
  account_last_updated_date: DateTime,
  account_closed_date: DateTime,
  funds_confirmation_result: String,
  customer_response_code: String
 }
# If the response fails, the hash will be blank.

The following are valid customer fields. Please note that the required fields noted below only represent the bare minimum. Some GIACT services will require additional fields.

  • name_prefix: 1-4 characters
  • first_name: 2-40 characters REQUIRED
  • middle_name: 1-40 characters
  • last_name: 2-40 characters REQUIRED
  • name_suffix: 1-4 characters
  • address_line1: 2-40 characters REQUIRED
  • address_line2: 1-40 characters
  • city: 2-25 characters REQUIRED
  • state: 2 characters, valid US state or Candian province REQUIRED
  • zip_code: 5 or 7 or 10 characters, valid US or Canadian postal code REQUIRED
  • country: Either 'US' or 'CA', defaults to 'US'
  • phone_number: 10 numeric characters, can't start with 0, no dashes
  • tax_id: Social security number or business ein REQUIRED
  • date_of_birth: Date, DateTime or an object that responds to :strftime REQUIRED
  • drivers_license_number: 1-28 numeric characters
  • drivers_license_state: 2 characters, valid US state or Candian province
  • email_address: 1-100 characters
  • current_ip_address: 1-15 characters
  • mobile_consent_record_id: Numeric, unspecified length
  • alternative_id_type: Must be one of the following: 'UsaMilitaryId', 'UsaStateId', 'PassportUsa', 'PassportForeign', 'UsaResidentAlienId', 'StudentId', 'TribalId', 'DlCanada', 'DlMexico', or 'OtherForeignId'
  • alternative_id_issuer: 1-50 characters
  • alternative_id_number: 1-50 numeric characters
  • domain: 1-100 characters

The following are valid check fields:

  • routing_number: 9 numeric characters REQUIRED
  • account_number: 4-17 numeric characters REQUIRED
  • check_number: numeric, unspecified length
  • check_amount: float or float-like string (eg. '100.01')
  • account_type: one of the following: 'Checking', 'Savings' or 'Other'

Using config.giact_endpoint = :stubbed will return a set response based on the last name passed in. These responses were built to be used in acceptance/integration tests. The built in responses were copied from the sandbox API and are as follows:

  1. last_name: GiactError Will respond with an errored response (mimicking an error on GIACT's server)
  2. last_name: GiactDeclined Will respond with a declined response
  3. ANY OTHER LAST NAME Will return a passed response

The response is stubbed at a HTTP level, you'll still need to pass valid customer and check parameters to pass local validation.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/georgewambold/giact_verification. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake to run the tests.

License

The gem is available as open source under the terms of the MIT License.