realex 0.3.3 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile CHANGED
@@ -7,5 +7,5 @@ group :development do
7
7
  end
8
8
 
9
9
  group :test do
10
- gem 'rspec'
10
+ gem 'rspec', '~> 2.6.0'
11
11
  end
data/README.md CHANGED
@@ -54,3 +54,9 @@ This is a Ruby library for interfacing with the RealEx API ( http://www.realexpa
54
54
  transaction = RealEx::Recurring::Authorization.new(:amount => 500, :payer => payer, :order_id => order_id, :reference => 'paulcampbell')
55
55
 
56
56
  transaction.authorize!
57
+
58
+ ## Cancelling a recurring payment card ##
59
+
60
+ recurring_card = RealEx::Recurring::Card.new(:payer => payer, :reference => 'paulcampbell')
61
+
62
+ recurring_card.destroy!
data/Rakefile CHANGED
@@ -1,13 +1,13 @@
1
1
  require 'rake'
2
- require 'spec/rake/spectask'
2
+ require 'rspec/core/rake_task'
3
3
 
4
4
  desc 'Default: run specs.'
5
5
  task :default => :spec
6
6
 
7
7
  desc 'Run the specs'
8
- Spec::Rake::SpecTask.new(:spec) do |t|
9
- t.spec_opts = ['--colour --format progress --loadby mtime --reverse']
10
- t.spec_files = FileList['spec/**/*_spec.rb']
8
+ RSpec::Core::RakeTask.new(:spec) do |spec|
9
+ spec.rspec_opts = ['--colour --format progress']
10
+ spec.pattern = 'spec/**/*_spec.rb'
11
11
  end
12
12
 
13
13
  PKG_FILES = FileList[
@@ -25,7 +25,7 @@ begin
25
25
  gemspec.email = "paul@rslw.com"
26
26
  gemspec.homepage = "http://github.com/paulca/realex"
27
27
  gemspec.authors = ["Paul Campbell"]
28
- gemspec.version = "0.3.3"
28
+ gemspec.version = "0.3.5"
29
29
  gemspec.add_dependency 'nokogiri', '~> 1.4'
30
30
  end
31
31
  rescue LoadError
@@ -14,7 +14,7 @@ module RealEx
14
14
  def build_xml(type, &block)
15
15
  xml = Builder::XmlMarkup.new(:indent => 2)
16
16
  xml.instruct!
17
- xml.request(:timestamp => timestamp, :type => type) { |r| block.call(r) }
17
+ xml.request(:type => type, :timestamp => timestamp) { |r| block.call(r) }
18
18
  xml.target!
19
19
  end
20
20
 
@@ -1,7 +1,7 @@
1
1
  module RealEx
2
2
  class Config
3
3
  class << self
4
- attr_accessor :shared_secret, :merchant_id, :account, :refund_password, :currency
4
+ attr_accessor :shared_secret, :merchant_id, :account, :refund_password, :currency, :remote_uri, :real_vault_uri
5
5
  end
6
6
  end
7
7
  end
@@ -3,7 +3,7 @@ module RealEx
3
3
 
4
4
  class Transaction < RealEx::Transaction
5
5
  def authorize!
6
- RealEx::Response.new_from_xml(RealEx::Client.call('/epage-remote-plugins.cgi', to_xml))
6
+ RealEx::Response.new_from_xml(RealEx::Client.call(real_vault_uri, to_xml))
7
7
  end
8
8
  end
9
9
 
@@ -68,10 +68,16 @@ module RealEx
68
68
  end
69
69
 
70
70
  class Card < Transaction
71
- attributes :card, :payer, :update, :reference
71
+ attributes :card, :payer, :update, :reference, :cancel
72
72
 
73
73
  def request_type
74
- @request_type = update == true ? 'eft-update-expiry-date' : 'card-new'
74
+ if cancel
75
+ @request_type = 'card-cancel-card'
76
+ elsif update
77
+ @request_type = 'card-update-card'
78
+ else
79
+ @request_type = 'card-new'
80
+ end
75
81
  end
76
82
 
77
83
  def to_xml
@@ -89,8 +95,10 @@ module RealEx
89
95
 
90
96
  # 20030516181127.yourmerchantid.uniqueid…smithj01.John Smith.498843******9991
91
97
  def hash
92
- if update == true
93
- RealEx::Client.build_hash([RealEx::Client.timestamp, RealEx::Config.merchant_id, payer.reference, reference,card.expiry_date])
98
+ if cancel
99
+ RealEx::Client.build_hash([RealEx::Client.timestamp, RealEx::Config.merchant_id, payer.reference, reference])
100
+ elsif update
101
+ RealEx::Client.build_hash([RealEx::Client.timestamp, RealEx::Config.merchant_id, payer.reference, reference, card.expiry_date, card.number])
94
102
  else
95
103
  RealEx::Client.build_hash([RealEx::Client.timestamp, RealEx::Config.merchant_id, order_id, '', '', payer.reference,card.cardholder_name,card.number])
96
104
  end
@@ -105,6 +113,11 @@ module RealEx
105
113
  authorize!
106
114
  end
107
115
 
116
+ def destroy!
117
+ self.cancel = true
118
+ authorize!
119
+ end
120
+
108
121
  end
109
122
 
110
123
  class Authorization < Transaction
@@ -1,17 +1,19 @@
1
1
  module RealEx
2
2
  class Transaction
3
3
  include Initializer
4
- attributes :card, :amount, :order_id, :currency, :autosettle, :variable_reference
4
+ attributes :card, :amount, :order_id, :currency, :autosettle, :variable_reference, :remote_uri, :real_vault_uri
5
5
  attr_accessor :comments
6
6
  attr_accessor :authcode, :pasref
7
7
 
8
- REQUEST_TYPES = ['auth', 'manual', 'offline', 'tss', 'payer-new', 'payer-edit', 'card-new', 'eft-update-expiry-date']
8
+ REQUEST_TYPES = ['auth', 'manual', 'offline', 'tss', 'payer-new', 'payer-edit', 'card-new', 'card-update-card', 'card-cancel-card']
9
9
 
10
10
  def initialize(hash = {})
11
11
  super(hash)
12
12
  self.comments ||= []
13
13
  self.autosettle ||= true
14
14
  self.currency ||= RealEx::Config.currency || 'EUR'
15
+ self.remote_uri ||= RealEx::Config.remote_uri || '/epage-remote.cgi'
16
+ self.real_vault_uri ||= RealEx::Config.real_vault_uri || '/epage-remote-plugins.cgi'
15
17
  end
16
18
 
17
19
  def request_type
@@ -48,7 +50,7 @@ module RealEx
48
50
  end
49
51
 
50
52
  def authorize!
51
- RealEx::Response.new_from_xml(RealEx::Client.call('/epage-remote.cgi', to_xml))
53
+ RealEx::Response.new_from_xml(RealEx::Client.call(remote_uri, to_xml))
52
54
  end
53
55
 
54
56
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{realex}
8
- s.version = "0.3.3"
8
+ s.version = "0.3.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Paul Campbell"]
12
- s.date = %q{2011-03-10}
11
+ s.authors = [%q{Paul Campbell}]
12
+ s.date = %q{2011-07-27}
13
13
  s.description = %q{A Ruby library to make use of the payments API at http://realexpayments.com}
14
14
  s.email = %q{paul@rslw.com}
15
15
  s.extra_rdoc_files = [
@@ -40,8 +40,8 @@ Gem::Specification.new do |s|
40
40
  "spec/transaction_spec.rb"
41
41
  ]
42
42
  s.homepage = %q{http://github.com/paulca/realex}
43
- s.require_paths = ["lib"]
44
- s.rubygems_version = %q{1.5.0}
43
+ s.require_paths = [%q{lib}]
44
+ s.rubygems_version = %q{1.8.5}
45
45
  s.summary = %q{Ruby interface to http://realexpayments.com}
46
46
  s.test_files = [
47
47
  "spec/address_spec.rb",
@@ -43,9 +43,14 @@ describe "RealEx::Recurring" do
43
43
 
44
44
  it "should create lovely XML for the card update" do
45
45
  @card.update = true
46
- @card.to_xml.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<request type=\"eft-update-expiry-date\" timestamp=\"20090326160218\">\n <merchantid>paul</merchantid>\n <orderid></orderid>\n <account>internet</account>\n <card>\n <ref>billabong</ref>\n <payerref>boom</payerref>\n <number>4111111111111111</number>\n <expdate>0802</expdate>\n <chname>Paul Campbell</chname>\n <type>VISA</type>\n </card>\n <sha1hash>a97a52b7e5afa2980f4298251c2b8b836fd82331</sha1hash>\n</request>\n"
46
+ @card.to_xml.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<request type=\"card-update-card\" timestamp=\"20090326160218\">\n <merchantid>paul</merchantid>\n <orderid></orderid>\n <account>internet</account>\n <card>\n <ref>billabong</ref>\n <payerref>boom</payerref>\n <number>4111111111111111</number>\n <expdate>0802</expdate>\n <chname>Paul Campbell</chname>\n <type>VISA</type>\n </card>\n <sha1hash>cdcb4dd95d0d61d7c86685b1e465796ea55bdcea</sha1hash>\n</request>\n"
47
47
  end
48
-
48
+
49
+ it "should create lovely XML for the card cancel" do
50
+ @card.cancel = true
51
+ @card.to_xml.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<request type=\"card-cancel-card\" timestamp=\"20090326160218\">\n <merchantid>paul</merchantid>\n <orderid></orderid>\n <account>internet</account>\n <card>\n <ref>billabong</ref>\n <payerref>boom</payerref>\n <number>4111111111111111</number>\n <expdate>0802</expdate>\n <chname>Paul Campbell</chname>\n <type>VISA</type>\n </card>\n <sha1hash>d21f7cb5de344456c235d93b5f7c311bb70069ea</sha1hash>\n</request>\n"
52
+ end
53
+
49
54
  it "should create tasty XML for the authorization" do
50
55
  @transaction.to_xml.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<request type=\"receipt-in\" timestamp=\"20090326160218\">\n <merchantid>paul</merchantid>\n <orderid>1234</orderid>\n <account>internet</account>\n <amount currency=\"EUR\">500</amount>\n <payerref>boom</payerref>\n <paymentmethod></paymentmethod>\n <sha1hash>ec3afd1714b4473210c2b1eda0c6675bd13c411b</sha1hash>\n</request>\n"
51
56
  end
@@ -1,9 +1,9 @@
1
1
  begin
2
- require 'spec'
2
+ require 'rspec'
3
3
  rescue LoadError
4
4
  require 'rubygems'
5
5
  gem 'rspec'
6
- require 'spec'
6
+ require 'rspec'
7
7
  end
8
8
 
9
9
  dir = File.dirname(__FILE__)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: realex
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 3
10
- version: 0.3.3
9
+ - 5
10
+ version: 0.3.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Paul Campbell
@@ -15,12 +15,10 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-03-10 00:00:00 +00:00
19
- default_executable:
18
+ date: 2011-07-27 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
- type: :runtime
23
- requirement: &id001 !ruby/object:Gem::Requirement
21
+ version_requirements: &id001 !ruby/object:Gem::Requirement
24
22
  none: false
25
23
  requirements:
26
24
  - - ">="
@@ -29,12 +27,12 @@ dependencies:
29
27
  segments:
30
28
  - 0
31
29
  version: "0"
32
- name: nokogiri
33
- version_requirements: *id001
30
+ type: :runtime
31
+ requirement: *id001
34
32
  prerelease: false
33
+ name: nokogiri
35
34
  - !ruby/object:Gem::Dependency
36
- type: :runtime
37
- requirement: &id002 !ruby/object:Gem::Requirement
35
+ version_requirements: &id002 !ruby/object:Gem::Requirement
38
36
  none: false
39
37
  requirements:
40
38
  - - ">="
@@ -43,12 +41,12 @@ dependencies:
43
41
  segments:
44
42
  - 0
45
43
  version: "0"
46
- name: builder
47
- version_requirements: *id002
44
+ type: :runtime
45
+ requirement: *id002
48
46
  prerelease: false
47
+ name: builder
49
48
  - !ruby/object:Gem::Dependency
50
- type: :development
51
- requirement: &id003 !ruby/object:Gem::Requirement
49
+ version_requirements: &id003 !ruby/object:Gem::Requirement
52
50
  none: false
53
51
  requirements:
54
52
  - - ">="
@@ -57,12 +55,12 @@ dependencies:
57
55
  segments:
58
56
  - 0
59
57
  version: "0"
60
- name: jeweler
61
- version_requirements: *id003
58
+ type: :development
59
+ requirement: *id003
62
60
  prerelease: false
61
+ name: jeweler
63
62
  - !ruby/object:Gem::Dependency
64
- type: :runtime
65
- requirement: &id004 !ruby/object:Gem::Requirement
63
+ version_requirements: &id004 !ruby/object:Gem::Requirement
66
64
  none: false
67
65
  requirements:
68
66
  - - ~>
@@ -72,9 +70,10 @@ dependencies:
72
70
  - 1
73
71
  - 4
74
72
  version: "1.4"
75
- name: nokogiri
76
- version_requirements: *id004
73
+ type: :runtime
74
+ requirement: *id004
77
75
  prerelease: false
76
+ name: nokogiri
78
77
  description: A Ruby library to make use of the payments API at http://realexpayments.com
79
78
  email: paul@rslw.com
80
79
  executables: []
@@ -106,7 +105,6 @@ files:
106
105
  - spec/spec.opts
107
106
  - spec/spec_helper.rb
108
107
  - spec/transaction_spec.rb
109
- has_rdoc: true
110
108
  homepage: http://github.com/paulca/realex
111
109
  licenses: []
112
110
 
@@ -136,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
136
134
  requirements: []
137
135
 
138
136
  rubyforge_project:
139
- rubygems_version: 1.5.0
137
+ rubygems_version: 1.8.5
140
138
  signing_key:
141
139
  specification_version: 3
142
140
  summary: Ruby interface to http://realexpayments.com