Giter Site home page Giter Site logo

castlerock / active_merchant Goto Github PK

View Code? Open in Web Editor NEW

This project forked from activemerchant/active_merchant

2.0 30.0 2.0 6.18 MB

Active Merchant is a simple payment abstraction library used in and sponsored by Shopify. It is written by Tobias Luetke, Cody Fauser, and contributors. The aim of the project is to feel natural to Ruby users and to abstract as many parts as possible away from the user to offer a consistent interface across all supported gateways.

Home Page: http://activemerchant.org

License: MIT License

Ruby 100.00%

active_merchant's Introduction

Active Merchant

This library is supposed to aid in creating e-commerce software in Ruby. In the future we want to support all “good” payment gateways.

This library is the foundation of commerce for www.shopify.com.

Please visit the ActiveMerchant homepage for more resources, tutorials and other information about this project.

Supported Direct Payment Gateways

The ActiveMerchant Wiki contains a table of features supported by each gateway.

Supported Offsite Payment Gateways

Download

Currently this library is available with git from:

git://github.com/Shopify/active_merchant.git

Installation

From Git

You can check out the latest source from git:

> git pull git://github.com/Shopify/active_merchant.git

As a Rails plugin

ActiveMerchant includes an init.rb file. This means that Rails will automatically load ActiveMerchant on startup. Run the following command from the root directory of your Rails project to install ActiveMerchant as a Rails plugin:

> ./script/plugin install git://github.com/Shopify/active_merchant.git

From Ruby Gems

Installation from RubyGems

> gem install activemerchant

Sample Usage

require 'rubygems'
require 'active_merchant'

# Use the TrustCommerce test servers
ActiveMerchant::Billing::Base.mode = :test

# ActiveMerchant accepts all amounts as Integer values in cents
# $10.00
amount = 1000

# The card verification value is also known as CVV2, CVC2, or CID
credit_card = ActiveMerchant::Billing::CreditCard.new(
                :first_name         => 'Bob',
                :last_name          => 'Bobsen',
                :number             => '4242424242424242',
                :month              => '8',
                :year               => '2012',
                :verification_value => '123'
              )

# Validating the card automatically detects the card type
if credit_card.valid?

  # Create a gateway object for the TrustCommerce service
  gateway = ActiveMerchant::Billing::TrustCommerceGateway.new(
              :login => 'TestMerchant',
              :password => 'password'
            )

  # Authorize for the amount
  response = gateway.purchase(amount, credit_card)

  if response.success?
    puts "Successfully charged $#{sprintf("%.2f", amount / 100)} to the credit card #{credit_card.display_number}"
  else
    raise StandardError, response.message 
  end
end
merchant_id = '123456789'
user = 'beanstream_user'
password = 'beanstream_password'
amount = 2000
update_amount = 1000
pass_code = 'beanstream_passcode'

gateway = ActiveMerchant::Billing::BeanstreamGateway.new(
                                                       :login => merchant_id,
                                                       :user => user,
                                                       :password => password
                                                       )
creditcard = ActiveMerchant::Billing::CreditCard.new(
                                                   :number => '4030000010001234',
                                                   :month => 8,
                                                   :year => 2012,
                                                   :first_name => 'Neeraj',
                                                   :last_name => 'Kumar',
                                                   :verification_value => 123
                                                   )
# Make recurring payment for the amount
recur_response = gateway.recurring(amount, creditcard, {
                             :recurring_billing => {
                               :end_of_month => '0',
                               :tax1 => 0,
                               :interval => {
                                 :unit => :months,
                                 :length => '1'
                               },
                               :duration => {
                                 :start_date => Date.today,
                                 :occurrences => 5
                               }
                             },
                           :order_id =>  "ORDER#{Time.now.to_i}",
                           :billing_address => {
                             :name => 'xiaobo zzz',
                             :phone => '514-766-2333',
                             :address1 => '123 Rene-levesque St.',
                             :city => 'Montreal',
                             :state => 'QC',
                             :country => 'CA',
                             :zip => 'H4D1W9'
                           },
                           :email => '[email protected]'})

update_gateway = ActiveMerchant::Billing::BeanstreamGateway.new(
                                                       :login => merchant_id,
                                                       :pass_code => pass_code
                                                       )

updated_response = update_gateway.update_recurring( update_amount, credit_card,
                                   { :order_id =>  "ORDER#{Time.now.to_i}", :account_id => recur_response.params['rbAccountId'] }
                                   )

cancelled_response = update_gateway.cancel_recurring(:account_id => recur_response.params['rbAccountId'] )

report_gateway = ActiveMerchant::Billing::BeanstreamGateway.new(
                                                       :login => 'CompanyName',
                                                       :user => user,
                                                       :password => password
                                                        )

transaction_report_response = report_gateway.transaction_report(
        :start_year => '2010', :end_year => '2010',
        :start_month => '7', :end_month => '7',
        :start_day => '13', :end_day => '14'
      )

today_transaction_report_response = report_gateway.today_report()

Contributing

Please see the ActiveMerchant Guide to Contributing for information on adding a new gateway to ActiveMerchant.

active_merchant's People

Contributors

soleone avatar ntalbott avatar calvincorreli avatar sukeerthiadiga avatar iamjwc avatar titanous avatar jzw avatar jamesmacaulay avatar wisq avatar mwagg avatar jstorimer avatar rmcafee avatar necrodome avatar satheshcrri avatar mmangino avatar vijayabharathy avatar tobi avatar tekin avatar duff avatar odorcicd avatar ccoakleypayjunction avatar bschwartz avatar pjhyett avatar infused avatar bowsersenior avatar rudolfs avatar robbyrussell avatar pdsphil avatar mitijain123 avatar nzkoz avatar

Stargazers

 avatar

Watchers

 avatar Murtada Shah avatar Raghunadh Doddaka avatar  avatar Jean Armeza avatar Mat avatar James Cloos avatar David Mack avatar Nitin Misra avatar Julie May avatar  avatar  avatar Kirtikumar A. avatar  avatar Rinku Singhal avatar RanjitL avatar  avatar Malaisamy M avatar Pulkit Agarwal avatar Sabarish Kumar avatar Ateq Ejaz avatar Anantha Padmanabha avatar Ravikiran K avatar Adnan avatar  avatar  avatar  avatar  avatar Tariq Ali avatar Mansi Shah avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.