netaxept 0.1.0 → 0.2.0
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/.gitignore +2 -1
- data/README.md +52 -3
- data/lib/netaxept.rb +1 -0
- data/lib/netaxept/responses/annul_response.rb +7 -0
- data/lib/netaxept/service.rb +11 -0
- data/lib/netaxept/version.rb +1 -1
- data/netaxept.gemspec +2 -3
- data/spec/netaxept/service_spec.rb +56 -56
- data/spec/netaxept_credentials.rb +2 -2
- data/spec/spec_helper.rb +3 -12
- data/spec/support/matchers/response_success_matcher.rb +47 -0
- metadata +39 -35
- data/spec/cassettes/Netaxept_Service/_auth.yml +0 -60
- data/spec/cassettes/Netaxept_Service/_capture.yml +0 -60
- data/spec/cassettes/Netaxept_Service/_credit.yml +0 -294
- data/spec/cassettes/Netaxept_Service/_register.yml +0 -116
- data/spec/cassettes/Netaxept_Service/_sale.yml +0 -234
- data/spec/support/responses/register_response.xml +0 -4
- data/spec/support/responses/register_without_order_id_response.xml +0 -6
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,14 +1,63 @@
|
|
1
|
-
[](http://travis-ci.org/Hakon/netaxept)
|
2
|
-
|
3
1
|
Installation
|
4
2
|
-----------
|
3
|
+
run
|
5
4
|
|
6
5
|
gem install netaxept
|
7
6
|
|
7
|
+
or include in your _Gemfile_:
|
8
|
+
|
9
|
+
gem 'netaxept'
|
10
|
+
|
11
|
+
Usage
|
12
|
+
-----
|
13
|
+
|
14
|
+
First step is to tell Netaxept your credentials and the desired mode:
|
15
|
+
|
16
|
+
Netaxept::Service.authenticate <merchant id>, <token>
|
17
|
+
Netaxept::Service.environment = :test|:production
|
18
|
+
|
19
|
+
To interact with Netaxept you need to create an instance of `Netaxept::Service`:
|
20
|
+
|
21
|
+
service = Netaxept::Service.new
|
22
|
+
|
23
|
+
### General
|
24
|
+
|
25
|
+
Every request returns a `Netaxept::Response` object, which has a `success?` method.
|
26
|
+
In case of an error you can call `errors`, which gives you a list of `Netaxept::ErrorMessage`s
|
27
|
+
(each with a `message`, `code`, `source` and `text`).
|
28
|
+
|
29
|
+
### Off-site payment workflow
|
30
|
+
|
31
|
+
The following applies for the _Nets hosted_ service type where the user is redirect to the
|
32
|
+
Netaxept site to enter her payment details (see the
|
33
|
+
[Netaxept docs](http://www.betalingsterminal.no/Netthandel-forside/Teknisk-veiledning/Overview/)
|
34
|
+
for details).
|
35
|
+
|
36
|
+
#### Registering a payment
|
37
|
+
|
38
|
+
service.register <amount in cents>, <order number>, <options>
|
39
|
+
|
40
|
+
Required options are `CurrencyCode` (3 letter ISO code) and `redirectUrl`.
|
41
|
+
|
42
|
+
On success the response object gives you a `transaction_id`.
|
43
|
+
You pass that to `Netaxept::Service.terminal_url(<transaction id>)` to get the URL for redirecting the user.
|
44
|
+
|
45
|
+
For details on the options see http://www.betalingsterminal.no/Netthandel-forside/Teknisk-veiledning/API/Register/
|
46
|
+
|
47
|
+
#### Completing a payment
|
48
|
+
|
49
|
+
After the user has authorized the payment on the Netaxept site he is redirected to the `redirectUrl` you provided. Netaxept adds a `resonseCode` and `transactionId` parameter to the URL. To finalize the payment you call `sale` on the service.
|
50
|
+
|
51
|
+
service.sale <transaction id>, <amount in cents>
|
52
|
+
|
53
|
+
The response is a `Responses::SaleResponse` which only has the `success?` and `errors` methods mentioned under _General_.
|
54
|
+
|
55
|
+
Congratulations, you have processed a payment.
|
56
|
+
|
8
57
|
Testing
|
9
58
|
-------
|
10
59
|
|
11
60
|
To run the tests:
|
12
61
|
|
13
62
|
$ bundle
|
14
|
-
$ rake
|
63
|
+
$ rake MERCHANT_ID=<your merchant id> NETAXEPT_TOKEN=<your token>
|
data/lib/netaxept.rb
CHANGED
data/lib/netaxept/service.rb
CHANGED
@@ -113,6 +113,17 @@ module Netaxept
|
|
113
113
|
Responses::CreditResponse.new(self.class.get("/Netaxept/Process.aspx", params).parsed_response)
|
114
114
|
end
|
115
115
|
|
116
|
+
def annul(transaction_id)
|
117
|
+
params = {
|
118
|
+
:query => {
|
119
|
+
:transactionId => transaction_id,
|
120
|
+
:operation => "ANNUL"
|
121
|
+
}
|
122
|
+
}
|
123
|
+
|
124
|
+
Responses::AnnulResponse.new(self.class.get("/Netaxept/Process.aspx", params).parsed_response)
|
125
|
+
end
|
126
|
+
|
116
127
|
##
|
117
128
|
# The terminal url for a given transaction id
|
118
129
|
|
data/lib/netaxept/version.rb
CHANGED
data/netaxept.gemspec
CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.version = Netaxept::VERSION
|
8
8
|
s.authors = ["Håkon Lerring", "Theodor Tonum"]
|
9
9
|
s.email = ["hakon@powow.no", "theodor@tonum.no"]
|
10
|
-
s.homepage = ""
|
10
|
+
s.homepage = "https://github.com/Hakon/netaxept"
|
11
11
|
s.summary = %q{A gem for speaking to Nets Netaxept credit card payment service}
|
12
12
|
s.description = %q{This gem simplifies the comunication with the netaxept service significantly. Right now it only supports register and sale, more is to come.}
|
13
13
|
s.has_rdoc = true
|
@@ -19,8 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.add_development_dependency "rake"
|
20
20
|
s.add_development_dependency "rspec"
|
21
21
|
s.add_development_dependency "rdoc"
|
22
|
-
s.add_development_dependency "
|
23
|
-
s.add_development_dependency "fakeweb"
|
22
|
+
s.add_development_dependency "mechanize"
|
24
23
|
|
25
24
|
s.files = `git ls-files`.split("\n")
|
26
25
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
@@ -7,26 +7,26 @@ describe Netaxept::Service do
|
|
7
7
|
describe ".authenticate" do
|
8
8
|
it "sets merchant id and token as default params" do
|
9
9
|
Netaxept::Service.should_receive(:default_params).with({
|
10
|
-
:MerchantId =>
|
11
|
-
:token =>
|
10
|
+
:MerchantId => NETAXEPT_TEST_MERCHANT_ID,
|
11
|
+
:token => NETAXEPT_TEST_TOKEN
|
12
12
|
})
|
13
13
|
|
14
|
-
Netaxept::Service.authenticate(
|
14
|
+
Netaxept::Service.authenticate(NETAXEPT_TEST_MERCHANT_ID, NETAXEPT_TEST_TOKEN)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
18
|
describe ".environment" do
|
19
|
-
it "sets the base_uri to https://epayment-test.bbs.no/ when set to test" do
|
20
|
-
Netaxept::Service.should_receive(:base_uri).with "https://epayment-test.bbs.no/"
|
21
|
-
|
22
|
-
Netaxept::Service.environment = :test
|
23
|
-
end
|
24
|
-
|
25
19
|
it "sets the base_uri to https://epayment.bbs.no/ when set to production" do
|
26
20
|
Netaxept::Service.should_receive(:base_uri).with "https://epayment.bbs.no/"
|
27
21
|
|
28
22
|
Netaxept::Service.environment = :production
|
29
23
|
end
|
24
|
+
|
25
|
+
it "sets the base_uri to https://epayment-test.bbs.no/ when set to test" do
|
26
|
+
Netaxept::Service.should_receive(:base_uri).with "https://epayment-test.bbs.no/"
|
27
|
+
|
28
|
+
Netaxept::Service.environment = :test
|
29
|
+
end
|
30
30
|
end
|
31
31
|
|
32
32
|
describe ".terminal_url" do
|
@@ -46,14 +46,13 @@ describe Netaxept::Service do
|
|
46
46
|
end
|
47
47
|
|
48
48
|
describe ".register" do
|
49
|
-
use_vcr_cassette
|
50
49
|
|
51
50
|
describe "a valid request" do
|
52
51
|
|
53
52
|
let(:response) { service.register(20100, 12, :redirectUrl => "http://localhost:3000/order/1/return") }
|
54
53
|
|
55
54
|
it "is successful" do
|
56
|
-
response.
|
55
|
+
response.should be_successful
|
57
56
|
end
|
58
57
|
|
59
58
|
it "has a transaction_id" do
|
@@ -67,87 +66,88 @@ describe Netaxept::Service do
|
|
67
66
|
let(:response) { service.register(0, 12, :redirectUrl => "http://localhost:3000/order/1/return") }
|
68
67
|
|
69
68
|
it "is not a success" do
|
70
|
-
response.
|
69
|
+
response.should fail.with_message("Transaction amount must be greater than zero.")
|
71
70
|
end
|
72
71
|
|
73
72
|
it "does not have a transaction id" do
|
74
73
|
response.transaction_id.should be_nil
|
75
74
|
end
|
76
75
|
|
77
|
-
it "has an error message" do
|
78
|
-
response.errors.first.message.should == "Transaction amount must be greater than zero."
|
79
|
-
end
|
80
|
-
|
81
76
|
end
|
82
77
|
|
83
78
|
end
|
84
79
|
|
85
|
-
|
86
|
-
use_vcr_cassette
|
80
|
+
context "with a transaction id" do
|
87
81
|
|
88
82
|
let(:transaction_id) { service.register(20100, 12, :redirectUrl => "http://localhost:3000/order/1/return").transaction_id }
|
83
|
+
|
84
|
+
before do
|
85
|
+
|
86
|
+
# Register some card data with the transaction.
|
87
|
+
url = Netaxept::Service.terminal_url(transaction_id)
|
88
|
+
mechanic = Mechanize.new
|
89
|
+
mechanic.agent.http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
90
|
+
mechanic.get(url) do |page|
|
91
|
+
form = page.form_with(:name => "form1")
|
92
|
+
cc_form = form.click_button(form.button_with(:value => /^Neste/)).form_with(:name => "form1") do |form|
|
93
|
+
|
94
|
+
form["ctl10$cardNo"] = "4925000000000004"
|
95
|
+
form.field_with(:id => "month").options.last.tick
|
96
|
+
form.field_with(:id => "year").options.last.tick
|
97
|
+
form["ctl10$securityCode"] = "111"
|
98
|
+
|
99
|
+
end
|
100
|
+
mechanic.redirect_ok = false
|
101
|
+
cc_form.click_button(cc_form.button_with(:id => "okButton"))
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
89
105
|
|
90
|
-
describe "a valid request" do
|
91
|
-
|
92
|
-
let(:response) { service.sale(transaction_id, 20100) }
|
93
|
-
|
106
|
+
describe "a valid sale request" do
|
107
|
+
|
94
108
|
it "is a success" do
|
95
|
-
response.
|
109
|
+
response = service.sale(transaction_id, 20100)
|
110
|
+
response.should be_successful
|
96
111
|
end
|
97
112
|
|
98
113
|
end
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
describe ".auth" do
|
103
|
-
use_vcr_cassette
|
104
|
-
|
105
|
-
let(:transaction_id) { service.register(20100, 12, :redirectUrl => "http://localhost:3000/order/1/return").transaction_id }
|
106
|
-
|
107
|
-
describe "a valid request" do
|
108
|
-
|
109
|
-
let(:response) { service.auth(transaction_id, 20100) }
|
114
|
+
|
115
|
+
describe "a valid auth request" do
|
110
116
|
|
111
117
|
it "is a success" do
|
112
|
-
response.
|
118
|
+
response = service.auth(transaction_id, 20100)
|
119
|
+
response.should be_successful
|
113
120
|
end
|
114
121
|
|
115
122
|
end
|
116
|
-
end
|
117
123
|
|
118
|
-
|
119
|
-
use_vcr_cassette
|
120
|
-
|
121
|
-
let(:transaction_id) { service.register(20100, 12, :redirectUrl => "http://localhost:3000/order/1/return").transaction_id }
|
122
|
-
|
123
|
-
describe "a valid request" do
|
124
|
-
|
125
|
-
let(:response) { service.capture(transaction_id, 20100) }
|
124
|
+
describe "a valid capture request" do
|
126
125
|
|
127
126
|
it "is a success" do
|
128
|
-
|
127
|
+
service.auth(transaction_id, 20100)
|
128
|
+
response = service.capture(transaction_id, 20100)
|
129
|
+
response.should be_successful
|
129
130
|
end
|
130
131
|
|
131
132
|
end
|
132
|
-
end
|
133
133
|
|
134
|
-
|
135
|
-
use_vcr_cassette
|
136
|
-
|
137
|
-
let(:transaction_id) { service.register(20100, 12, :redirectUrl => "http://localhost:3000/order/1/return").transaction_id }
|
134
|
+
describe "a valid credit request" do
|
138
135
|
|
139
|
-
|
136
|
+
it "is a success" do
|
137
|
+
service.sale(transaction_id, 20100)
|
140
138
|
|
141
|
-
|
142
|
-
service.auth(transaction_id, 20100)
|
143
|
-
service.capture(transaction_id, 20100)
|
139
|
+
service.credit(transaction_id, 20100).should be_successful
|
144
140
|
end
|
141
|
+
end
|
142
|
+
|
143
|
+
describe "a valid annul request" do
|
145
144
|
|
146
145
|
it "is a success" do
|
147
|
-
service.
|
146
|
+
service.auth(transaction_id, 20100)
|
147
|
+
service.annul(transaction_id).should be_successful
|
148
148
|
end
|
149
149
|
end
|
150
150
|
|
151
|
+
|
151
152
|
end
|
152
|
-
|
153
153
|
end
|
@@ -1,2 +1,2 @@
|
|
1
|
-
NETAXEPT_TEST_MERCHANT_ID = "
|
2
|
-
NETAXEPT_TEST_TOKEN = "
|
1
|
+
NETAXEPT_TEST_MERCHANT_ID = ENV["MERCHANT_ID"]
|
2
|
+
NETAXEPT_TEST_TOKEN = ENV["NETAXEPT_TOKEN"]
|
data/spec/spec_helper.rb
CHANGED
@@ -1,22 +1,13 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'bundler/setup'
|
3
3
|
|
4
|
-
require 'vcr'
|
5
|
-
require "fakeweb"
|
6
|
-
|
7
4
|
require 'netaxept' # and any other gems you need
|
8
5
|
require "netaxept_credentials"
|
9
6
|
|
10
|
-
|
11
|
-
c.cassette_library_dir = 'spec/cassettes'
|
12
|
-
c.stub_with :fakeweb
|
13
|
-
c.default_cassette_options = { :record => :new_episodes }
|
14
|
-
end
|
7
|
+
require "mechanize"
|
15
8
|
|
16
|
-
|
17
|
-
|
18
|
-
config.extend VCR::RSpec::Macros
|
19
|
-
|
9
|
+
Dir.glob(File.join(File.dirname(__FILE__),"support/matchers/*_matcher.rb")) do |file|
|
10
|
+
require file
|
20
11
|
end
|
21
12
|
|
22
13
|
Netaxept::Service.authenticate(NETAXEPT_TEST_MERCHANT_ID, NETAXEPT_TEST_TOKEN)
|
@@ -0,0 +1,47 @@
|
|
1
|
+
RSpec::Matchers.define :be_successful do
|
2
|
+
|
3
|
+
match do |response|
|
4
|
+
response.success?
|
5
|
+
end
|
6
|
+
|
7
|
+
failure_message_for_should do |response|
|
8
|
+
errors = response.errors.map(&:message).join(", ")
|
9
|
+
"#{response} should be successful, got error(s): #{errors}"
|
10
|
+
end
|
11
|
+
|
12
|
+
failure_message_for_should_not do |response|
|
13
|
+
"#{response} should not be successful"
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
RSpec::Matchers.define :fail do
|
19
|
+
chain :with_message do |message|
|
20
|
+
@message = message
|
21
|
+
end
|
22
|
+
|
23
|
+
match do |response|
|
24
|
+
@failure = !response.success?
|
25
|
+
|
26
|
+
if(@message)
|
27
|
+
@failure && response.errors.map(&:message).include?(@message)
|
28
|
+
else
|
29
|
+
@failure
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
failure_message_for_should do |response|
|
35
|
+
errors = response.errors.map(&:message).join(", ")
|
36
|
+
if(@message)
|
37
|
+
"#{response} should have error message: #{@message}"
|
38
|
+
else
|
39
|
+
"#{response} should not be successful"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
failure_message_for_should_not do |response|
|
44
|
+
"#{response} should be successful"
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: netaxept
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-12-21 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: httparty
|
17
|
-
requirement:
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,15 @@ dependencies:
|
|
22
22
|
version: '0.7'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements:
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ~>
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '0.7'
|
26
31
|
- !ruby/object:Gem::Dependency
|
27
32
|
name: rake
|
28
|
-
requirement:
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
29
34
|
none: false
|
30
35
|
requirements:
|
31
36
|
- - ! '>='
|
@@ -33,10 +38,15 @@ dependencies:
|
|
33
38
|
version: '0'
|
34
39
|
type: :development
|
35
40
|
prerelease: false
|
36
|
-
version_requirements:
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
37
47
|
- !ruby/object:Gem::Dependency
|
38
48
|
name: rspec
|
39
|
-
requirement:
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
40
50
|
none: false
|
41
51
|
requirements:
|
42
52
|
- - ! '>='
|
@@ -44,10 +54,15 @@ dependencies:
|
|
44
54
|
version: '0'
|
45
55
|
type: :development
|
46
56
|
prerelease: false
|
47
|
-
version_requirements:
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
48
63
|
- !ruby/object:Gem::Dependency
|
49
64
|
name: rdoc
|
50
|
-
requirement:
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
51
66
|
none: false
|
52
67
|
requirements:
|
53
68
|
- - ! '>='
|
@@ -55,21 +70,15 @@ dependencies:
|
|
55
70
|
version: '0'
|
56
71
|
type: :development
|
57
72
|
prerelease: false
|
58
|
-
version_requirements:
|
59
|
-
- !ruby/object:Gem::Dependency
|
60
|
-
name: vcr
|
61
|
-
requirement: &70230869080020 !ruby/object:Gem::Requirement
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
62
74
|
none: false
|
63
75
|
requirements:
|
64
76
|
- - ! '>='
|
65
77
|
- !ruby/object:Gem::Version
|
66
78
|
version: '0'
|
67
|
-
type: :development
|
68
|
-
prerelease: false
|
69
|
-
version_requirements: *70230869080020
|
70
79
|
- !ruby/object:Gem::Dependency
|
71
|
-
name:
|
72
|
-
requirement:
|
80
|
+
name: mechanize
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
73
82
|
none: false
|
74
83
|
requirements:
|
75
84
|
- - ! '>='
|
@@ -77,7 +86,12 @@ dependencies:
|
|
77
86
|
version: '0'
|
78
87
|
type: :development
|
79
88
|
prerelease: false
|
80
|
-
version_requirements:
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
81
95
|
description: This gem simplifies the comunication with the netaxept service significantly.
|
82
96
|
Right now it only supports register and sale, more is to come.
|
83
97
|
email:
|
@@ -95,6 +109,7 @@ files:
|
|
95
109
|
- Rakefile
|
96
110
|
- lib/netaxept.rb
|
97
111
|
- lib/netaxept/error_message.rb
|
112
|
+
- lib/netaxept/responses/annul_response.rb
|
98
113
|
- lib/netaxept/responses/auth_response.rb
|
99
114
|
- lib/netaxept/responses/capture_response.rb
|
100
115
|
- lib/netaxept/responses/credit_response.rb
|
@@ -104,17 +119,11 @@ files:
|
|
104
119
|
- lib/netaxept/service.rb
|
105
120
|
- lib/netaxept/version.rb
|
106
121
|
- netaxept.gemspec
|
107
|
-
- spec/cassettes/Netaxept_Service/_auth.yml
|
108
|
-
- spec/cassettes/Netaxept_Service/_capture.yml
|
109
|
-
- spec/cassettes/Netaxept_Service/_credit.yml
|
110
|
-
- spec/cassettes/Netaxept_Service/_register.yml
|
111
|
-
- spec/cassettes/Netaxept_Service/_sale.yml
|
112
122
|
- spec/netaxept/service_spec.rb
|
113
123
|
- spec/netaxept_credentials.rb
|
114
124
|
- spec/spec_helper.rb
|
115
|
-
- spec/support/
|
116
|
-
|
117
|
-
homepage: ''
|
125
|
+
- spec/support/matchers/response_success_matcher.rb
|
126
|
+
homepage: https://github.com/Hakon/netaxept
|
118
127
|
licenses: []
|
119
128
|
post_install_message:
|
120
129
|
rdoc_options: []
|
@@ -134,18 +143,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
134
143
|
version: '0'
|
135
144
|
requirements: []
|
136
145
|
rubyforge_project: netaxept
|
137
|
-
rubygems_version: 1.8.
|
146
|
+
rubygems_version: 1.8.23
|
138
147
|
signing_key:
|
139
148
|
specification_version: 3
|
140
149
|
summary: A gem for speaking to Nets Netaxept credit card payment service
|
141
150
|
test_files:
|
142
|
-
- spec/cassettes/Netaxept_Service/_auth.yml
|
143
|
-
- spec/cassettes/Netaxept_Service/_capture.yml
|
144
|
-
- spec/cassettes/Netaxept_Service/_credit.yml
|
145
|
-
- spec/cassettes/Netaxept_Service/_register.yml
|
146
|
-
- spec/cassettes/Netaxept_Service/_sale.yml
|
147
151
|
- spec/netaxept/service_spec.rb
|
148
152
|
- spec/netaxept_credentials.rb
|
149
153
|
- spec/spec_helper.rb
|
150
|
-
- spec/support/
|
151
|
-
|
154
|
+
- spec/support/matchers/response_success_matcher.rb
|
155
|
+
has_rdoc: true
|