mobilecause/cardconnect

View on GitHub
Rakefile

Summary

Maintainability
Test Coverage
require 'bundler/gem_tasks'
require 'rake/testtask'
require 'cardconnect'

task default: [:test]

Rake::TestTask.new do |t|
  t.libs << 'test'
  t.pattern = 'test/**/*_test.rb'
end

namespace :cardconnect do
  def cardconnect_configure(args)
    CardConnect.configure do |config|
      config.merchant_id = args.merchant_id
      config.api_username = args.api_username
      config.api_password = args.api_password
      config.endpoint = args.api_endpoint
    end
  end

  desc 'Ping the API Server'
  task :ping, [:merchant_id, :api_username, :api_password, :api_endpoint] do |_, args|
    cardconnect_configure(args)

    response = CardConnect::Connection.new.ping_server
    puts response.body
  end

  desc 'Simulate an Authorization request'
  task :authorize, [:merchant_id, :api_username, :api_password, :api_endpoint] do |_, args|
    cardconnect_configure(args)

    auth_params = {
      'account' => '4111111111111111',
      'accttype' => 'VISA',
      'expiry' => '1220',
      'amount' => '1000',
      'currency' => 'USD',
      'tokenize' => 'Y',
      'profile' => 'Y',
      'name' => 'Bob Johnson',
      'capture' => 'N'
    }

    auth = CardConnect::Service::Authorization.new
    auth.build_request(auth_params)

    if auth.request.valid?
      response = auth.submit
      puts response.body
    else
      puts auth.request.errors
    end
  end

  desc 'Simulate an Authorization Capture request'
  task :auth_capture, [:merchant_id, :api_username, :api_password, :api_endpoint] do |_, args|
    cardconnect_configure(args)

    auth_params = {
      'account' => '4111111111111111',
      'accttype' => 'VISA',
      'expiry' => '1220',
      'amount' => '1000',
      'currency' => 'USD',
      'tokenize' => 'Y',
      'profile' => 'Y',
      'name' => 'Bob Johnson',
      'capture' => 'Y',
      'ponumber' => '1234'
    }

    auth = CardConnect::Service::Authorization.new
    auth.build_request(auth_params)

    if auth.request.valid?
      response = auth.submit
      puts response.body
    else
      puts auth.request.errors
    end
  end

  desc 'Simulate a Capture request'
  task :capture, [:retref, :merchant_id, :api_username, :api_password, :api_endpoint] do |_, args|
    cardconnect_configure(args)

    capture_params = {
      'merchid' => CardConnect.configuration.merchant_id,
      'retref' => args.retref
    }

    capture = CardConnect::Service::Capture.new
    capture.build_request(capture_params)

    if capture.request.valid?
      response = capture.submit
      puts response.body
    else
      puts capture.request.errors
    end
  end

  desc 'Simulate a Void request'
  task :void, [:retref, :merchant_id, :api_username, :api_password, :api_endpoint] do |_, args|
    cardconnect_configure(args)

    void_params = {
      'merchid' => CardConnect.configuration.merchant_id,
      'retref' => args[:retref]
    }

    void = CardConnect::Service::Void.new
    void.build_request(void_params)

    if void.request.valid?
      response = void.submit
      puts response.body
    else
      puts void.request.errors
    end
  end

  desc 'Simulate a Refund request'
  task :refund, [:retref, :merchant_id, :api_username, :api_password, :api_endpoint] do |_, args|
    cardconnect_configure(args)

    refund_params = {
      'merchid' => CardConnect.configuration.merchant_id,
      'retref' => args[:retref]
    }

    refund = CardConnect::Service::Refund.new
    refund.build_request(refund_params)

    if refund.request.valid?
      response = refund.submit
      puts response.body
    else
      puts refund.request.errors
    end
  end

  desc 'Simulate an Inquire request'
  task :inquire, [:retref, :merchant_id, :api_username, :api_password, :api_endpoint] do |_, args|
    cardconnect_configure(args)

    inquire_params = {
      'merchid' => CardConnect.configuration.merchant_id,
      'retref' => args[:retref]
    }

    inquire = CardConnect::Service::Inquire.new
    inquire.build_request(inquire_params)

    if inquire.request.valid?
      response = inquire.submit
      puts response.body
    else
      puts inquire.request.errors
    end
  end

  desc 'Simulate a Settlement Status request'
  task :settle_status, [:date, :merchant_id, :api_username, :api_password, :api_endpoint] do |_, args|
    # Date format is MMDD
    cardconnect_configure(args)

    settle_params = {
      'merchid' => CardConnect.configuration.merchant_id,
      'date' => args[:date]
    }

    status = CardConnect::Service::SettlementStatus.new
    status.build_request(settle_params)

    if status.request.valid?
      response = status.submit
      puts response.body
    else
      puts status.request.errors
    end
  end

  desc 'Simulate a Profile request. Available rest methods: [put, get, delete]'
  task :profile, [:rest_method, :profileid, :account_id, :merchant_id, :api_username, :api_password, :api_endpoint] do |_, args|
    cardconnect_configure(args)

    profile_params = {
      'merchid' => CardConnect.configuration.merchant_id,
      'profileid' => args[:profileid],
      'acctid' => args[:account_id]
    }

    profile_put_params = {
      "region" => "AK",
      "phone" => "7778789999",
      "accttype" => "VISA",
      "postal" => "19090",
      "ssnl4" => "3655",
      "expiry" => "0214",
      "city" => "ANYTOWN",
      "country" => "US",
      "address" => "123 MAIN STREET",
      "merchid" => args[:merchant_id],
      'profileid' => args[:profileid],
      "name" => "TOM JONES",
      "account" => "4444333322221111",
      "license" => "123451254",
      "defaultacct" => "N",
      "profileupdate" => "Y"
    }

    profile = CardConnect::Service::Profile.new(args.rest_method)

    if args.rest_method == 'put'
      profile.build_request(profile_put_params)
    else
      profile.build_request(profile_params)
    end

    if profile.request.valid?
      response = profile.submit
      puts response.body
    else
      puts profile.request.errors
    end
  end
end