activepayment 0.2.5 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 673fe904e2566fb07f426850eace602276b3bafa
4
+ data.tar.gz: 4f93bd3897ea8e260c25039e4116605bcbed0747
5
+ SHA512:
6
+ metadata.gz: 2a63c28d1ba5e9d86197cc29c640f9ea5ada12bca2176bbd362c963b403da17731b413f9c1398384965fd90147f98eedccfae88ab36f112efadd84f99d2c5b6d
7
+ data.tar.gz: c6cb5887707d001166ed0e2f221c62a3ffbf3af764780547adeeab4007b8c3ca0aaaf19875ff736a64515997acf6f16625577b8a8f53e8f71694143a44f520c6
@@ -0,0 +1 @@
1
+ 2.1.1
@@ -1,3 +1,3 @@
1
1
  script: "bundle exec rake spec:unit"
2
2
  rvm:
3
- - 1.9.2
3
+ - 2.1.1
@@ -0,0 +1,126 @@
1
+ ActivePayment
2
+ =============
3
+
4
+ [![Build Status](https://api.travis-ci.org/aklaiber/activepayment.svg)][travis]
5
+ [![Gem Version](http://img.shields.io/gem/v/activepayment.svg)][gem]
6
+ [![Code Climate](https://codeclimate.com/github/aklaiber/activepayment.png)][codeclimate]
7
+ [![Dependencies Status](http://img.shields.io/gemnasium/aklaiber/activepayment.svg)][gemnasium]
8
+
9
+ [travis]: https://travis-ci.org/aklaiber/activepayment
10
+ [gem]: https://rubygems.org/gems/activepayment
11
+ [codeclimate]: https://codeclimate.com/github/aklaiber/activepayment
12
+ [gemnasium]: https://gemnasium.com/aklaiber/activepayment
13
+
14
+
15
+ ActivePayment is an abstraction layer for different Payment-Interfaces (XML, JSON)
16
+
17
+ ##### Usage Paypal Gateway
18
+
19
+ ``` ruby
20
+ ActivePayment::Paypal::Gateway.business = 'seller_111111_biz@example.com'
21
+ ActivePayment::Paypal::Gateway.cmd = '_xclick'
22
+ ActivePayment::Paypal::Gateway.default_currency = 'EUR'
23
+ ActivePayment::Wirecard::Gateway.mode = 'live'
24
+ ```
25
+
26
+ ``` ruby
27
+ gateway = ActivePayment::Paypal::Gateway.new('TRANSACTION ID', 100)
28
+
29
+ gateway.return_url = 'http://example.com/payment_completed_url'
30
+ gateway.notify_url = 'http://example.com/payment_notify_url'
31
+ gateway.cancel_url = 'http://example.com/payment_cancel_url'
32
+ gateway.invoice = 'INVOICE NUMBER'
33
+ gateway.item_name = 'ITEM NAME'
34
+
35
+ gateway.redirect_url.to_s
36
+
37
+ # => https://www.paypal.com/cgi-bin/webscr?amount=1.0&business=seller_111111_biz%40example.com&cancel_return=http%3A%2F%2Fexample.com%2Fpayment_cancel_url&cmd=_xclick&currency_code=EUR&invoice=INVOICE+NUMBER&item_name=ITEM+NAME&notify_url=http%3A%2F%2Fexample.com%2Fpayment_notify_url&return=http%3A%2F%2Fexample.com%2Fpayment_completed_url
38
+ ```
39
+
40
+ ##### Usage Wirecard Gateway
41
+
42
+ ``` ruby
43
+ ActivePayment::Wirecard::Gateway.login = 56501
44
+ ActivePayment::Wirecard::Gateway.password = 'TestXAPTER'
45
+ ActivePayment::Wirecard::Gateway.signature = '56501'
46
+ ActivePayment::Wirecard::Gateway.mode = 'demo'
47
+ ActivePayment::Wirecard::Gateway.default_currency = 'EUR'
48
+ ```
49
+
50
+ ``` ruby
51
+ gateway = ActivePayment::Wirecard::Gateway.new('TRANSACTION ID', 100)
52
+
53
+ gateway.jop_id = 'test dummy data'
54
+ gateway.transaction_params = {
55
+ commerce_type: 'eCommerce',
56
+ country_code: 'DE',
57
+ contact_data: { ip_address: '192.168.1.1' },
58
+ corptrustcenter_data: {
59
+ address: {
60
+ first_name: 'first_name',
61
+ last_name: 'last_name',
62
+ address_1: 'address_1',
63
+ address_2: 'address_2',
64
+ city: 'city',
65
+ zip_code: 'zip_code',
66
+ state: 'state',
67
+ country: 'country',
68
+ phone: 'phone',
69
+ email: 'email'
70
+ }
71
+ }
72
+ }
73
+ ```
74
+
75
+ ``` ruby
76
+ gateway.authorization(
77
+ credit_card_number: '4200000000000000',
78
+ cvc2: '001',
79
+ expiration_year: '2020',
80
+ expiration_month: '01',
81
+ card_holder_name: 'TEST CARDHOLDER'
82
+ )
83
+ ```
84
+
85
+ ``` ruby
86
+ gateway.capture_authorization('TEST GUWID')
87
+ ```
88
+
89
+ ``` ruby
90
+ gateway.purchase(
91
+ credit_card_number: '4200000000000000',
92
+ cvc2: '001',
93
+ expiration_year: '2020',
94
+ expiration_month: '01',
95
+ card_holder_name: 'TEST CARDHOLDER'
96
+ )
97
+ ```
98
+
99
+ ``` ruby
100
+ gateway.enrollment_check(
101
+ credit_card_number: '4200000000000000',
102
+ cvc2: '001',
103
+ expiration_year: '2020',
104
+ expiration_month: '01',
105
+ card_holder_name: 'TEST CARDHOLDER'
106
+ )
107
+ ```
108
+
109
+ Installation
110
+ -----------------
111
+
112
+ gem install activepayment
113
+
114
+ or add the following line to Gemfile:
115
+
116
+ gem 'activepayment'
117
+
118
+
119
+ Supported Gateways
120
+ -----------------
121
+
122
+ * {Payone}[http://www.payone.de] - DE
123
+ * {Wirecard}[http://www.wirecard.com] - DE
124
+
125
+
126
+
@@ -23,6 +23,7 @@ Gem::Specification.new do |s|
23
23
  s.add_dependency "nokogiri"
24
24
  s.add_dependency "builder"
25
25
  s.add_dependency "uuid"
26
+ s.add_dependency "money"
26
27
 
27
28
  s.add_development_dependency "rspec"
28
29
  s.add_development_dependency "rake"
@@ -9,15 +9,15 @@ require "active_support/core_ext"
9
9
  require "builder"
10
10
  require "nokogiri"
11
11
  require "uuid"
12
+ require "money"
12
13
 
13
14
  require "activepayment/railtie" if defined?(Rails)
14
15
  require "activepayment/version"
15
16
  require "activepayment/gateway_base"
16
17
 
17
- require "activepayment/payone/gateway"
18
18
  require "activepayment/wirecard/gateway"
19
+ require "activepayment/paypal/gateway"
19
20
 
20
- require "activepayment/payone/response"
21
21
  require "activepayment/wirecard/response"
22
22
 
23
23
  module ActivePayment
@@ -2,9 +2,14 @@ module ActivePayment
2
2
  module Gateway
3
3
  class Base
4
4
 
5
- class_attribute :gateway_name, :test_url, :live_url, :default_currency
5
+ class_attribute :gateway_name, :test_url, :live_url, :default_currency, :mode
6
6
 
7
- attr_accessor :transaction_params
7
+ attr_accessor :transaction_params, :amount, :transaction_id
8
+
9
+ def initialize(transaction_id, amount)
10
+ @transaction_id = transaction_id
11
+ @amount = amount.kind_of?(Money) ? amount : Money.new(amount, default_currency.upcase)
12
+ end
8
13
 
9
14
  def self.build(name)
10
15
  "ActivePayment::#{name.to_s.classify}::Gateway".constantize
@@ -0,0 +1,57 @@
1
+ module ActivePayment
2
+ module Paypal
3
+ class Gateway < ActivePayment::Gateway::Base
4
+
5
+ class_attribute :business, :cmd
6
+
7
+ attr_accessor :amount, :transaction_id, :jop_id, :return_url, :notify_url, :cancel_url, :invoice, :item_name
8
+
9
+ self.gateway_name = 'paypal'
10
+ self.test_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr?'
11
+ self.live_url = 'https://www.paypal.com/cgi-bin/webscr?'
12
+
13
+ public
14
+
15
+ def redirect_url
16
+ URI.parse(self.url.to_s + transaction_params.to_query)
17
+ end
18
+
19
+ def purchase_valid?(request)
20
+ response = post_validation_request(request)
21
+
22
+ if response.eql?('VERIFIED')
23
+ return true
24
+ else
25
+ return false
26
+ end
27
+ end
28
+
29
+ private
30
+
31
+ def post_validation_request(origin_response)
32
+ uri = URI.parse("#{self.url.to_s}cmd=_notify-validate")
33
+
34
+ http = Net::HTTP.new(uri.host, uri.port)
35
+ http.open_timeout = 60
36
+ http.read_timeout = 60
37
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
38
+ http.use_ssl = true
39
+ http.post(uri.request_uri, origin_response, 'Content-Length' => "#{origin_response.size}", 'User-Agent' => 'My custom user agent').body
40
+ end
41
+
42
+ def transaction_params
43
+ {
44
+ business: business,
45
+ cmd: cmd,
46
+ amount: amount.to_f,
47
+ currency_code: default_currency,
48
+ return: return_url,
49
+ notify_url: notify_url,
50
+ cancel_return: cancel_url,
51
+ invoice: invoice,
52
+ item_name: item_name
53
+ }
54
+ end
55
+ end
56
+ end
57
+ end
@@ -1,3 +1,3 @@
1
1
  module ActivePayment
2
- VERSION = "0.2.5"
2
+ VERSION = '1.0.0'
3
3
  end
@@ -10,13 +10,6 @@ module ActivePayment
10
10
  self.test_url = 'https://c3-test.wirecard.com/secure/ssl-gateway'
11
11
  self.live_url = 'https://c3.wirecard.com/secure/ssl-gateway'
12
12
 
13
- def initialize(transaction_id, amount)
14
- @transaction_id = transaction_id
15
- @amount = amount
16
- end
17
-
18
- public
19
-
20
13
  def authorization(credit_card)
21
14
  post_request(self.authorization_request(credit_card))
22
15
  end
@@ -25,7 +18,7 @@ module ActivePayment
25
18
  build_request(:authorization) do |xml|
26
19
  xml.tag! 'TransactionID', self.transaction_id
27
20
  xml.tag! 'Currency', Gateway.default_currency
28
- xml.tag! 'Amount', self.amount
21
+ xml.tag! 'Amount', self.amount.cents
29
22
 
30
23
  add_optional_node(xml, :commerce_type)
31
24
  add_optional_node(xml, :country_code)
@@ -43,7 +36,7 @@ module ActivePayment
43
36
  build_request(:capture_authorization) do |xml|
44
37
  xml.tag! 'TransactionID', self.transaction_id
45
38
  xml.tag! 'GuWID', guwid
46
- xml.tag! 'Amount', self.amount
39
+ xml.tag! 'Amount', self.amount.cents
47
40
 
48
41
  add_optional_node(xml, :country_code)
49
42
  end
@@ -57,7 +50,7 @@ module ActivePayment
57
50
  build_request(:purchase) do |xml|
58
51
  xml.tag! 'TransactionID', self.transaction_id
59
52
  xml.tag! 'Currency', Gateway.default_currency
60
- xml.tag! 'Amount', self.amount
53
+ xml.tag! 'Amount', self.amount.cents
61
54
  xml.tag! 'GuWID', guwid unless guwid.blank?
62
55
  xml.tag! 'THREE-D_SECURE' do
63
56
  xml.tag! 'PARes', pares
@@ -79,7 +72,7 @@ module ActivePayment
79
72
  build_request(:enrollment_check) do |xml|
80
73
  xml.tag! 'TransactionID', self.transaction_id
81
74
  xml.tag! 'Currency', Gateway.default_currency
82
- xml.tag! 'Amount', self.amount
75
+ xml.tag! 'Amount', self.amount.cents
83
76
 
84
77
  add_optional_node(xml, :country_code)
85
78
  add_optional_node(xml, :credit_card_data, credit_card)
@@ -1,4 +1,16 @@
1
1
  without_3d_secure:
2
+ wirecard:
3
+ login: 56501
4
+ password: TestXAPTER
5
+ signature: 56501
6
+ mode: demo
7
+ default_currency: EUR
2
8
 
3
9
  with_3d_secure:
10
+ wirecard:
11
+ login: 000000315DE09F66
12
+ password: TestXAPTER
13
+ signature: 000000315DE0A429
14
+ mode:
15
+ default_currency: EUR
4
16
 
@@ -3,22 +3,22 @@ require "spec_helper"
3
3
  describe ActivePayment::Wirecard::Gateway do
4
4
 
5
5
  let(:amount) { 100 }
6
- let(:gateway) { ActivePayment::Wirecard::Gateway.new(123, amount) }
6
+ let(:gateway) do
7
+ gateway = ActivePayment::Wirecard::Gateway.new(123, amount)
8
+ gateway.jop_id = 'test dummy data'
9
+ gateway.transaction_params = { commerce_type: 'eCommerce', country_code: 'DE' }
10
+ gateway
11
+ end
7
12
 
8
13
  describe "post request" do
9
14
 
10
15
  before(:all) do
11
16
  ActivePayment::Wirecard::Gateway.config = load_config('wirecard', 'without_3d_secure')
12
-
13
- gateway.jop_id = 'test dummy data'
14
- gateway.transaction_params = {
15
- :commerce_type => 'eCommerce',
16
- :country_code => 'DE'
17
- }
18
17
  end
19
18
 
20
19
  it "should post authorization request" do
21
- response = gateway.authorization(credit_card_hash)
20
+ response = gateway.authorization(credit_card_number: '4200000000000000', cvc2: '001', expiration_year: '2020', expiration_month: '01', card_holder_name: 'TEST CARDHOLDER')
21
+ # response = gateway.authorization(credit_card_hash)
22
22
 
23
23
  response.successful?.should be_true
24
24
  response.info.should include('THIS IS A DEMO')
@@ -49,26 +49,29 @@ describe ActivePayment::Wirecard::Gateway do
49
49
  end
50
50
 
51
51
  describe "with address" do
52
- before(:all) do
52
+ let(:gateway) do
53
+ gateway = ActivePayment::Wirecard::Gateway.new(123, amount)
54
+ gateway.jop_id = 'test dummy data'
53
55
  gateway.transaction_params = {
54
- :commerce_type => 'eCommerce',
55
- :country_code => 'DE',
56
- :contact_data => {:ip_address => '192.168.1.1'},
57
- :corptrustcenter_data => {
58
- :address => {
59
- :first_name => Forgery::Name.first_name,
60
- :last_name => Forgery::Name.last_name,
61
- :address_1 => '550 South Winchester blvd.',
62
- :address_2 => 'P.O. Box 850',
63
- :city => 'San Jose',
64
- :zip_code => '95128',
65
- :state => 'CA',
66
- :country => 'US',
67
- :phone => '+1(202)555-1234',
68
- :email => 'John.Doe@email.com'
56
+ commerce_type: 'eCommerce',
57
+ country_code: 'DE',
58
+ contact_data: {ip_address: '192.168.1.1'},
59
+ corptrustcenter_data: {
60
+ address: {
61
+ first_name: Forgery::Name.first_name,
62
+ last_name: Forgery::Name.last_name,
63
+ address_1: '550 South Winchester blvd.',
64
+ address_2: 'P.O. Box 850',
65
+ city: 'San Jose',
66
+ zip_code: '95128',
67
+ state: 'CA',
68
+ country: 'US',
69
+ phone: '+1(202)555-1234',
70
+ email: 'John.Doe@email.com'
69
71
  }
70
72
  }
71
73
  }
74
+ gateway
72
75
  end
73
76
 
74
77
  it "should post authorization request with address" do
@@ -84,27 +87,17 @@ describe ActivePayment::Wirecard::Gateway do
84
87
  end
85
88
 
86
89
  describe "3D secure" do
87
-
88
90
  before(:all) do
89
91
  ActivePayment::Wirecard::Gateway.config = load_config('wirecard', 'with_3d_secure')
90
-
91
- gateway.jop_id = 'test dummy data'
92
- gateway.transaction_params = {
93
- :commerce_type => 'eCommerce',
94
- :country_code => 'DE'
95
- }
96
92
  end
97
93
 
98
- it "should enrollment_check is successfully" do
99
- response = gateway.enrollment_check(credit_card_hash('4012000300001003', :cvc2 => '003'))
94
+ context "enrollment_check" do
95
+ it "should failed" do
96
+ response = gateway.enrollment_check(credit_card_hash('4012000300001003', :cvc2 => '003'))
100
97
 
101
- response.successful?.should be_true
102
- response.status_type.should eql('Y')
103
- response['GuWID'].should_not be_blank
104
- response['PAReq'].should_not be_blank
105
- response['AcsUrl'].should_not be_blank
98
+ response.successful?.should be_false
99
+ end
106
100
  end
107
-
108
101
  end
109
102
 
110
103
  end
@@ -1,9 +1,10 @@
1
1
  $LOAD_PATH.unshift(File.dirname(__FILE__))
2
2
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
3
 
4
- require "activepayment"
5
- require "rspec"
6
- require "forgery"
4
+ require 'activepayment'
5
+ require 'rspec'
6
+ require 'forgery'
7
+ require 'yaml'
7
8
 
8
9
  FIXTURES_PATH = "#{File.dirname(__FILE__)}/fixtures"
9
10
 
@@ -13,11 +14,11 @@ end
13
14
 
14
15
  def credit_card_hash(number = '4200000000000000', options = {})
15
16
  {
16
- :credit_card_number => number,
17
- :cvc2 => '001',
18
- :expiration_year => Time.now.year + 1,
19
- :expiration_month => '01',
20
- :card_holder_name => Forgery::Name.full_name
17
+ credit_card_number: number,
18
+ cvc2: '001',
19
+ expiration_year: Time.now.year + 1,
20
+ expiration_month: '01',
21
+ card_holder_name: Forgery::Name.full_name
21
22
  }.update(options)
22
23
  end
23
24
 
@@ -0,0 +1,69 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActivePayment::Paypal::Gateway do
4
+ before(:all) do
5
+ ActivePayment::Paypal::Gateway.business = 'seller_1321436147_biz@bonayou.com'
6
+ ActivePayment::Paypal::Gateway.cmd = '_xclick'
7
+ ActivePayment::Paypal::Gateway.default_currency = 'EUR'
8
+ end
9
+
10
+ let(:amount) { 1000 }
11
+ let(:gateway) { ActivePayment::Paypal::Gateway.new(123, amount)}
12
+
13
+ describe '#url' do
14
+ let(:url) { gateway.redirect_url.to_s }
15
+
16
+ it { expect(url).to include(ActivePayment::Paypal::Gateway.test_url)}
17
+ it { expect(url).to include(CGI.escape(ActivePayment::Paypal::Gateway.business)) }
18
+ it { expect(url).to include(CGI.escape(ActivePayment::Paypal::Gateway.cmd)) }
19
+ it { expect(url).to include(CGI.escape(ActivePayment::Paypal::Gateway.default_currency)) }
20
+
21
+ it 'sets amount' do
22
+ expect(url).to include(gateway.amount.to_f.to_s)
23
+ end
24
+
25
+ it 'sets return url' do
26
+ gateway.return_url = 'http://example.com/payment_completed_url'
27
+
28
+ expect(url).to include(CGI.escape(gateway.return_url))
29
+ end
30
+
31
+ it 'sets notify url' do
32
+ gateway.notify_url = 'http://example.com/payment_notify_url'
33
+
34
+ expect(url).to include(CGI.escape(gateway.notify_url))
35
+ end
36
+
37
+ it 'sets cancel url' do
38
+ gateway.cancel_url = 'http://example.com/payment_cancel_url'
39
+
40
+ expect(url).to include(CGI.escape(gateway.cancel_url))
41
+ end
42
+
43
+ it 'sets invoice' do
44
+ gateway.invoice = 'INVOICE NUMBER'
45
+
46
+ expect(url).to include(CGI.escape(gateway.invoice))
47
+ end
48
+
49
+ it 'sets cancel url' do
50
+ gateway.item_name = 'ITEM NAME'
51
+
52
+ expect(url).to include(CGI.escape(gateway.item_name))
53
+ end
54
+ end
55
+
56
+ describe '#purchase_valid?' do
57
+ it 'returns VERIFIED' do
58
+ expect(gateway).to receive(:post_validation_request).once.and_return('VERIFIED')
59
+
60
+ expect(gateway.purchase_valid?('TEST REQUEST')).to be_true
61
+ end
62
+
63
+ it 'returns INVALID' do
64
+ expect(gateway).to receive(:post_validation_request).once.and_return('INVALID')
65
+
66
+ expect(gateway.purchase_valid?('TEST REQUEST')).to be_false
67
+ end
68
+ end
69
+ end
@@ -3,21 +3,23 @@ require 'spec_helper'
3
3
  describe ActivePayment::Wirecard::Gateway do
4
4
 
5
5
  let(:amount) { 100 }
6
- let(:gateway) { ActivePayment::Wirecard::Gateway.new(123, amount) }
7
6
  let(:guwid) { 'C822580121385121429927' }
8
-
9
- before(:all) do
10
- ActivePayment::Wirecard::Gateway.login = 56501
11
- ActivePayment::Wirecard::Gateway.password = "TestXAPTER"
12
- ActivePayment::Wirecard::Gateway.signature = "56501"
13
- ActivePayment::Wirecard::Gateway.mode = "demo"
14
- ActivePayment::Wirecard::Gateway.default_currency = 'EUR'
15
-
7
+ let(:gateway) do
8
+ gateway = ActivePayment::Wirecard::Gateway.new(123, amount)
16
9
  gateway.jop_id = 'test dummy data'
17
10
  gateway.transaction_params = {
18
11
  :commerce_type => 'eCommerce',
19
12
  :country_code => 'DE'
20
13
  }
14
+ gateway
15
+ end
16
+
17
+ before(:all) do
18
+ ActivePayment::Wirecard::Gateway.login = 56501
19
+ ActivePayment::Wirecard::Gateway.password = 'TestXAPTER'
20
+ ActivePayment::Wirecard::Gateway.signature = '56501'
21
+ ActivePayment::Wirecard::Gateway.mode = 'demo'
22
+ ActivePayment::Wirecard::Gateway.default_currency = 'EUR'
21
23
  end
22
24
 
23
25
  it "should build authorization request" do
@@ -51,7 +53,9 @@ describe ActivePayment::Wirecard::Gateway do
51
53
  end
52
54
 
53
55
  describe "with address" do
54
- before(:all) do
56
+ let(:gateway) do
57
+ gateway = ActivePayment::Wirecard::Gateway.new(123, amount)
58
+ gateway.jop_id = 'test dummy data'
55
59
  gateway.transaction_params = {
56
60
  :commerce_type => 'eCommerce',
57
61
  :country_code => 'DE',
@@ -71,6 +75,7 @@ describe ActivePayment::Wirecard::Gateway do
71
75
  }
72
76
  }
73
77
  }
78
+ gateway
74
79
  end
75
80
 
76
81
  it "should build authorization request" do
metadata CHANGED
@@ -1,142 +1,139 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activepayment
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
5
- prerelease:
4
+ version: 1.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Alexander Klaiber
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-03-13 00:00:00.000000000Z
11
+ date: 2014-05-21 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activesupport
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: i18n
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: nokogiri
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - ">="
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - ">="
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: builder
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - ">="
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - ">="
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: uuid
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - ">="
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :runtime
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: money
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
92
95
  - !ruby/object:Gem::Version
93
96
  version: '0'
94
97
  - !ruby/object:Gem::Dependency
95
98
  name: rspec
96
99
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
100
  requirements:
99
- - - ! '>='
101
+ - - ">="
100
102
  - !ruby/object:Gem::Version
101
103
  version: '0'
102
104
  type: :development
103
105
  prerelease: false
104
106
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
107
  requirements:
107
- - - ! '>='
108
+ - - ">="
108
109
  - !ruby/object:Gem::Version
109
110
  version: '0'
110
111
  - !ruby/object:Gem::Dependency
111
112
  name: rake
112
113
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
114
  requirements:
115
- - - ! '>='
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
121
  requirements:
123
- - - ! '>='
122
+ - - ">="
124
123
  - !ruby/object:Gem::Version
125
124
  version: '0'
126
125
  - !ruby/object:Gem::Dependency
127
126
  name: forgery
128
127
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
128
  requirements:
131
- - - ! '>='
129
+ - - ">="
132
130
  - !ruby/object:Gem::Version
133
131
  version: '0'
134
132
  type: :development
135
133
  prerelease: false
136
134
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
135
  requirements:
139
- - - ! '>='
136
+ - - ">="
140
137
  - !ruby/object:Gem::Version
141
138
  version: '0'
142
139
  description: ActivePayment is an abstraction layer for different Payment-Interfaces
@@ -147,25 +144,24 @@ executables: []
147
144
  extensions: []
148
145
  extra_rdoc_files: []
149
146
  files:
150
- - .gitignore
151
- - .rspec
152
- - .rvmrc
153
- - .travis.yml
147
+ - ".gitignore"
148
+ - ".ruby-version"
149
+ - ".travis.yml"
154
150
  - Gemfile
155
- - README.rdoc
151
+ - README.md
156
152
  - Rakefile
157
153
  - activepayment.gemspec
154
+ - doc/WD_card_processing_4_0_0.pdf
155
+ - doc/WD_country&currency_codes_1-1-0_en.pdf
156
+ - doc/WD_https_gateway_2-3-0_en.pdf
158
157
  - lib/activepayment.rb
159
158
  - lib/activepayment/gateway_base.rb
160
- - lib/activepayment/payone/gateway.rb
161
- - lib/activepayment/payone/response.rb
159
+ - lib/activepayment/paypal/gateway.rb
162
160
  - lib/activepayment/railtie.rb
163
161
  - lib/activepayment/version.rb
164
162
  - lib/activepayment/wirecard/gateway.rb
165
163
  - lib/activepayment/wirecard/response.rb
166
164
  - spec/fixtures/activepayment_config.yml
167
- - spec/fixtures/payone/gateway/authorization_request.txt
168
- - spec/fixtures/payone/gateway/successful_authorization_response.txt
169
165
  - spec/fixtures/wirecard/gateway/authorization_request.xml
170
166
  - spec/fixtures/wirecard/gateway/authorization_request_with_address.xml
171
167
  - spec/fixtures/wirecard/gateway/capture_authorization_request.xml
@@ -174,38 +170,50 @@ files:
174
170
  - spec/fixtures/wirecard/gateway/purchase_request_with_3d.xml
175
171
  - spec/fixtures/wirecard/gateway/successful_authorization_response.xml
176
172
  - spec/fixtures/wirecard/gateway/successful_capture_response.xml
177
- - spec/functional/payone/config.yml
178
- - spec/functional/payone/payone_spec.rb
179
173
  - spec/functional/wirecard/config.yml
180
174
  - spec/functional/wirecard/wirecard_spec.rb
181
175
  - spec/spec_helper.rb
182
176
  - spec/unit/gateway_base_spec.rb
183
- - spec/unit/payone/gateway_spec.rb
184
- - spec/unit/payone/response_spec.rb
177
+ - spec/unit/paypal/gateway_spec.rb
185
178
  - spec/unit/wirecard/gateway_spec.rb
186
179
  - spec/unit/wirecard/response_spec.rb
187
180
  homepage: ''
188
181
  licenses: []
182
+ metadata: {}
189
183
  post_install_message:
190
184
  rdoc_options: []
191
185
  require_paths:
192
186
  - lib
193
187
  required_ruby_version: !ruby/object:Gem::Requirement
194
- none: false
195
188
  requirements:
196
- - - ! '>='
189
+ - - ">="
197
190
  - !ruby/object:Gem::Version
198
191
  version: '0'
199
192
  required_rubygems_version: !ruby/object:Gem::Requirement
200
- none: false
201
193
  requirements:
202
- - - ! '>='
194
+ - - ">="
203
195
  - !ruby/object:Gem::Version
204
196
  version: '0'
205
197
  requirements: []
206
198
  rubyforge_project: activepayment
207
- rubygems_version: 1.8.18
199
+ rubygems_version: 2.2.2
208
200
  signing_key:
209
- specification_version: 3
201
+ specification_version: 4
210
202
  summary: CreditCard transactions framework
211
- test_files: []
203
+ test_files:
204
+ - spec/fixtures/activepayment_config.yml
205
+ - spec/fixtures/wirecard/gateway/authorization_request.xml
206
+ - spec/fixtures/wirecard/gateway/authorization_request_with_address.xml
207
+ - spec/fixtures/wirecard/gateway/capture_authorization_request.xml
208
+ - spec/fixtures/wirecard/gateway/enrollment_check_request.xml
209
+ - spec/fixtures/wirecard/gateway/purchase_request.xml
210
+ - spec/fixtures/wirecard/gateway/purchase_request_with_3d.xml
211
+ - spec/fixtures/wirecard/gateway/successful_authorization_response.xml
212
+ - spec/fixtures/wirecard/gateway/successful_capture_response.xml
213
+ - spec/functional/wirecard/config.yml
214
+ - spec/functional/wirecard/wirecard_spec.rb
215
+ - spec/spec_helper.rb
216
+ - spec/unit/gateway_base_spec.rb
217
+ - spec/unit/paypal/gateway_spec.rb
218
+ - spec/unit/wirecard/gateway_spec.rb
219
+ - spec/unit/wirecard/response_spec.rb
data/.rspec DELETED
@@ -1 +0,0 @@
1
- --colour
data/.rvmrc DELETED
@@ -1 +0,0 @@
1
- rvm --create use 1.9.2-p290
@@ -1,44 +0,0 @@
1
- = ActivePayment
2
-
3
- ActivePayment is an abstraction layer for different Payment-Interfaces (XML, JSON)
4
-
5
- == Compatibility
6
-
7
- activepayment is tested against Ruby 1.9.2 .
8
-
9
- {<img src="http://travis-ci.org/aklaiber/activepayment.png" />}[http://travis-ci.org/aklaiber/activepayment]
10
-
11
- == Install
12
-
13
- gem install activepayment
14
-
15
- or add the following line to Gemfile:
16
-
17
- gem 'activepayment'
18
-
19
- and run bundle install from your shell.
20
-
21
- == Examples
22
-
23
- === Config
24
-
25
- ActivePayment::Payone::Gateway.config = {:mid => 123456, :portalid => 1234, :key => 'test', :mode => 'test'}
26
-
27
- === Post request
28
-
29
- gateway = ActivePayment::Payone::Gateway.new
30
-
31
- gateway.authorization
32
- gateway.createaccess
33
- gateway.updateuser(:userid => 123)
34
- gateway.updateaccess(:accessid => 123, :action => 'update')
35
- gateway.threedscheck(:cardpan => "4111111111111111", :exiturl => "http://www.example.com")
36
- gateway.updatereminder(:txid => 123, :reminderlevel => 2)
37
-
38
- == Supported Gateways
39
-
40
- * {Payone}[http://www.payone.de] - DE
41
- * {Wirecard}[http://www.wirecard.com] - DE
42
-
43
-
44
-
@@ -1,76 +0,0 @@
1
- module ActivePayment
2
- module Payone
3
- class Gateway < ActivePayment::Gateway::Base
4
-
5
- class_attribute :mid, :portalid, :key, :mode
6
-
7
- self.gateway_name = "payone"
8
- self.test_url = 'https://api.pay1.de/post-gateway/'
9
- self.live_url = 'https://api.pay1.de/post-gateway/'
10
- self.default_currency = 'EUR'
11
-
12
- private
13
-
14
- def self.define_request(name, options = {})
15
- define_method(name) do |local_params = {}|
16
- post_request(self.send("#{name}_request", local_params))
17
- end
18
- define_method("#{name}_request") do |local_params = {}|
19
- request_method = options[:request_method].blank? ? name : options[:request_method]
20
- build_request(request_method, options) do |params|
21
- params.merge!(local_params)
22
- end
23
- end
24
- end
25
-
26
- public
27
-
28
- define_request :authorization, :obligation_params => [:aid, :amount, :currency, :reference], :default => {:currency => self.default_currency}
29
- define_request :createaccess, :obligation_params => [:aid, :reference]
30
- define_request :updateuser, :obligation_params => [:userid]
31
- define_request :updateaccess, :obligation_params => [:accessid, :action]
32
- define_request :updatereminder, :obligation_params => [:txid]
33
- define_request :threedscheck, :request_method => '3dscheck', :obligation_params => [:aid], :default => {:currency => self.default_currency}
34
-
35
- private
36
-
37
- def add_optional_param(params, name, value = nil)
38
- if value.blank? && self.transaction_params.include?(name) && !self.transaction_params[name].blank?
39
- value = self.transaction_params[name]
40
- end
41
- unless value.blank?
42
- params[name] = value
43
- end
44
- end
45
-
46
- def build_request(method, options = {}, &block)
47
- params = {:mid => self.mid, :portalid => self.portalid, :key => Digest::MD5.new.hexdigest(self.key), :mode => self.mode, :request => method}
48
- params.merge!(options[:default]) if options[:default]
49
- params.merge!(self.transaction_params) if self.transaction_params
50
- yield params
51
- check_params(params, options[:obligation_params]) if options[:obligation_params]
52
- params.to_query
53
- end
54
-
55
- def check_params(params, obligation_params)
56
- obligation_params.each do |obligation_param|
57
- if !params.include?(obligation_param)
58
- raise Exception, "Payone API Parameters not complete: #{obligation_param} not exists"
59
- elsif params[obligation_param].blank?
60
- raise Exception, "Payone API Parameters not complete: #{obligation_param} is nil or empty"
61
- end
62
- end
63
- end
64
-
65
- def post_request(content)
66
- http_connection do |http|
67
- response = http.post(self.url.path, content, {'Content-Type'=> 'application/x-www-form-urlencoded'})
68
- unless response.blank?
69
- return ActivePayment::Payone::Response.new(response.body)
70
- end
71
- end
72
- end
73
-
74
- end
75
- end
76
- end
@@ -1,41 +0,0 @@
1
- module ActivePayment
2
- module Payone
3
- class Response
4
-
5
- def initialize(content)
6
- @content = content
7
- end
8
-
9
- def to_s
10
- @content.to_s
11
- end
12
-
13
- def [](key)
14
- @content.split("\n").each do |param|
15
- param_key, param_value = param.scan(/([^=]+)=(.+)/).first
16
- if param_key.eql?(key.to_s)
17
- return param_value
18
- end
19
- end
20
- end
21
-
22
- def successful?
23
- self.status.eql?('APPROVED') || self.status.eql?('REDIRECT') || self.status.eql?('OK')
24
- end
25
-
26
- def failed?
27
- self.status.eql?('ERROR')
28
- end
29
-
30
- def method_missing(method, *args)
31
- value = self[method]
32
- unless value.blank?
33
- value
34
- else
35
- super
36
- end
37
- end
38
-
39
- end
40
- end
41
- end
@@ -1 +0,0 @@
1
- aid=18270&amount=100&cardcvc2=233&cardexpiredate=1202&cardholder=John+Doe&cardpan=4901170005495083&cardtype=V&clearingtype=cc&currency=EUR&key=0&mid=18268&mode=test&portalid=2226&reference=00000000000000000001&request=authorization
@@ -1,3 +0,0 @@
1
- status=APPROVED
2
- txid=41478385
3
- userid=17036306
@@ -1,3 +0,0 @@
1
- zugang:
2
-
3
- shop:
@@ -1,67 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe ActivePayment::Payone::Gateway do
4
-
5
- let(:amount) { 100 }
6
- let(:gateway) { ActivePayment::Payone::Gateway.new(amount) }
7
-
8
- before(:each) do
9
- gateway.transaction_params = {
10
- :aid => 18270,
11
- :clearingtype => 'cc',
12
- :cardholder => "John Doe",
13
- :cardexpiredate => "#{(Date.today + 1.year).strftime("%y")}02",
14
- :cardtype => "V",
15
- :cardpan => "4111111111111111",
16
- :cardcvc2 => 233,
17
- :lastname => 'Doe',
18
- :firstname => 'John',
19
- :country => 'DE',
20
- :productid => 4893,
21
- :amount => amount,
22
- :reference => 'test'
23
- }
24
- end
25
-
26
- describe "Portal Zugang" do
27
-
28
- let(:payone_response) { gateway.createaccess(:reference => Time.now.to_i + rand(10000)) }
29
- let(:payone_user_id) { payone_response.userid }
30
- let(:payone_access_id) { payone_response.accessid }
31
-
32
- before(:all) do
33
- ActivePayment::Payone::Gateway.config = load_config('payone', 'zugang')
34
- end
35
-
36
- it "should post createaccess request" do
37
- response = gateway.createaccess(:reference => Time.now.to_i + rand(10000))
38
-
39
- response.successful?.should be_true
40
- end
41
-
42
- it "should post updateuser request" do
43
- response = gateway.updateuser(:userid => payone_user_id, :street => "teststr.1")
44
-
45
- response.successful?.should be_true
46
- end
47
-
48
- it "should post updateaccess request" do
49
- response = gateway.updateaccess(:accessid => payone_access_id, :action => 'update')
50
-
51
- response.successful?.should be_true
52
- end
53
- end
54
-
55
- describe "Portal Shop" do
56
- before(:all) do
57
- ActivePayment::Payone::Gateway.config = load_config('payone', 'shop')
58
- end
59
-
60
- it "should post authorization request" do
61
- response = gateway.authorization(:reference => Time.now.to_i + rand(10000))
62
-
63
- response.successful?.should be_true
64
- end
65
- end
66
-
67
- end
@@ -1,136 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ActivePayment::Payone::Gateway do
4
-
5
- let(:amount) { 100 }
6
- let(:gateway) { ActivePayment::Payone::Gateway.new(amount) }
7
-
8
- before(:all) do
9
- ActivePayment::Payone::Gateway.mid = 18268
10
- ActivePayment::Payone::Gateway.portalid = 2226
11
- ActivePayment::Payone::Gateway.key = 'test'
12
- ActivePayment::Payone::Gateway.mode = "test"
13
-
14
- gateway.transaction_params = {
15
- :aid => 18270,
16
- :productid => 123,
17
- :clearingtype => 'cc',
18
- :cardholder => "John Doe",
19
- :cardexpiredate => "1202",
20
- :cardtype => "V",
21
- :cardpan => "4901170005495083",
22
- :cardcvc2 => 233,
23
- :reference => "00000000000000000001",
24
- :amount => amount
25
- }
26
- end
27
-
28
- it "should build authorization request" do
29
- request = gateway.authorization_request
30
-
31
- request.should_not be_blank
32
- request.should include('request=authorization')
33
- request.should include('aid=18270')
34
- request.should include('clearingtype=cc')
35
- request.should include('reference=00000000000000000001')
36
- request.should include('amount=100')
37
- request.should include('currency=EUR')
38
- end
39
-
40
- it "should build createaccess request" do
41
- request = gateway.createaccess_request
42
-
43
- request.should_not be_blank
44
- request.should include('request=createaccess')
45
- request.should include('aid=18270')
46
- request.should include('clearingtype=cc')
47
- request.should include('reference=00000000000000000001')
48
- request.should include('productid=123')
49
- end
50
-
51
- it "should build updateuser request" do
52
- request = gateway.updateuser_request(:userid => 123)
53
-
54
- request.should_not be_blank
55
- request.should include('request=updateuser')
56
- request.should include('userid=123')
57
- end
58
-
59
- it "should build updateaccess request" do
60
- request = gateway.updateaccess_request(:accessid => 123, :action => 'update')
61
-
62
- request.should_not be_blank
63
- request.should include('request=updateaccess')
64
- request.should include('accessid=123')
65
- request.should include('action=update')
66
- end
67
-
68
- it "should build 3dscheck request" do
69
- request = gateway.threedscheck_request(:cardpan => "4111111111111111", :exiturl => "http://www.example.com")
70
-
71
- request.should_not be_blank
72
- request.should include('request=3dscheck')
73
- request.should include('amount=100')
74
- request.should include('currency=EUR')
75
- request.should include('clearingtype=cc')
76
- request.should include('exiturl=http%3A%2F%2Fwww.example.com')
77
- request.should include('cardpan=4111111111111111')
78
- request.should include('cardtype=V')
79
- end
80
-
81
- it "should build updatereminder request" do
82
- request = gateway.updatereminder_request(:txid => 123, :reminderlevel => 2)
83
-
84
- request.should_not be_blank
85
- request.should include('txid=123')
86
- request.should include('reminderlevel=2')
87
- end
88
-
89
- it "should get exception if forget mandatory parameter" do
90
- gateway.transaction_params.delete(:reference)
91
- lambda { gateway.createaccess_request }.should raise_exception(ActivePayment::Exception, "Payone API Parameters not complete: reference not exists")
92
- end
93
-
94
- describe "config" do
95
- it 'should set by methods' do
96
- ActivePayment::Payone::Gateway.mid = 1
97
- ActivePayment::Payone::Gateway.portalid = 2
98
- ActivePayment::Payone::Gateway.key = "test_key"
99
-
100
- ActivePayment::Payone::Gateway.mid.should eql(1)
101
- ActivePayment::Payone::Gateway.portalid.should eql(2)
102
- ActivePayment::Payone::Gateway.key.should eql("test_key")
103
- end
104
-
105
- it 'should set by hash' do
106
- ActivePayment::Payone::Gateway.config = {:mid => 1, :portalid => 2, :key => "test_key"}
107
-
108
- ActivePayment::Payone::Gateway.mid.should eql(1)
109
- ActivePayment::Payone::Gateway.portalid.should eql(2)
110
- ActivePayment::Payone::Gateway.key.should eql("test_key")
111
- end
112
-
113
- it 'should set by block' do
114
- ActivePayment::Payone::Gateway.config do |c|
115
- c.mid = 1
116
- c.portalid = 2
117
- c.key = "test_key"
118
- end
119
-
120
- ActivePayment::Payone::Gateway.mid.should eql(1)
121
- ActivePayment::Payone::Gateway.portalid.should eql(2)
122
- ActivePayment::Payone::Gateway.key.should eql("test_key")
123
- end
124
-
125
- it 'should set by yml' do
126
- File.open("#{FIXTURES_PATH}/activepayment_config.yml") do |config_file|
127
- ActivePayment::Payone::Gateway.config = YAML.load(config_file.read)['development']
128
-
129
- ActivePayment::Payone::Gateway.mid.should eql(1)
130
- ActivePayment::Payone::Gateway.portalid.should eql(2)
131
- ActivePayment::Payone::Gateway.key.should eql("test_key")
132
- end
133
- end
134
- end
135
-
136
- end
@@ -1,21 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe ActivePayment::Payone::Response do
4
-
5
- it "should get params by []" do
6
- File.open("#{FIXTURES_PATH}/payone/gateway/successful_authorization_response.txt") do |file|
7
- response = ActivePayment::Payone::Response.new(file.read)
8
- response[:status].should eql('APPROVED')
9
- end
10
- end
11
-
12
- it "should get params by method" do
13
- File.open("#{FIXTURES_PATH}/payone/gateway/successful_authorization_response.txt") do |file|
14
- response = ActivePayment::Payone::Response.new(file.read)
15
- response.status.should eql('APPROVED')
16
- response.successful?.should be_true
17
- response.failed?.should be_false
18
- end
19
- end
20
-
21
- end