debitech 1.0.1 → 1.1.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.
- checksums.yaml +7 -0
- data/lib/debitech/mac.rb +1 -1
- data/lib/debitech/server_api.rb +2 -2
- data/lib/debitech/version.rb +1 -1
- data/lib/debitech/web_api.rb +3 -3
- data/spec/debitech/server_api_spec.rb +41 -24
- data/spec/debitech/web_api_spec.rb +10 -9
- metadata +31 -27
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 82279dd06b05d239c43e6ff2190190fa8ffd654b
|
4
|
+
data.tar.gz: 9dd2575228951cce994151aab74f883af3a64f62
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e9343f83273a827349186aa6b63187eaf54674c5be823c19ad9968bc891979a1d50b0945a14de5fb1749962a71a4547bbf728696f64bb7efd93f5ccf3d6b9ccc
|
7
|
+
data.tar.gz: e2a9dd971b861a830d0322f88734e304b07e2a6ec2518b71c1280987ce400e02edd0651cb1e29dcaa417c9108f69e78f48ca8cc063df3f9295e6a41d684ff926
|
data/lib/debitech/mac.rb
CHANGED
data/lib/debitech/server_api.rb
CHANGED
data/lib/debitech/version.rb
CHANGED
data/lib/debitech/web_api.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "digest/sha1"
|
2
|
+
require "debitech/mac"
|
3
3
|
|
4
4
|
module Debitech
|
5
5
|
class WebApi
|
@@ -15,7 +15,7 @@ module Debitech
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def form_action
|
18
|
-
"https://
|
18
|
+
"https://securedt.dibspayment.com/verify/bin/#{@opts[:merchant]}/index"
|
19
19
|
end
|
20
20
|
|
21
21
|
def valid_response?(mac, sum, reply, verify_id)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "debitech"
|
2
2
|
|
3
3
|
describe Debitech::ServerApi, "charge" do
|
4
4
|
let(:unique_reference) {
|
@@ -16,34 +16,42 @@ describe Debitech::ServerApi, "charge" do
|
|
16
16
|
:soap_opts => {
|
17
17
|
:merchant => "store",
|
18
18
|
:username => "api_user",
|
19
|
-
:password => "api_password"
|
19
|
+
:password => "api_password",
|
20
20
|
}
|
21
21
|
}
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
23
|
+
soap_api = double
|
24
|
+
allow(DebitechSoap::API).to receive(:new).
|
25
|
+
with({ :merchant => "store", :username => "api_user", :password => "api_password" }).
|
26
|
+
and_return(soap_api)
|
27
|
+
expect(soap_api).to receive(:subscribe_and_settle).with(
|
28
|
+
:verifyID => 1234567,
|
29
|
+
:data => "001:payment:1:10000:",
|
30
|
+
:ip => "127.0.0.1",
|
31
|
+
:extra => "&method=cc.cekab¤cy=SEK&MAC=1931EE498A77F6B12B2C2D2EC8599719EF9CE419&referenceNo=some_unique_ref",
|
32
|
+
)
|
29
33
|
|
30
34
|
server_api = Debitech::ServerApi.new(settings)
|
31
35
|
server_api.charge(transaction.merge(:amount => 10000))
|
32
36
|
end
|
33
37
|
|
34
38
|
it "should convert the amount to a integer to avoid 500 errors" do
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
39
|
+
soap_api = double
|
40
|
+
allow(DebitechSoap::API).to receive(:new).and_return(soap_api)
|
41
|
+
expect(soap_api).to receive(:subscribe_and_settle).with(
|
42
|
+
:verifyID => 1234567,
|
43
|
+
:data => "001:payment:1:2235:",
|
44
|
+
:ip => "127.0.0.1",
|
45
|
+
:extra => "&method=¤cy=SEK&MAC=78B1144270B1A74A55539FAEB81BB49EC39B90DF&referenceNo=some_unique_ref",
|
46
|
+
)
|
40
47
|
|
41
48
|
server_api = Debitech::ServerApi.new({})
|
42
49
|
server_api.charge(transaction.merge(:amount => 2235.0))
|
43
50
|
end
|
44
51
|
|
45
52
|
it "should raise an error if the amount has a fraction" do
|
46
|
-
|
53
|
+
soap_api = double
|
54
|
+
allow(DebitechSoap::API).to receive(:new).and_return(soap_api)
|
47
55
|
server_api = Debitech::ServerApi.new({})
|
48
56
|
expect {
|
49
57
|
server_api.charge(transaction.merge(:amount => 2235.55))
|
@@ -51,7 +59,8 @@ describe Debitech::ServerApi, "charge" do
|
|
51
59
|
end
|
52
60
|
|
53
61
|
it "should raise an error if the unique_reference is nil" do
|
54
|
-
|
62
|
+
soap_api = double
|
63
|
+
allow(DebitechSoap::API).to receive(:new).and_return(soap_api)
|
55
64
|
server_api = Debitech::ServerApi.new({})
|
56
65
|
expect {
|
57
66
|
server_api.charge(transaction.merge(:unique_reference => nil))
|
@@ -59,7 +68,8 @@ describe Debitech::ServerApi, "charge" do
|
|
59
68
|
end
|
60
69
|
|
61
70
|
it "should raise an error if the unique_reference is less than 4 characters" do
|
62
|
-
|
71
|
+
soap_api = double
|
72
|
+
allow(DebitechSoap::API).to receive(:new).and_return(soap_api)
|
63
73
|
server_api = Debitech::ServerApi.new({})
|
64
74
|
expect {
|
65
75
|
server_api.charge(transaction.merge(:unique_reference => "1234"))
|
@@ -67,16 +77,19 @@ describe Debitech::ServerApi, "charge" do
|
|
67
77
|
end
|
68
78
|
|
69
79
|
it "should be valid with a 5 character unique_reference" do
|
70
|
-
|
71
|
-
|
80
|
+
soap_api = double
|
81
|
+
allow(DebitechSoap::API).to receive(:new).and_return(soap_api)
|
82
|
+
allow(soap_api).to receive(:subscribe_and_settle)
|
72
83
|
server_api = Debitech::ServerApi.new({})
|
73
84
|
server_api.charge(transaction.merge(:unique_reference => "12345"))
|
74
85
|
end
|
75
86
|
|
76
87
|
[ 100, 101, 150, 199 ].each do |result_code|
|
77
88
|
it "should return success for result_code #{result_code}" do
|
78
|
-
|
79
|
-
|
89
|
+
soap_api = double
|
90
|
+
allow(DebitechSoap::API).to receive(:new).and_return(soap_api)
|
91
|
+
response = double(:result_code => result_code)
|
92
|
+
allow(soap_api).to receive(:subscribe_and_settle).and_return(response)
|
80
93
|
|
81
94
|
server_api = Debitech::ServerApi.new({})
|
82
95
|
result = server_api.charge(unique_reference)
|
@@ -89,8 +102,10 @@ describe Debitech::ServerApi, "charge" do
|
|
89
102
|
|
90
103
|
[ 200, 250, 300, 400 ].each do |result_code|
|
91
104
|
it "should not be successful for result_code #{result_code}" do
|
92
|
-
|
93
|
-
|
105
|
+
soap_api = double
|
106
|
+
allow(DebitechSoap::API).to receive(:new).and_return(soap_api)
|
107
|
+
response = double(:result_code => result_code)
|
108
|
+
allow(soap_api).to receive(:subscribe_and_settle).and_return(response)
|
94
109
|
|
95
110
|
server_api = Debitech::ServerApi.new({})
|
96
111
|
result = server_api.charge(unique_reference)
|
@@ -102,8 +117,10 @@ describe Debitech::ServerApi, "charge" do
|
|
102
117
|
end
|
103
118
|
|
104
119
|
it "should return pending and not be successful for 403" do
|
105
|
-
|
106
|
-
|
120
|
+
soap_api = double
|
121
|
+
allow(DebitechSoap::API).to receive(:new).and_return(soap_api)
|
122
|
+
response = double(:result_code => 403)
|
123
|
+
allow(soap_api).to receive(:subscribe_and_settle).and_return(response)
|
107
124
|
server_api = Debitech::ServerApi.new({})
|
108
125
|
result = server_api.charge(unique_reference)
|
109
126
|
|
@@ -1,5 +1,5 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "ostruct"
|
2
|
+
require "debitech"
|
3
3
|
|
4
4
|
describe Debitech::WebApi do
|
5
5
|
let(:secret_key) {
|
@@ -26,7 +26,8 @@ describe Debitech::WebApi do
|
|
26
26
|
|
27
27
|
describe "form_action" do
|
28
28
|
it "return the url based on shop" do
|
29
|
-
|
29
|
+
api = Debitech::WebApi.new({ :merchant => "myshop" })
|
30
|
+
expect(api.form_action).to include "https://securedt.dibspayment.com/verify/bin/myshop/index"
|
30
31
|
end
|
31
32
|
end
|
32
33
|
|
@@ -34,14 +35,14 @@ describe Debitech::WebApi do
|
|
34
35
|
context "given reply is 'A' for approved" do
|
35
36
|
it "is true" do
|
36
37
|
api = Debitech::WebApi.new
|
37
|
-
expect(api.approved_reply?("A")).to
|
38
|
+
expect(api.approved_reply?("A")).to be true
|
38
39
|
end
|
39
40
|
end
|
40
41
|
|
41
42
|
context "given reply is 'D' for denied" do
|
42
43
|
it "is false" do
|
43
44
|
api = Debitech::WebApi.new
|
44
|
-
expect(api.approved_reply?("D")).to
|
45
|
+
expect(api.approved_reply?("D")).to be false
|
45
46
|
end
|
46
47
|
end
|
47
48
|
end
|
@@ -49,22 +50,22 @@ describe Debitech::WebApi do
|
|
49
50
|
describe "valid_response?" do
|
50
51
|
it "validate that the response hashes down to the mac value" do
|
51
52
|
api = Debitech::WebApi.new(secret_key)
|
52
|
-
expect(api.valid_response?("MAC=667026AD7692F9AFDA362919EA72D8E6A250A849", "1,00", "A", "1234567")).to
|
53
|
+
expect(api.valid_response?("MAC=667026AD7692F9AFDA362919EA72D8E6A250A849", "1,00", "A", "1234567")).to be true
|
53
54
|
end
|
54
55
|
|
55
56
|
it "is not true if any of the values are wrong" do
|
56
57
|
api = Debitech::WebApi.new(secret_key)
|
57
|
-
expect(api.valid_response?("MAC=667026AD7692F9AFDA362919EA72D8E6A250A849", "1,00", "A", "1234568")).to
|
58
|
+
expect(api.valid_response?("MAC=667026AD7692F9AFDA362919EA72D8E6A250A849", "1,00", "A", "1234568")).to be false
|
58
59
|
end
|
59
60
|
|
60
61
|
it "is not true if the secretkey is different" do
|
61
62
|
api = Debitech::WebApi.new({ :secret_key => "secretkey2" })
|
62
|
-
expect(api.valid_response?("MAC=667026AD7692F9AFDA362919EA72D8E6A250A849", "1,00", "A", "1234567")).to
|
63
|
+
expect(api.valid_response?("MAC=667026AD7692F9AFDA362919EA72D8E6A250A849", "1,00", "A", "1234567")).to be false
|
63
64
|
end
|
64
65
|
|
65
66
|
it "handle if verify_id is an int" do
|
66
67
|
api = Debitech::WebApi.new(secret_key)
|
67
|
-
expect(api.valid_response?("MAC=667026AD7692F9AFDA362919EA72D8E6A250A849", "1,00", "A", 1234567)).to
|
68
|
+
expect(api.valid_response?("MAC=667026AD7692F9AFDA362919EA72D8E6A250A849", "1,00", "A", 1234567)).to be true
|
68
69
|
end
|
69
70
|
end
|
70
71
|
end
|
metadata
CHANGED
@@ -1,49 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: debitech
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
5
|
-
prerelease:
|
4
|
+
version: 1.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Joakim Kolsjö
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2016-01-26 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: debitech_soap
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
28
|
name: rake
|
27
|
-
requirement:
|
28
|
-
none: false
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
|
-
- -
|
31
|
+
- - ">="
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: '0'
|
33
34
|
type: :development
|
34
35
|
prerelease: false
|
35
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
36
41
|
- !ruby/object:Gem::Dependency
|
37
42
|
name: rspec
|
38
|
-
requirement:
|
39
|
-
none: false
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
40
44
|
requirements:
|
41
|
-
- -
|
45
|
+
- - ">="
|
42
46
|
- !ruby/object:Gem::Version
|
43
47
|
version: '0'
|
44
48
|
type: :development
|
45
49
|
prerelease: false
|
46
|
-
version_requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
47
55
|
description: Library for doing payments using DebiTech (DIBS)
|
48
56
|
email:
|
49
57
|
- joakim@barsoom.se
|
@@ -51,9 +59,9 @@ executables: []
|
|
51
59
|
extensions: []
|
52
60
|
extra_rdoc_files: []
|
53
61
|
files:
|
54
|
-
- .gitignore
|
55
|
-
- .rvmrc
|
56
|
-
- .travis.yml
|
62
|
+
- ".gitignore"
|
63
|
+
- ".rvmrc"
|
64
|
+
- ".travis.yml"
|
57
65
|
- Gemfile
|
58
66
|
- README.md
|
59
67
|
- Rakefile
|
@@ -67,29 +75,25 @@ files:
|
|
67
75
|
- spec/debitech/web_api_spec.rb
|
68
76
|
homepage: https://github.com/barsoom/debitech
|
69
77
|
licenses: []
|
78
|
+
metadata: {}
|
70
79
|
post_install_message:
|
71
80
|
rdoc_options: []
|
72
81
|
require_paths:
|
73
82
|
- lib
|
74
83
|
required_ruby_version: !ruby/object:Gem::Requirement
|
75
|
-
none: false
|
76
84
|
requirements:
|
77
|
-
- -
|
85
|
+
- - ">="
|
78
86
|
- !ruby/object:Gem::Version
|
79
87
|
version: 1.8.7
|
80
88
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
89
|
requirements:
|
83
|
-
- -
|
90
|
+
- - ">="
|
84
91
|
- !ruby/object:Gem::Version
|
85
92
|
version: '0'
|
86
|
-
segments:
|
87
|
-
- 0
|
88
|
-
hash: 1595935195943276561
|
89
93
|
requirements: []
|
90
94
|
rubyforge_project:
|
91
|
-
rubygems_version:
|
95
|
+
rubygems_version: 2.4.8
|
92
96
|
signing_key:
|
93
|
-
specification_version:
|
97
|
+
specification_version: 4
|
94
98
|
summary: Library for doing payments using DebiTech (DIBS)
|
95
99
|
test_files: []
|