activepayment 0.0.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/.rvmrc CHANGED
@@ -1 +1 @@
1
- rvm --create use 1.9.2-p180
1
+ rvm --create use 1.9.2-p290
data/Gemfile CHANGED
@@ -1,4 +1,13 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- # Specify your gem's dependencies in activepayment.gemspec
4
- gemspec
3
+ gem 'activesupport'
4
+ gem 'nokogiri'
5
+ gem 'builder'
6
+ gem 'money'
7
+ gem 'uuid'
8
+
9
+ group :development, :test do
10
+ gem 'rake'
11
+ gem 'rspec'
12
+ gem 'forgery'
13
+ end
data/README.rdoc CHANGED
@@ -1,3 +1,9 @@
1
+ == ActivePayment
2
+
1
3
  == Supported Gateways
2
4
 
3
- * {Wirecard}[http://www.wirecard.com] - DE
5
+ * {Payone}[http://www.payone.de] - DE
6
+ * {Wirecard}[http://www.wirecard.com] - DE
7
+
8
+
9
+
@@ -17,14 +17,4 @@ Gem::Specification.new do |s|
17
17
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
18
  s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
19
19
  s.require_paths = ["lib"]
20
-
21
- s.add_dependency 'activesupport'
22
- s.add_dependency 'nokogiri'
23
- s.add_dependency 'builder'
24
- s.add_dependency 'money'
25
- s.add_dependency 'uuid'
26
-
27
- s.add_development_dependency 'rake'
28
- s.add_development_dependency 'rspec'
29
- s.add_development_dependency 'forgery'
30
20
  end
@@ -0,0 +1,41 @@
1
+ module ActivePayment
2
+ module Gateway
3
+ class Base
4
+
5
+ class_attribute :gateway_name, :test_url, :live_url, :default_currency
6
+
7
+ attr_accessor :transaction_params
8
+
9
+ def self.build(name)
10
+ "ActivePayment::#{name.to_s.classify}::Gateway".constantize
11
+ end
12
+
13
+ def self.config=(config)
14
+ config = config[self.gateway_name] if config.include?(self.gateway_name) && !config[self.gateway_name].blank?
15
+ config.each { |method, value| self.send("#{method}=", value) }
16
+ end
17
+
18
+ def self.config
19
+ yield self
20
+ end
21
+
22
+ def url
23
+ if self.mode.blank? || self.mode.eql?('demo') || self.mode.eql?('test')
24
+ URI.parse self.test_url
25
+ else
26
+ URI.parse self.live_url
27
+ end
28
+ end
29
+
30
+ def http_connection
31
+ http = Net::HTTP.new(self.url.host, self.url.port)
32
+ unless http.blank?
33
+ http.use_ssl = true
34
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
35
+ yield http
36
+ end
37
+ end
38
+
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,75 @@
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 = ''
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 :threedscheck, :request_method => '3dscheck', :obligation_params => [:aid], :default => {:currency => self.default_currency}
33
+
34
+ private
35
+
36
+ def add_optional_param(params, name, value = nil)
37
+ if value.blank? && self.transaction_params.include?(name) && !self.transaction_params[name].blank?
38
+ value = self.transaction_params[name]
39
+ end
40
+ unless value.blank?
41
+ params[name] = value
42
+ end
43
+ end
44
+
45
+ def build_request(method, options = {}, &block)
46
+ params = {:mid => self.mid, :portalid => self.portalid, :key => Digest::MD5.new.hexdigest(self.key), :mode => self.mode, :request => method}
47
+ params.merge!(options[:default]) if options[:default]
48
+ params.merge!(self.transaction_params) if self.transaction_params
49
+ yield params
50
+ check_params(params, options[:obligation_params]) if options[:obligation_params]
51
+ params.to_query
52
+ end
53
+
54
+ def check_params(params, obligation_params)
55
+ obligation_params.each do |obligation_param|
56
+ if !params.include?(obligation_param)
57
+ raise Exception, "Payone API Parameters not complete: #{obligation_param} not exists"
58
+ elsif params[obligation_param].blank?
59
+ raise Exception, "Payone API Parameters not complete: #{obligation_param} is nil or empty"
60
+ end
61
+ end
62
+ end
63
+
64
+ def post_request(content)
65
+ http_connection do |http|
66
+ response = http.post(self.url.path, content, {'Content-Type'=> 'application/x-www-form-urlencoded'})
67
+ unless response.blank?
68
+ return ActivePayment::Payone::Response.new(response.body)
69
+ end
70
+ end
71
+ end
72
+
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,41 @@
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
@@ -4,7 +4,10 @@ module ActivePayment
4
4
  initializer "setup payment" do
5
5
  config_file = Rails.root.join("config", "activepayment.yml")
6
6
  if config_file.file?
7
- ActivePayment::Wirecard::Gateway.config = YAML.load(ERB.new(config_file.read).result)[Rails.env]
7
+ gateways = YAML.load(ERB.new(config_file.read).result)[Rails.env]
8
+ gateways.each do |gateway, config|
9
+ ActivePayment::Gateway::Base.build(gateway).config = config
10
+ end
8
11
  end
9
12
  end
10
13
 
@@ -1,3 +1,3 @@
1
1
  module ActivePayment
2
- VERSION = "0.0.2"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -1,38 +1,20 @@
1
1
  module ActivePayment
2
2
  module Wirecard
3
- class Gateway
3
+ class Gateway < ActivePayment::Gateway::Base
4
4
 
5
- TEST_URL = 'https://c3-test.wirecard.com/secure/ssl-gateway'
6
- LIVE_URL = 'https://c3.wirecard.com/secure/ssl-gateway'
5
+ class_attribute :login, :password, :signature, :mode
7
6
 
8
- attr_accessor :transaction_id, :amount, :transaction_params, :jop_id
7
+ attr_accessor :amount, :transaction_id, :jop_id
9
8
 
10
- class << self
11
- attr_accessor :login, :password, :signature, :mode, :default_currency
12
-
13
- def url
14
- if self.mode.blank? || self.mode.eql?('demo')
15
- TEST_URL
16
- else
17
- LIVE_URL
18
- end
19
- end
20
- end
9
+ self.gateway_name = "wirecard"
10
+ self.test_url = 'https://c3-test.wirecard.com/secure/ssl-gateway'
11
+ self.live_url = 'https://c3.wirecard.com/secure/ssl-gateway'
21
12
 
22
13
  def initialize(transaction_id, amount)
23
14
  @transaction_id = transaction_id
24
15
  @amount = amount
25
16
  end
26
17
 
27
- def self.config=(config)
28
- config = config["wirecard"] if config.include?("wirecard") && !config["wirecard"].blank?
29
- config.each { |method, value| self.send("#{method}=", value) }
30
- end
31
-
32
- def self.config
33
- yield self
34
- end
35
-
36
18
  public
37
19
 
38
20
  def authorization(credit_card)
@@ -148,21 +130,16 @@ module ActivePayment
148
130
  end
149
131
 
150
132
  def post_request(xml)
151
- uri = URI.parse(Gateway.url)
152
- unless uri.nil?
153
- http = Net::HTTP.new(uri.host, 443)
154
- if http
155
- http.use_ssl = true
156
- request = Net::HTTP::Post.new(uri.path)
157
- if request
158
- request.content_type = "text/xml"
159
- request.content_length = xml.size
160
- request.basic_auth(Gateway.login, Gateway.password)
161
- request.body = xml
162
- response = http.request(request)
163
- if response
164
- return Response.new(response.body)
165
- end
133
+ http_connection do |http|
134
+ request = Net::HTTP::Post.new(self.url.path)
135
+ unless request.blank?
136
+ request.content_type = "text/xml"
137
+ request.content_length = xml.size
138
+ request.basic_auth(Gateway.login, Gateway.password)
139
+ request.body = xml
140
+ response = http.request(request)
141
+ if response
142
+ return Response.new(response.body)
166
143
  end
167
144
  end
168
145
  end
@@ -0,0 +1,60 @@
1
+ module ActivePayment
2
+ module Wirecard
3
+ class Response
4
+
5
+ def initialize(xml)
6
+ @doc = Nokogiri::XML(xml)
7
+ if @doc.at_css('WIRECARD_BXML').nil?
8
+ raise ActivePayment::Exception, "No valid response"
9
+ end
10
+ end
11
+
12
+ def to_s
13
+ @doc.to_s
14
+ end
15
+
16
+ def ok?
17
+ return_code.to_i.eql?(0)
18
+ end
19
+
20
+ def [](node_name)
21
+ parse(@doc.at_css(node_name).content)
22
+ end
23
+
24
+ def successful?
25
+ self.function_result.eql?('ACK') || self.function_result.eql?('PENDING')
26
+ end
27
+
28
+ def failed?
29
+ self.function_result.eql?('NOK')
30
+ end
31
+
32
+ public
33
+
34
+ def method_missing(method, *args)
35
+ node_name = method.to_node_name
36
+ unless node_name.blank?
37
+ node = @doc.at_css(node_name)
38
+ unless node.nil?
39
+ parse(@doc.at_css(node_name).content)
40
+ else
41
+ super
42
+ end
43
+ else
44
+ super
45
+ end
46
+ end
47
+
48
+ private
49
+
50
+ def parse(value)
51
+ begin
52
+ return Integer(value)
53
+ rescue
54
+ return value
55
+ end
56
+ end
57
+
58
+ end
59
+ end
60
+ end
data/lib/activepayment.rb CHANGED
@@ -3,6 +3,7 @@ require "bundler/setup"
3
3
  require 'uri'
4
4
  require 'net/http'
5
5
  require 'net/https'
6
+ require 'digest/md5'
6
7
 
7
8
  require "active_support/core_ext"
8
9
  require "builder"
@@ -12,9 +13,14 @@ require "uuid"
12
13
 
13
14
  require "activepayment/railtie" if defined?(Rails)
14
15
  require "activepayment/version"
15
- require "activepayment/response"
16
+ require "activepayment/gateway_base"
17
+
18
+ require "activepayment/payone/gateway"
16
19
  require "activepayment/wirecard/gateway"
17
20
 
21
+ require "activepayment/payone/response"
22
+ require "activepayment/wirecard/response"
23
+
18
24
  module ActivePayment
19
25
  class Exception < RuntimeError
20
26
  end
@@ -4,6 +4,11 @@ development:
4
4
  password: TestXAPTERR
5
5
  signature: 56504
6
6
 
7
+ payone:
8
+ mid: 1
9
+ portalid: 2
10
+ key: test_key
11
+
7
12
  test:
8
13
 
9
14
  production:
@@ -0,0 +1 @@
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
@@ -0,0 +1,3 @@
1
+ status=APPROVED
2
+ txid=41478385
3
+ userid=17036306
@@ -0,0 +1,75 @@
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.mid = 18268
34
+ ActivePayment::Payone::Gateway.portalid = 2226
35
+ ActivePayment::Payone::Gateway.key = 'test'
36
+ ActivePayment::Payone::Gateway.mode = 'test'
37
+ ActivePayment::Payone::Gateway.default_currency = 'EUR'
38
+ end
39
+
40
+ it "should post createaccess request" do
41
+ response = gateway.createaccess(:reference => Time.now.to_i + rand(10000))
42
+
43
+ response.successful?.should be_true
44
+ end
45
+
46
+ it "should post updateuser request" do
47
+ response = gateway.updateuser(:userid => payone_user_id, :street => "teststr.1")
48
+
49
+ response.successful?.should be_true
50
+ end
51
+
52
+ it "should post updateaccess request" do
53
+ response = gateway.updateaccess(:accessid => payone_access_id, :action => 'update')
54
+
55
+ response.successful?.should be_true
56
+ end
57
+ end
58
+
59
+ describe "Portal Shop" do
60
+ before(:all) do
61
+ ActivePayment::Payone::Gateway.mid = 18268
62
+ ActivePayment::Payone::Gateway.portalid = 2013125
63
+ ActivePayment::Payone::Gateway.key = 'test'
64
+ ActivePayment::Payone::Gateway.mode = 'test'
65
+ ActivePayment::Payone::Gateway.default_currency = 'EUR'
66
+ end
67
+
68
+ it "should post authorization request" do
69
+ response = gateway.authorization(:reference => Time.now.to_i + rand(10000))
70
+
71
+ response.successful?.should be_true
72
+ end
73
+ end
74
+
75
+ end
@@ -0,0 +1,5 @@
1
+ require "spec_helper"
2
+
3
+ describe ActivePayment::Gateway::Base do
4
+
5
+ end
@@ -0,0 +1,128 @@
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 get exception if forget mandatory parameter" do
82
+ gateway.transaction_params.delete(:reference)
83
+ lambda { gateway.createaccess_request }.should raise_exception(ActivePayment::Exception, "Payone API Parameters not complete: reference not exists")
84
+ end
85
+
86
+ describe "config" do
87
+ it 'should set by methods' do
88
+ ActivePayment::Payone::Gateway.mid = 1
89
+ ActivePayment::Payone::Gateway.portalid = 2
90
+ ActivePayment::Payone::Gateway.key = "test_key"
91
+
92
+ ActivePayment::Payone::Gateway.mid.should eql(1)
93
+ ActivePayment::Payone::Gateway.portalid.should eql(2)
94
+ ActivePayment::Payone::Gateway.key.should eql("test_key")
95
+ end
96
+
97
+ it 'should set by hash' do
98
+ ActivePayment::Payone::Gateway.config = {:mid => 1, :portalid => 2, :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 block' do
106
+ ActivePayment::Payone::Gateway.config do |c|
107
+ c.mid = 1
108
+ c.portalid = 2
109
+ c.key = "test_key"
110
+ end
111
+
112
+ ActivePayment::Payone::Gateway.mid.should eql(1)
113
+ ActivePayment::Payone::Gateway.portalid.should eql(2)
114
+ ActivePayment::Payone::Gateway.key.should eql("test_key")
115
+ end
116
+
117
+ it 'should set by yml' do
118
+ File.open("#{FIXTURES_PATH}/activepayment_config.yml") do |config_file|
119
+ ActivePayment::Payone::Gateway.config = YAML.load(config_file.read)['development']
120
+
121
+ ActivePayment::Payone::Gateway.mid.should eql(1)
122
+ ActivePayment::Payone::Gateway.portalid.should eql(2)
123
+ ActivePayment::Payone::Gateway.key.should eql("test_key")
124
+ end
125
+ end
126
+ end
127
+
128
+ end
@@ -0,0 +1,21 @@
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
@@ -1,10 +1,10 @@
1
1
  require "spec_helper"
2
2
 
3
- describe ActivePayment::Response do
3
+ describe ActivePayment::Wirecard::Response do
4
4
 
5
5
  it "should parse response" do
6
6
  File.open("#{FIXTURES_PATH}/wirecard/gateway/successful_authorization_response.xml") do |file|
7
- response = ActivePayment::Response.new(file)
7
+ response = ActivePayment::Wirecard::Response.new(file)
8
8
  response.job_id.should eql('test dummy data')
9
9
  response['GuWID'].should eql('C822580121385121429927')
10
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activepayment
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,97 +9,9 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-07-12 00:00:00.000000000 +02:00
12
+ date: 2011-08-30 00:00:00.000000000 +02:00
13
13
  default_executable:
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: activesupport
17
- requirement: &6839600 !ruby/object:Gem::Requirement
18
- none: false
19
- requirements:
20
- - - ! '>='
21
- - !ruby/object:Gem::Version
22
- version: '0'
23
- type: :runtime
24
- prerelease: false
25
- version_requirements: *6839600
26
- - !ruby/object:Gem::Dependency
27
- name: nokogiri
28
- requirement: &6839180 !ruby/object:Gem::Requirement
29
- none: false
30
- requirements:
31
- - - ! '>='
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: *6839180
37
- - !ruby/object:Gem::Dependency
38
- name: builder
39
- requirement: &6838760 !ruby/object:Gem::Requirement
40
- none: false
41
- requirements:
42
- - - ! '>='
43
- - !ruby/object:Gem::Version
44
- version: '0'
45
- type: :runtime
46
- prerelease: false
47
- version_requirements: *6838760
48
- - !ruby/object:Gem::Dependency
49
- name: money
50
- requirement: &6838300 !ruby/object:Gem::Requirement
51
- none: false
52
- requirements:
53
- - - ! '>='
54
- - !ruby/object:Gem::Version
55
- version: '0'
56
- type: :runtime
57
- prerelease: false
58
- version_requirements: *6838300
59
- - !ruby/object:Gem::Dependency
60
- name: uuid
61
- requirement: &6837880 !ruby/object:Gem::Requirement
62
- none: false
63
- requirements:
64
- - - ! '>='
65
- - !ruby/object:Gem::Version
66
- version: '0'
67
- type: :runtime
68
- prerelease: false
69
- version_requirements: *6837880
70
- - !ruby/object:Gem::Dependency
71
- name: rake
72
- requirement: &6834880 !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '0'
78
- type: :development
79
- prerelease: false
80
- version_requirements: *6834880
81
- - !ruby/object:Gem::Dependency
82
- name: rspec
83
- requirement: &6834460 !ruby/object:Gem::Requirement
84
- none: false
85
- requirements:
86
- - - ! '>='
87
- - !ruby/object:Gem::Version
88
- version: '0'
89
- type: :development
90
- prerelease: false
91
- version_requirements: *6834460
92
- - !ruby/object:Gem::Dependency
93
- name: forgery
94
- requirement: &6834040 !ruby/object:Gem::Requirement
95
- none: false
96
- requirements:
97
- - - ! '>='
98
- - !ruby/object:Gem::Version
99
- version: '0'
100
- type: :development
101
- prerelease: false
102
- version_requirements: *6834040
14
+ dependencies: []
103
15
  description: ActivePayment is an abstraction layer for different Payment-Interfaces
104
16
  (XML, JSON)
105
17
  email:
@@ -116,11 +28,16 @@ files:
116
28
  - Rakefile
117
29
  - activepayment.gemspec
118
30
  - lib/activepayment.rb
31
+ - lib/activepayment/gateway_base.rb
32
+ - lib/activepayment/payone/gateway.rb
33
+ - lib/activepayment/payone/response.rb
119
34
  - lib/activepayment/railtie.rb
120
- - lib/activepayment/response.rb
121
35
  - lib/activepayment/version.rb
122
36
  - lib/activepayment/wirecard/gateway.rb
37
+ - lib/activepayment/wirecard/response.rb
123
38
  - spec/fixtures/activepayment_config.yml
39
+ - spec/fixtures/payone/gateway/authorization_request.txt
40
+ - spec/fixtures/payone/gateway/successful_authorization_response.txt
124
41
  - spec/fixtures/wirecard/gateway/authorization_request.xml
125
42
  - spec/fixtures/wirecard/gateway/authorization_request_with_address.xml
126
43
  - spec/fixtures/wirecard/gateway/capture_authorization_request.xml
@@ -129,10 +46,14 @@ files:
129
46
  - spec/fixtures/wirecard/gateway/purchase_request_with_3d.xml
130
47
  - spec/fixtures/wirecard/gateway/successful_authorization_response.xml
131
48
  - spec/fixtures/wirecard/gateway/successful_capture_response.xml
49
+ - spec/functional/payone_spec.rb
132
50
  - spec/functional/wirecard_spec.rb
133
51
  - spec/spec_helper.rb
134
- - spec/unit/response_spec.rb
52
+ - spec/unit/gateway_base_spec.rb
53
+ - spec/unit/payone/gateway_spec.rb
54
+ - spec/unit/payone/response_spec.rb
135
55
  - spec/unit/wirecard/gateway_spec.rb
56
+ - spec/unit/wirecard/response_spec.rb
136
57
  has_rdoc: true
137
58
  homepage: ''
138
59
  licenses: []
@@ -1,58 +0,0 @@
1
- module ActivePayment
2
- class Response
3
-
4
- def initialize(xml)
5
- @doc = Nokogiri::XML(xml)
6
- if @doc.at_css('WIRECARD_BXML').nil?
7
- raise ActivePayment::Exception, "No valid response"
8
- end
9
- end
10
-
11
- def to_s
12
- @doc.to_s
13
- end
14
-
15
- def ok?
16
- return_code.to_i.eql?(0)
17
- end
18
-
19
- def [](node_name)
20
- parse(@doc.at_css(node_name).content)
21
- end
22
-
23
- def successful?
24
- self.function_result.eql?('ACK') || self.function_result.eql?('PENDING')
25
- end
26
-
27
- def failed?
28
- self.function_result.eql?('NOK')
29
- end
30
-
31
- public
32
-
33
- def method_missing(method, *args)
34
- node_name = method.to_node_name
35
- unless node_name.blank?
36
- node = @doc.at_css(node_name)
37
- unless node.nil?
38
- parse(@doc.at_css(node_name).content)
39
- else
40
- super
41
- end
42
- else
43
- super
44
- end
45
- end
46
-
47
- private
48
-
49
- def parse(value)
50
- begin
51
- return Integer(value)
52
- rescue
53
- return value
54
- end
55
- end
56
-
57
- end
58
- end