No commit activity in last 3 years
No release in over 3 years
First Data Latvia gateway for Active Merchant
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.3
>= 0
~> 3.2
~> 1.11

Runtime

 Project Readme

First Data Latvia gateway for Active Merchant

Build Status

Install

$ gem install active_merchant_first_data

Usage

require "active_merchant_first_data"

gateway = ActiveMerchant::Billing::FirstDataGateway.new(
  pem:  File.read("1234567_keystore.pem"),
  pem_password: "5x64jq8n234c"
)

# Authorize for 10 euros (1000 euro cents)
response = gateway.authorize(1000, client_ip_addr: '127.0.0.1')

# Use this url to enter credit card data
gateway.redirect_url(response.authorization)

# Capture the money
gateway.capture(1000, response.authorization, client_ip_addr: '127.0.0.1')

First Data test environment setup

  1. Generate a new certificate

    $ openssl req -newkey rsa:2048 -keyout spec/certs/1234567_key.pem -out spec/certs/1234567_req.pem -subj "/C=lv/O=example.com/CN=1234567" -outform PEM
    Enter PEM pass phrase: 81f174259v45
  2. Request your certificate using 1234567_req.pem

  3. Copy the 3 files you received in e-mail to spec/certs/:

    1234567.pem
    1234567_certificate_chain.p7.pem
    ECOMM.pem
    
  4. Convert the certificates and keys to 1234567_keystore.pem

    $ openssl pkcs12 -export -in spec/certs/1234567.pem -out spec/certs/1234567_keystore.p12 -certfile spec/certs/ECOMM.pem -inkey spec/certs/1234567_key.pem
    Enter pass phrase for 1234567_key.pem: 81f174259v45
    Enter Export Password: <empty>
    $ openssl pkcs12 -in spec/certs/1234567_keystore.p12 > spec/certs/1234567_keystore.pem
    Enter Import Password: <empty>
    Enter PEM pass phrase: 5x64jq8n234c
  5. Set your WAN IP address

Mocking in (RSpec) tests

Perhaps the best way to mock responses in tests is to disallow remote connections altogether and then control what responses specific requests receive.

For example, to mock response to the #purchase request with WebMock you'd:

before do
  body = {
    "TRANSACTION_ID" => "e+oClP4em8uBDozaZ4CBBbipEcM="
  }.merge(options).map{ |k, v| "#{k}: #{v}" }.join("\n")

  WebMock.stub_request(:post, %r'firstdata.lv').
    with(body: hash_including("command" => "v")).
    to_return(body: body)
end

Peruse first_data_gateway.rb to find out which command letters map to which methods.
Additionally, have a look at spec/cassettes for response body examples.