tres_delta 0.0.1 → 0.0.2
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 +4 -4
- data/lib/tres_delta/customer.rb +12 -0
- data/lib/tres_delta/gateway.rb +23 -3
- data/lib/tres_delta/vault.rb +14 -0
- data/lib/tres_delta/version.rb +1 -1
- data/spec/tres_delta/customer_spec.rb +26 -0
- data/spec/tres_delta/gateway_spec.rb +39 -3
- data/spec/tres_delta/vault_spec.rb +27 -1
- data/tres_delta.gemspec +3 -3
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 578097ac40a7cc64e1263c8777d67bb5da106185
|
4
|
+
data.tar.gz: 12dfb29a0c45465e36cced8451387645753ef6a8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5bdb1907718fea6b0e862330838848744d9b9c65a1eabf2cbfcc5e8ee78dd437f5079b99dcf1505dc769659954426da588f63f0c0127f4d8e81312c011523799
|
7
|
+
data.tar.gz: f9e25484ef3dbf7290ea0eaa6e2263d025cb54b7f24e32858d987f152592ee93aa5c7b05609682bafb5ce477c43e46a667619382df8a8720e57d6333f62fe806
|
data/lib/tres_delta/customer.rb
CHANGED
@@ -10,5 +10,17 @@ module TresDelta
|
|
10
10
|
def vault_key
|
11
11
|
@vault_key ||= SecureRandom.hex(12)
|
12
12
|
end
|
13
|
+
|
14
|
+
class << self
|
15
|
+
def create(params = {})
|
16
|
+
Customer.new(params).tap do |customer|
|
17
|
+
unless Vault.new.create_customer(customer).success?
|
18
|
+
raise InvalidCustomer
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
class InvalidCustomer < Exception; end
|
13
25
|
end
|
14
26
|
end
|
data/lib/tres_delta/gateway.rb
CHANGED
@@ -4,6 +4,29 @@ module TresDelta
|
|
4
4
|
@wsdl = Config.config['transaction_wsdl']
|
5
5
|
end
|
6
6
|
|
7
|
+
def authorize(transaction_key, credit_card, amount, order_number, customer)
|
8
|
+
request :authorize, authorize_params(transaction_key, credit_card, amount, order_number, customer)
|
9
|
+
end
|
10
|
+
|
11
|
+
def authorize_params(transaction_key, credit_card, amount, order_number, customer)
|
12
|
+
{
|
13
|
+
'clientCredentials' => client_credentials,
|
14
|
+
'authorizeParams' => {
|
15
|
+
'AddOrUpdateCard' => 'true',
|
16
|
+
'CreditCardTransaction' => {
|
17
|
+
'CreditCard' => credit_card_params(credit_card),
|
18
|
+
'CurrencyCode' => 'USDollars',
|
19
|
+
'StoredCardIdentifier' => {
|
20
|
+
'CustomerCode' => customer.vault_key
|
21
|
+
},
|
22
|
+
'TotalAmount' => amount,
|
23
|
+
'TransactionKey' => transaction_key
|
24
|
+
},
|
25
|
+
'TerminalIdentifier' => terminal_identifier
|
26
|
+
}
|
27
|
+
}
|
28
|
+
end
|
29
|
+
|
7
30
|
def card_verification(transaction_key, credit_card)
|
8
31
|
request(:card_verification, card_verification_params(transaction_key, credit_card))
|
9
32
|
end
|
@@ -54,8 +77,5 @@ module TresDelta
|
|
54
77
|
}
|
55
78
|
}
|
56
79
|
end
|
57
|
-
|
58
|
-
def authorize(transaction_key, credit_card, transaction_total, order_number)
|
59
|
-
end
|
60
80
|
end
|
61
81
|
end
|
data/lib/tres_delta/vault.rb
CHANGED
@@ -68,5 +68,19 @@ module TresDelta
|
|
68
68
|
}
|
69
69
|
}
|
70
70
|
end
|
71
|
+
|
72
|
+
def get_token_for_card_number(card_number, customer)
|
73
|
+
request(:get_token_for_card_number, get_token_for_card_number_params(card_number, customer))
|
74
|
+
end
|
75
|
+
|
76
|
+
def get_token_for_card_number_params(card_number, customer)
|
77
|
+
{
|
78
|
+
'clientCredentials' => client_credentials,
|
79
|
+
'getTokenForCardNumberParams' => {
|
80
|
+
'AccountNumber' => card_number,
|
81
|
+
'CustomerIdentifier' => customer_identifier(customer)
|
82
|
+
}
|
83
|
+
}
|
84
|
+
end
|
71
85
|
end
|
72
86
|
end
|
data/lib/tres_delta/version.rb
CHANGED
@@ -25,4 +25,30 @@ describe TresDelta::Customer do
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
28
|
+
|
29
|
+
describe "#create" do
|
30
|
+
let(:customer) { TresDelta::Customer.create(customer_data) }
|
31
|
+
|
32
|
+
context "good customer info" do
|
33
|
+
let(:vault_key) { SecureRandom.hex(6) }
|
34
|
+
let(:customer_data) { { name: "Joe Tester", vault_key: vault_key } }
|
35
|
+
|
36
|
+
it "creates the customer" do
|
37
|
+
expect(customer).to be_a(TresDelta::Customer)
|
38
|
+
end
|
39
|
+
|
40
|
+
it "has the initialized values" do
|
41
|
+
expect(customer.vault_key).to eq(vault_key)
|
42
|
+
expect(customer.name).to eq(customer_data[:name])
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context "bad customer info" do
|
47
|
+
let(:customer_data) { Hash.new }
|
48
|
+
|
49
|
+
it "raises an error" do
|
50
|
+
expect { customer }.to raise_exception(TresDelta::Customer::InvalidCustomer)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
28
54
|
end
|
@@ -4,6 +4,10 @@ describe TresDelta::Gateway do
|
|
4
4
|
let(:gateway) { TresDelta::Gateway.new }
|
5
5
|
let(:transaction_key) { SecureRandom.hex(6) }
|
6
6
|
let(:customer) { TresDelta::Customer.new(name: 'FOO BAR') }
|
7
|
+
let(:good_address) { "10124 Brentridge Ct" }
|
8
|
+
|
9
|
+
# arbitrary: Cisco, TX
|
10
|
+
let(:zip_code_good) { '76437' }
|
7
11
|
|
8
12
|
let(:credit_card) do
|
9
13
|
TresDelta::CreditCard.new({
|
@@ -30,8 +34,6 @@ describe TresDelta::Gateway do
|
|
30
34
|
end
|
31
35
|
|
32
36
|
describe "credit card zip code verification" do
|
33
|
-
# arbitrary: Cisco, TX
|
34
|
-
let(:zip_code_good) { '76437' }
|
35
37
|
|
36
38
|
# magic numbers, see ThreeDelta docs
|
37
39
|
let(:zip_code_failure) { '20151' }
|
@@ -79,7 +81,6 @@ describe TresDelta::Gateway do
|
|
79
81
|
end
|
80
82
|
|
81
83
|
describe "credit card address verificaiton" do
|
82
|
-
let(:good_address) { "10124 Brentridge Ct" }
|
83
84
|
let(:bad_address) { "14151 Brentridge Ct" }
|
84
85
|
let(:address_params) { { :address => address } }
|
85
86
|
|
@@ -103,4 +104,39 @@ describe TresDelta::Gateway do
|
|
103
104
|
end
|
104
105
|
end
|
105
106
|
end
|
107
|
+
|
108
|
+
describe "authorize" do
|
109
|
+
let(:order_number) { SecureRandom.hex(6) }
|
110
|
+
let(:amount) { 13.37 }
|
111
|
+
let(:address_params) { { address: good_address, zip_code: zip_code_good} }
|
112
|
+
let(:response) { gateway.authorize(transaction_key, credit_card, amount, order_number, customer) }
|
113
|
+
let(:vault) { TresDelta::Vault.new }
|
114
|
+
|
115
|
+
before(:each) do
|
116
|
+
vault.create_customer(customer)
|
117
|
+
end
|
118
|
+
|
119
|
+
context "good transaction" do
|
120
|
+
it "is successful" do
|
121
|
+
expect(response.success?).to be_true
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
context "card declined" do
|
126
|
+
let(:amount) { "0.20" } # see 3Delta docs
|
127
|
+
|
128
|
+
it "isn't successful" do
|
129
|
+
expect(response.success?).to be_false
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
context "bad expiration" do
|
134
|
+
let(:amount) { "0.29" } # see 3Delta docs
|
135
|
+
|
136
|
+
it "isn't successful" do
|
137
|
+
expect(response.success?).to be_false
|
138
|
+
expect(response.credit_card_response_status).to eq('ExpirationDateIncorrect')
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
106
142
|
end
|
@@ -98,7 +98,7 @@ describe TresDelta::Vault do
|
|
98
98
|
end
|
99
99
|
end
|
100
100
|
|
101
|
-
describe "get_stored_credit_card"
|
101
|
+
describe "get_stored_credit_card" do
|
102
102
|
let(:include_card_number) { false }
|
103
103
|
let(:response) { vault.get_stored_credit_card(customer, token, include_card_number) }
|
104
104
|
|
@@ -150,4 +150,30 @@ describe TresDelta::Vault do
|
|
150
150
|
end
|
151
151
|
end
|
152
152
|
end
|
153
|
+
|
154
|
+
describe "get_token_for_card_number" do
|
155
|
+
let(:response) { vault.get_token_for_card_number(card_number, customer) }
|
156
|
+
|
157
|
+
context "credit card doesn't exist" do
|
158
|
+
let(:card_number) { '4111111111111111' }
|
159
|
+
|
160
|
+
it "isn't successful" do
|
161
|
+
expect(response.success?).to be_false
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
context "credit card does exist" do
|
166
|
+
let(:card_number) { good_visa.number }
|
167
|
+
|
168
|
+
let!(:token) { vault.create_customer(customer); vault.add_stored_credit_card(customer, good_visa).token }
|
169
|
+
|
170
|
+
it "is successful" do
|
171
|
+
expect(response.success?).to be_true
|
172
|
+
end
|
173
|
+
|
174
|
+
it "has the card's token" do
|
175
|
+
expect(response.token).to eq(token)
|
176
|
+
end
|
177
|
+
end
|
178
|
+
end
|
153
179
|
end
|
data/tres_delta.gemspec
CHANGED
@@ -8,9 +8,9 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = TresDelta::VERSION
|
9
9
|
spec.authors = ["1000Bulbs", "Zachary Danger Campbell"]
|
10
10
|
spec.email = ["zacharydangercampbell@gmail.com"]
|
11
|
-
spec.description = %q{A Ruby client for
|
12
|
-
spec.summary = %q{
|
13
|
-
spec.homepage = ""
|
11
|
+
spec.description = %q{A Ruby client for 3Delta's credit card vault and payment gateway.}
|
12
|
+
spec.summary = %q{If you need to talk to 3Delta's credit card vault/payment gateway in Ruby... this is an ok start.}
|
13
|
+
spec.homepage = "https://github.com/1000Bulbs/tres-delta"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($/)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tres_delta
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 1000Bulbs
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-03-
|
12
|
+
date: 2014-03-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: savon
|
@@ -67,7 +67,7 @@ dependencies:
|
|
67
67
|
- - ">="
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '0'
|
70
|
-
description: A Ruby client for
|
70
|
+
description: A Ruby client for 3Delta's credit card vault and payment gateway.
|
71
71
|
email:
|
72
72
|
- zacharydangercampbell@gmail.com
|
73
73
|
executables: []
|
@@ -98,7 +98,7 @@ files:
|
|
98
98
|
- spec/tres_delta/gateway_spec.rb
|
99
99
|
- spec/tres_delta/vault_spec.rb
|
100
100
|
- tres_delta.gemspec
|
101
|
-
homepage:
|
101
|
+
homepage: https://github.com/1000Bulbs/tres-delta
|
102
102
|
licenses:
|
103
103
|
- MIT
|
104
104
|
metadata: {}
|
@@ -121,7 +121,8 @@ rubyforge_project:
|
|
121
121
|
rubygems_version: 2.1.11
|
122
122
|
signing_key:
|
123
123
|
specification_version: 4
|
124
|
-
summary:
|
124
|
+
summary: If you need to talk to 3Delta's credit card vault/payment gateway in Ruby...
|
125
|
+
this is an ok start.
|
125
126
|
test_files:
|
126
127
|
- spec/spec_helper.rb
|
127
128
|
- spec/tres_delta/client_spec.rb
|