net_registry 0.0.2 → 0.0.4
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/.travis.yml +3 -0
- data/Gemfile +2 -0
- data/README.md +20 -16
- data/Rakefile +3 -0
- data/lib/net_registry/client.rb +10 -3
- data/lib/net_registry/response_builder.rb +81 -55
- data/lib/net_registry/version.rb +1 -1
- data/net_registry.gemspec +4 -4
- data/spec/client_spec.rb +28 -28
- data/spec/response_builder_spec.rb +67 -43
- data/spec/spec_helper.rb +2 -0
- data/spec/transaction_spec.rb +1 -1
- metadata +16 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ffc8284b97a1579527e37287ab2ee29687b14de3
|
4
|
+
data.tar.gz: 9d3a53579f5c0c538957f5cdf89c63ee9bfc5ee5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c34f3c55479f9f4f0c3e25dcdd2d90c1d659fffdd44943047b6f5c5059ff711507370ea29813435867db04042012367d4b2f15c2f4430c5236a9d7374991cf8a
|
7
|
+
data.tar.gz: 6e53d57e63e158d514f1edc32d48f132ff5b522a1fcc7e9ff635e74b1f0fdda98ce8f1ced531be4eaefca6ee1058d64efa5957411badcd23f1502f1067760e29
|
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,8 @@
|
|
1
1
|
# NetRegistry
|
2
|
+
[](https://travis-ci.org/CarNextDoor/net_registry)
|
4
|
+
[](http://badge.fury.io/rb/net_registry)
|
5
|
+
[](https://coveralls.io/github/CarNextDoor/net_registry?branch=master)
|
2
6
|
|
3
7
|
This gem serves as a Ruby wrapper for the NetRegistry Payment Gateway's
|
4
8
|
API. Official documentation can be found [http://www.netregistry.com.au/ee-images/uploads/support/NR-ecom-gateway8.pdf](here)
|
@@ -42,14 +46,14 @@ Input:
|
|
42
46
|
|
43
47
|
``` ruby
|
44
48
|
{
|
45
|
-
AMOUNT: (Integer, Float, or String). The amount you would like to
|
46
|
-
charge. Don't add
|
49
|
+
AMOUNT: "(Integer, Float, or String). The amount you would like to
|
50
|
+
charge. Don't add '$', just the numerical amount.",
|
47
51
|
|
48
|
-
CCNUM: (Integer, String). The credit card number. NO SPACES OR
|
49
|
-
DASH,
|
52
|
+
CCNUM: "(Integer, String). The credit card number. NO SPACES OR
|
53
|
+
DASH",
|
50
54
|
|
51
|
-
CCEXP: (String). Credit card expiry date. Must be in the format of
|
52
|
-
|
55
|
+
CCEXP: "(String). Credit card expiry date. Must be in the format of
|
56
|
+
'mm/yy'."
|
53
57
|
}
|
54
58
|
```
|
55
59
|
|
@@ -60,10 +64,10 @@ Returns: NetRegistry::Response object.
|
|
60
64
|
Input:
|
61
65
|
``` ruby
|
62
66
|
{
|
63
|
-
AMOUNT: (Integer, Float, or String). The amount you would like to
|
64
|
-
charge. Don't add
|
67
|
+
AMOUNT: "(Integer, Float, or String). The amount you would like to
|
68
|
+
charge. Don't add '$', just the numerical amount.",
|
65
69
|
|
66
|
-
TXNREF: (String). Transaction reference number
|
70
|
+
TXNREF: "(String). Transaction reference number"
|
67
71
|
}
|
68
72
|
```
|
69
73
|
|
@@ -75,14 +79,14 @@ Input:
|
|
75
79
|
|
76
80
|
``` ruby
|
77
81
|
{
|
78
|
-
AMOUNT: (Integer, Float, or String). The amount you would like to
|
79
|
-
charge. Don't add
|
82
|
+
AMOUNT: "(Integer, Float, or String). The amount you would like to
|
83
|
+
charge. Don't add '$', just the numerical amount.",
|
80
84
|
|
81
|
-
CCNUM: (Integer, String). The credit card number. NO SPACES OR
|
82
|
-
DASH,
|
85
|
+
CCNUM: "(Integer, String). The credit card number. NO SPACES OR
|
86
|
+
DASH",
|
83
87
|
|
84
|
-
CCEXP: (String). Credit card expiry date. Must be in the format of
|
85
|
-
|
88
|
+
CCEXP: "(String). Credit card expiry date. Must be in the format of
|
89
|
+
'mm/yy'".
|
86
90
|
}
|
87
91
|
```
|
88
92
|
|
@@ -93,7 +97,7 @@ Returns: NetRegistry::Response object.
|
|
93
97
|
Input:
|
94
98
|
``` ruby
|
95
99
|
{
|
96
|
-
TXNREF: (String). Transaction reference number
|
100
|
+
TXNREF: "(String). Transaction reference number"
|
97
101
|
}
|
98
102
|
```
|
99
103
|
|
data/Rakefile
CHANGED
data/lib/net_registry/client.rb
CHANGED
@@ -35,7 +35,7 @@ module NetRegistry
|
|
35
35
|
@login = "#{@merchant_id}/#{@password}"
|
36
36
|
@base_url = "https://paygate.ssllock.net/external2.pl"
|
37
37
|
@uri = URI(@base_url)
|
38
|
-
@
|
38
|
+
@builder = NetRegistry::ResponseBuilder.new
|
39
39
|
end
|
40
40
|
|
41
41
|
# Alias for
|
@@ -66,17 +66,24 @@ module NetRegistry
|
|
66
66
|
request(params.merge!(COMMAND: "preauth"))
|
67
67
|
end
|
68
68
|
|
69
|
+
# Alias for
|
70
|
+
# require(COMMAND: "completion", PREAUTHNUM: .... etc)
|
71
|
+
def completion(params = {})
|
72
|
+
raise TypeError, "params is not a hash" if !params.is_a?(Hash)
|
73
|
+
request(params.merge!(COMMAND: "completion"))
|
74
|
+
end
|
75
|
+
|
69
76
|
def request(params = {})
|
70
77
|
raise TypeError, "params is not a hash" if !params.is_a?(Hash)
|
71
78
|
params.merge!(LOGIN: @login)
|
72
|
-
@
|
79
|
+
@builder.verify_params(params) ? send_request(params) : @builder.create
|
73
80
|
end
|
74
81
|
|
75
82
|
private
|
76
83
|
|
77
84
|
def send_request(params)
|
78
85
|
res = Net::HTTP.post_form(@uri, params)
|
79
|
-
@
|
86
|
+
@builder.parse(res.body).create
|
80
87
|
end
|
81
88
|
|
82
89
|
end
|
@@ -38,8 +38,8 @@ module NetRegistry
|
|
38
38
|
# purchase, refund, preauth, status.
|
39
39
|
# params (Hash): Variables to pass to NetRegistry
|
40
40
|
def verify_params(params = {})
|
41
|
-
success
|
42
|
-
params
|
41
|
+
success = false
|
42
|
+
params = process_params(params)
|
43
43
|
case params[:COMMAND]
|
44
44
|
when "purchase"
|
45
45
|
@response.text, success = validate_purchase_params(params)
|
@@ -49,8 +49,10 @@ module NetRegistry
|
|
49
49
|
@response.text, success = validate_preauth_params(params)
|
50
50
|
when "status"
|
51
51
|
@response.text, success = validate_status_params(params)
|
52
|
+
when "completion"
|
53
|
+
@response.text, success = validate_completion_params(params)
|
52
54
|
else
|
53
|
-
@response.text = "Invalid command. Only [purchase status preauth refund] are valid."
|
55
|
+
@response.text = "Invalid command. Only [purchase status preauth refund completion] are valid."
|
54
56
|
success = false
|
55
57
|
end
|
56
58
|
@response.code = 0 if success
|
@@ -65,66 +67,22 @@ module NetRegistry
|
|
65
67
|
end
|
66
68
|
|
67
69
|
# parse HTTP request response body into a response object
|
68
|
-
# return
|
70
|
+
# return builder itself.
|
69
71
|
# To get the response object, use #create method
|
70
72
|
def parse(response)
|
71
73
|
raise TypeError, "Response is not a string" if !response.is_a?(String)
|
72
74
|
@full_response = response.split("\n").map(&:strip)
|
73
75
|
if @full_response.first == "failed"
|
74
|
-
|
75
|
-
lines = @full_response.drop_while { |x| x != "." }
|
76
|
-
if lines.empty?
|
77
|
-
@response.text = @full_response[1]
|
78
|
-
else
|
79
|
-
lines.shift
|
80
|
-
lines[0].slice!("response_text=")
|
81
|
-
@response.text = lines[0]
|
82
|
-
end
|
83
|
-
@response.status = "failed"
|
84
|
-
@response.code = -1
|
76
|
+
parse_failed_response
|
85
77
|
else
|
86
78
|
@full_response.each do |line|
|
87
|
-
data
|
88
|
-
|
89
|
-
when "card_number", "card_no"
|
90
|
-
@response.transaction.card.number = data[1]
|
91
|
-
when "response_text"
|
92
|
-
@response.text = data[1].to_s
|
93
|
-
when "amount", "total_amount"
|
94
|
-
@response.transaction.amount = data[1]
|
95
|
-
when "status"
|
96
|
-
@response.status = data[1]
|
97
|
-
when "txnref", "txn_ref"
|
98
|
-
@response.transaction.reference = data[1]
|
99
|
-
when "transaction_no"
|
100
|
-
@response.transaction.number = data[1]
|
101
|
-
when "bank_ref"
|
102
|
-
@response.transaction.bank_reference = data[1]
|
103
|
-
when "card_desc"
|
104
|
-
@response.transaction.card.description = data[1]
|
105
|
-
when "response_code"
|
106
|
-
@response.code = data[1]
|
107
|
-
when "card_type"
|
108
|
-
@response.transaction.card.type = data[1]
|
109
|
-
when "time"
|
110
|
-
@response.transaction.time = data[1]
|
111
|
-
when "command"
|
112
|
-
@response.transaction.command = data[1]
|
113
|
-
when "card_expiry"
|
114
|
-
@response.transaction.card.expiry = data[1]
|
115
|
-
when "result"
|
116
|
-
@response.result = data[1]
|
117
|
-
when "settlement_date"
|
118
|
-
@response.transaction.settlement_date = data[1]
|
119
|
-
when "rrn"
|
120
|
-
@response.transaction.rrn = data[1]
|
121
|
-
when "MID"
|
122
|
-
@response.transaction.merchant_id = data[1]
|
123
|
-
else
|
124
|
-
end
|
79
|
+
data = line.split("=")
|
80
|
+
parse_success_line(key: data[0], value: data[1])
|
125
81
|
end
|
126
|
-
@receipt = @full_response.drop_while { |line| !line.include?("Reciept
|
127
|
-
if @receipt.include?("Reciept
|
82
|
+
@receipt = @full_response.drop_while { |line| !line.include?("Reciept follows") }
|
83
|
+
if @receipt.include?("Reciept follows")
|
84
|
+
# Don't want the "Reciept follows" line, nor the "." and "done" line.
|
85
|
+
# Only want the receipt in between
|
128
86
|
@receipt = @receipt[1...-2]
|
129
87
|
@response.transaction.receipt = @receipt.join("\n")
|
130
88
|
end
|
@@ -134,6 +92,59 @@ module NetRegistry
|
|
134
92
|
end
|
135
93
|
|
136
94
|
protected
|
95
|
+
def parse_failed_response
|
96
|
+
# remove all spaces until the dot
|
97
|
+
lines = @full_response.drop_while { |x| x != "." }
|
98
|
+
if lines.empty?
|
99
|
+
@response.text = @full_response[1]
|
100
|
+
else
|
101
|
+
lines.shift
|
102
|
+
lines[0].slice!("response_text=")
|
103
|
+
@response.text = lines[0]
|
104
|
+
end
|
105
|
+
@response.status = "failed"
|
106
|
+
@response.code = -1
|
107
|
+
end
|
108
|
+
|
109
|
+
def parse_success_line(key:, value:)
|
110
|
+
case key
|
111
|
+
when "card_number", "card_no"
|
112
|
+
@response.transaction.card.number = value
|
113
|
+
when "response_text"
|
114
|
+
@response.text = value
|
115
|
+
when "response_code"
|
116
|
+
@response.code = value
|
117
|
+
when "status"
|
118
|
+
@response.status = value
|
119
|
+
when "result"
|
120
|
+
@response.result = value
|
121
|
+
when "amount", "total_amount"
|
122
|
+
@response.transaction.amount = value
|
123
|
+
when "time"
|
124
|
+
@response.transaction.time = value
|
125
|
+
when "command"
|
126
|
+
@response.transaction.command = value
|
127
|
+
when "txnref", "txn_ref"
|
128
|
+
@response.transaction.reference = value
|
129
|
+
when "transaction_no"
|
130
|
+
@response.transaction.number = value
|
131
|
+
when "bank_ref"
|
132
|
+
@response.transaction.bank_reference = value
|
133
|
+
when "settlement_date"
|
134
|
+
@response.transaction.settlement_date = value
|
135
|
+
when "rrn"
|
136
|
+
@response.transaction.rrn = value
|
137
|
+
when "MID"
|
138
|
+
@response.transaction.merchant_id = value
|
139
|
+
when "card_type"
|
140
|
+
@response.transaction.card.type = value
|
141
|
+
when "card_expiry"
|
142
|
+
@response.transaction.card.expiry = value
|
143
|
+
when "card_desc"
|
144
|
+
@response.transaction.card.description = value
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
137
148
|
# Preliminary validation for the purchase method
|
138
149
|
# Returns a Response Object
|
139
150
|
def validate_purchase_params(params)
|
@@ -182,6 +193,21 @@ module NetRegistry
|
|
182
193
|
end
|
183
194
|
end
|
184
195
|
|
196
|
+
def validate_completion_params(params)
|
197
|
+
if params[:PREAUTHNUM].nil? || params[:PREAUTHNUM].empty?
|
198
|
+
return "PREAUTHNUM not found", false
|
199
|
+
elsif params[:CCNUM].nil? || params[:CCNUM].empty?
|
200
|
+
return "CCNUM not found", false
|
201
|
+
elsif params[:CCEXP].nil? || params[:CCEXP].empty?
|
202
|
+
return "CCEXP not found", false
|
203
|
+
elsif !valid_expiry_format?(params[:CCEXP])
|
204
|
+
return "CCEXP invalid format", false
|
205
|
+
elsif params[:AMOUNT].nil? || params[:AMOUNT].empty?
|
206
|
+
return "AMOUNT not found", false
|
207
|
+
else
|
208
|
+
return "", true
|
209
|
+
end
|
210
|
+
end
|
185
211
|
|
186
212
|
def valid_expiry_format?(card_expiry)
|
187
213
|
raise TypeError if !card_expiry.is_a?(String)
|
data/lib/net_registry/version.rb
CHANGED
data/net_registry.gemspec
CHANGED
@@ -44,10 +44,10 @@ API. Official documentation can be found at http://www.netregistry.com.au/ee-ima
|
|
44
44
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
45
45
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
46
46
|
spec.require_paths = ["lib"]
|
47
|
-
spec.required_ruby_version = '>= 2.0'
|
47
|
+
spec.required_ruby_version = '>= 2.1.0'
|
48
48
|
|
49
49
|
spec.add_development_dependency "bundler", "~> 1.6"
|
50
|
-
spec.add_development_dependency "rake"
|
51
|
-
spec.add_development_dependency "rspec"
|
52
|
-
spec.add_development_dependency "webmock"
|
50
|
+
spec.add_development_dependency "rake", "~> 10.4.2"
|
51
|
+
spec.add_development_dependency "rspec", "~> 3.3.0"
|
52
|
+
spec.add_development_dependency "webmock", "~> 1.21.0"
|
53
53
|
end
|
data/spec/client_spec.rb
CHANGED
@@ -41,7 +41,7 @@ RSpec.describe NetRegistry::Client do
|
|
41
41
|
<<-STATUS
|
42
42
|
card_number=#{params[:CCNUM]}
|
43
43
|
settlement_date=31/07/00
|
44
|
-
response_text=INVALID
|
44
|
+
response_text=INVALID TRANSACTION
|
45
45
|
amount=#{params[:AMOUNT]}
|
46
46
|
status=complete
|
47
47
|
txnref=#{params[:TXNREF]}
|
@@ -51,7 +51,7 @@ RSpec.describe NetRegistry::Client do
|
|
51
51
|
card_expiry=01/01
|
52
52
|
MID=24
|
53
53
|
card_type=6
|
54
|
-
time=2000
|
54
|
+
time=2000-07-31 14:28:20
|
55
55
|
command=purchase
|
56
56
|
result=0
|
57
57
|
.
|
@@ -74,9 +74,9 @@ RSpec.describe NetRegistry::Client do
|
|
74
74
|
response_code=12
|
75
75
|
receipt_array=ARRAY(0x8221b9c)
|
76
76
|
cashout_amount=0
|
77
|
-
account_type=CREDIT
|
77
|
+
account_type=CREDIT A/C
|
78
78
|
rrn=000782000024
|
79
|
-
response_text=INVALID
|
79
|
+
response_text=INVALID TRANSACTION
|
80
80
|
txn_ref=0007311458332546
|
81
81
|
card_no=4111111111111111
|
82
82
|
total_amount=100
|
@@ -84,27 +84,27 @@ RSpec.describe NetRegistry::Client do
|
|
84
84
|
card_expiry=01/01
|
85
85
|
card_type=6
|
86
86
|
result=0
|
87
|
-
Reciept
|
88
|
-
Transaction
|
89
|
-
|
90
|
-
TYRELL
|
91
|
-
MERCH
|
92
|
-
TERM
|
93
|
-
COUNTRY
|
94
|
-
31/07/00
|
95
|
-
RRN
|
87
|
+
Reciept follows
|
88
|
+
Transaction No: 00332546
|
89
|
+
---------------
|
90
|
+
TYRELL CORPORATION
|
91
|
+
MERCH ID 99999999
|
92
|
+
TERM ID Y9TB99
|
93
|
+
COUNTRY CODE AU
|
94
|
+
31/07/00 14:32
|
95
|
+
RRN 000782000024
|
96
96
|
VISA
|
97
|
-
411111
|
98
|
-
CREDIT
|
99
|
-
AUTHORISATION
|
100
|
-
DECLINED
|
101
|
-
PURCHASE
|
102
|
-
TOTAL
|
103
|
-
PLEASE
|
104
|
-
OF
|
105
|
-
(SUBJECT
|
106
|
-
ACCEPTANCE)
|
107
|
-
|
97
|
+
411111-111
|
98
|
+
CREDIT A/C 01/01
|
99
|
+
AUTHORISATION NO:
|
100
|
+
DECLINED 12
|
101
|
+
PURCHASE $1.00
|
102
|
+
TOTAL AUD $1.00
|
103
|
+
PLEASE RETAIN AS RECORD
|
104
|
+
OF PURCHASE
|
105
|
+
(SUBJECT TO CARDHOLDER'S
|
106
|
+
ACCEPTANCE)
|
107
|
+
---------------
|
108
108
|
.
|
109
109
|
done=1
|
110
110
|
PURCHASE
|
@@ -146,7 +146,7 @@ RSpec.describe NetRegistry::Client do
|
|
146
146
|
|
147
147
|
response = client.purchase(params)
|
148
148
|
expect(response.class).to eq(NetRegistry::Response)
|
149
|
-
expect(response.text).to eq("INVALID
|
149
|
+
expect(response.text).to eq("INVALID TRANSACTION")
|
150
150
|
expect(response.code).to eq(12)
|
151
151
|
expect(response.status).to eq("declined")
|
152
152
|
end
|
@@ -173,7 +173,7 @@ RSpec.describe NetRegistry::Client do
|
|
173
173
|
.to_return(status: 200, body: purchase_success_response, headers: {})
|
174
174
|
response = client.purchase(params)
|
175
175
|
expect(response.class).to eq(NetRegistry::Response)
|
176
|
-
expect(response.text).to eq("INVALID
|
176
|
+
expect(response.text).to eq("INVALID TRANSACTION")
|
177
177
|
expect(response.code).to eq(12)
|
178
178
|
expect(response.status).to eq("declined")
|
179
179
|
end
|
@@ -215,7 +215,7 @@ RSpec.describe NetRegistry::Client do
|
|
215
215
|
.to_return(status: 200, body: purchase_success_response, headers: {})
|
216
216
|
response = client.refund(params)
|
217
217
|
expect(response.class).to eq(NetRegistry::Response)
|
218
|
-
expect(response.text).to eq("INVALID
|
218
|
+
expect(response.text).to eq("INVALID TRANSACTION")
|
219
219
|
expect(response.code).to eq(12)
|
220
220
|
expect(response.status).to eq("declined")
|
221
221
|
end
|
@@ -242,7 +242,7 @@ RSpec.describe NetRegistry::Client do
|
|
242
242
|
.to_return(status: 200, body: purchase_success_response, headers: {})
|
243
243
|
response = client.refund(params)
|
244
244
|
expect(response.class).to eq(NetRegistry::Response)
|
245
|
-
expect(response.text).to eq("INVALID
|
245
|
+
expect(response.text).to eq("INVALID TRANSACTION")
|
246
246
|
expect(response.code).to eq(12)
|
247
247
|
expect(response.status).to eq("declined")
|
248
248
|
end
|
@@ -57,7 +57,7 @@ RSpec.describe NetRegistry::ResponseBuilder do
|
|
57
57
|
card_expiry=01/01
|
58
58
|
MID=24
|
59
59
|
card_type=6
|
60
|
-
time=2000
|
60
|
+
time=2000-07-31 14:28:20
|
61
61
|
command=purchase
|
62
62
|
result=0
|
63
63
|
.
|
@@ -79,9 +79,9 @@ RSpec.describe NetRegistry::ResponseBuilder do
|
|
79
79
|
response_code=12
|
80
80
|
receipt_array=ARRAY(0x8221b9c)
|
81
81
|
cashout_amount=0
|
82
|
-
account_type=CREDIT
|
82
|
+
account_type=CREDIT A/C
|
83
83
|
rrn=000782000024
|
84
|
-
response_text=INVALID
|
84
|
+
response_text=INVALID TRANSACTION
|
85
85
|
txn_ref=0007311458332546
|
86
86
|
card_no=4111111111111111
|
87
87
|
total_amount=100
|
@@ -89,27 +89,27 @@ RSpec.describe NetRegistry::ResponseBuilder do
|
|
89
89
|
card_expiry=01/01
|
90
90
|
card_type=6
|
91
91
|
result=0
|
92
|
-
Reciept
|
93
|
-
Transaction
|
94
|
-
|
95
|
-
TYRELL
|
96
|
-
MERCH
|
97
|
-
TERM
|
98
|
-
COUNTRY
|
99
|
-
31/07/00
|
100
|
-
RRN
|
92
|
+
Reciept follows
|
93
|
+
Transaction No: 00332546
|
94
|
+
---------------
|
95
|
+
TYRELL CORPORATION
|
96
|
+
MERCH ID 99999999
|
97
|
+
TERM ID Y9TB99
|
98
|
+
COUNTRY CODE AU
|
99
|
+
31/07/00 14:32
|
100
|
+
RRN 000782000024
|
101
101
|
VISA
|
102
|
-
411111
|
103
|
-
CREDIT
|
102
|
+
411111-111
|
103
|
+
CREDIT A/C 01/01
|
104
104
|
AUTHORISATION NO:
|
105
|
-
DECLINED
|
106
|
-
PURCHASE
|
107
|
-
TOTAL
|
108
|
-
PLEASE
|
109
|
-
OF
|
110
|
-
(SUBJECT
|
111
|
-
ACCEPTANCE)
|
112
|
-
|
105
|
+
DECLINED 12
|
106
|
+
PURCHASE $1.00
|
107
|
+
TOTAL AUD $1.00
|
108
|
+
PLEASE RETAIN AS RECORD
|
109
|
+
OF PURCHASE
|
110
|
+
(SUBJECT TO CARDHOLDER'S
|
111
|
+
ACCEPTANCE)
|
112
|
+
---------------
|
113
113
|
.
|
114
114
|
done=1
|
115
115
|
RESPONSE
|
@@ -151,7 +151,7 @@ RSpec.describe NetRegistry::ResponseBuilder do
|
|
151
151
|
|
152
152
|
it { expect(@response.transaction.amount).to eq("100") }
|
153
153
|
it { expect(@response.transaction.reference).to eq("0007311428202312") }
|
154
|
-
it { expect(@response.transaction.time).to eq("2000
|
154
|
+
it { expect(@response.transaction.time).to eq("2000-07-31 14:28:20")}
|
155
155
|
it { expect(@response.transaction.command).to eq("purchase")}
|
156
156
|
it { expect(@response.transaction.settlement_date).to eq("31/07/00")}
|
157
157
|
it { expect(@response.transaction.bank_reference).to eq("000731000024")}
|
@@ -168,29 +168,29 @@ RSpec.describe NetRegistry::ResponseBuilder do
|
|
168
168
|
before :each do
|
169
169
|
@response = factory.parse(purchase_invalid_transaction).create
|
170
170
|
@receipt = <<-RECEIPT.gsub(/^\s+/, "")
|
171
|
-
Transaction
|
172
|
-
|
173
|
-
TYRELL
|
174
|
-
MERCH
|
175
|
-
TERM
|
176
|
-
COUNTRY
|
177
|
-
31/07/00
|
178
|
-
RRN
|
171
|
+
Transaction No: 00332546
|
172
|
+
---------------
|
173
|
+
TYRELL CORPORATION
|
174
|
+
MERCH ID 99999999
|
175
|
+
TERM ID Y9TB99
|
176
|
+
COUNTRY CODE AU
|
177
|
+
31/07/00 14:32
|
178
|
+
RRN 000782000024
|
179
179
|
VISA
|
180
|
-
411111
|
181
|
-
CREDIT
|
180
|
+
411111-111
|
181
|
+
CREDIT A/C 01/01
|
182
182
|
AUTHORISATION NO:
|
183
|
-
DECLINED
|
184
|
-
PURCHASE
|
185
|
-
TOTAL
|
186
|
-
PLEASE
|
187
|
-
OF
|
188
|
-
(SUBJECT
|
189
|
-
ACCEPTANCE)
|
190
|
-
|
183
|
+
DECLINED 12
|
184
|
+
PURCHASE $1.00
|
185
|
+
TOTAL AUD $1.00
|
186
|
+
PLEASE RETAIN AS RECORD
|
187
|
+
OF PURCHASE
|
188
|
+
(SUBJECT TO CARDHOLDER'S
|
189
|
+
ACCEPTANCE)
|
190
|
+
---------------
|
191
191
|
RECEIPT
|
192
192
|
end
|
193
|
-
it { expect(@response.text).to eq("INVALID
|
193
|
+
it { expect(@response.text).to eq("INVALID TRANSACTION") }
|
194
194
|
it { expect(@response.transaction.reference).to eq("0007311458332546") }
|
195
195
|
it { expect(@response.transaction.rrn).to eq("000782000024")}
|
196
196
|
it { expect(@response.result).to eq(0)}
|
@@ -224,7 +224,7 @@ RSpec.describe NetRegistry::ResponseBuilder do
|
|
224
224
|
it "has not provided with a COMMAND" do
|
225
225
|
factory.verify_params(invalid_status_params)
|
226
226
|
response = factory.create
|
227
|
-
expect(response.text).to eq("Invalid command. Only [purchase status preauth refund] are valid.")
|
227
|
+
expect(response.text).to eq("Invalid command. Only [purchase status preauth refund completion] are valid.")
|
228
228
|
expect(response.status).to eq("failed")
|
229
229
|
expect(response.code).to eq(-1)
|
230
230
|
end
|
@@ -323,4 +323,28 @@ RSpec.describe NetRegistry::ResponseBuilder do
|
|
323
323
|
expect(factory.send(:validate_purchase_params, params.merge!(CCEXP: "What's up"))).to eq(["CCEXP invalid format", false])
|
324
324
|
end
|
325
325
|
end
|
326
|
+
|
327
|
+
describe "#validate_completion_params" do
|
328
|
+
let(:params) { {AMOUNT: "100", CCNUM: "111111111111", CCEXP: "10/15", PREAUTHNUM: "111111111"}}
|
329
|
+
it { expect(factory.send(:validate_completion_params, params)).to eq(["", true]) }
|
330
|
+
it "does not have amount in params hash" do
|
331
|
+
expect(factory.send(:validate_completion_params, params.merge!(AMOUNT: nil))).to eq(["AMOUNT not found", false])
|
332
|
+
expect(factory.send(:validate_completion_params, params.merge!(AMOUNT: ""))).to eq(["AMOUNT not found", false])
|
333
|
+
end
|
334
|
+
|
335
|
+
it "does not have CCNUM in params hash" do
|
336
|
+
expect(factory.send(:validate_completion_params, params.merge!(CCNUM: nil))).to eq(["CCNUM not found", false])
|
337
|
+
expect(factory.send(:validate_completion_params, params.merge!(CCNUM: ""))).to eq(["CCNUM not found", false])
|
338
|
+
end
|
339
|
+
|
340
|
+
it "does not have CCEXP in params hash" do
|
341
|
+
expect(factory.send(:validate_completion_params, params.merge!(CCEXP: nil))).to eq(["CCEXP not found", false])
|
342
|
+
expect(factory.send(:validate_completion_params, params.merge!(CCEXP: ""))).to eq(["CCEXP not found", false])
|
343
|
+
end
|
344
|
+
|
345
|
+
it "invalid CCEXP format" do
|
346
|
+
expect(factory.send(:validate_completion_params, params.merge!(CCEXP: "12/29/2015"))).to eq(["CCEXP invalid format", false])
|
347
|
+
expect(factory.send(:validate_completion_params, params.merge!(CCEXP: "What's up"))).to eq(["CCEXP invalid format", false])
|
348
|
+
end
|
349
|
+
end
|
326
350
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -23,6 +23,8 @@ Bundler.setup
|
|
23
23
|
require 'webmock/rspec'
|
24
24
|
WebMock.disable_net_connect!(allow_localost: true)
|
25
25
|
require 'net_registry'
|
26
|
+
require 'coveralls'
|
27
|
+
Coveralls.wear!
|
26
28
|
RSpec.configure do |config|
|
27
29
|
# rspec-expectations config goes here. You can use an alternate
|
28
30
|
# assertion/expectation library such as wrong or the stdlib/minitest
|
data/spec/transaction_spec.rb
CHANGED
@@ -86,7 +86,7 @@ RSpec.describe NetRegistry::Transaction do
|
|
86
86
|
|
87
87
|
describe "#time" do
|
88
88
|
it "assigns time" do
|
89
|
-
time = "2000
|
89
|
+
time = "2000-07-31 14:28:20"
|
90
90
|
expect(transaction.time).to be_nil
|
91
91
|
transaction.time = time
|
92
92
|
expect(transaction.time).to eq(time)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: net_registry
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ray Tung
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-08-
|
11
|
+
date: 2015-08-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -28,44 +28,44 @@ dependencies:
|
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 10.4.2
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 10.4.2
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 3.3.0
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 3.3.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: webmock
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 1.21.0
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 1.21.0
|
69
69
|
description: |-
|
70
70
|
This gem serves as a Ruby wrapper for the NetRegistry Payment Gateway's
|
71
71
|
API. Official documentation can be found at http://www.netregistry.com.au/ee-images/uploads/support/NR-ecom-gateway8.pdf. Source can be found on https://github.com/carnextnoor/net_registry
|
@@ -77,6 +77,7 @@ extra_rdoc_files: []
|
|
77
77
|
files:
|
78
78
|
- ".gitignore"
|
79
79
|
- ".rspec"
|
80
|
+
- ".travis.yml"
|
80
81
|
- Gemfile
|
81
82
|
- LICENSE.txt
|
82
83
|
- README.md
|
@@ -109,7 +110,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
109
110
|
requirements:
|
110
111
|
- - ">="
|
111
112
|
- !ruby/object:Gem::Version
|
112
|
-
version:
|
113
|
+
version: 2.1.0
|
113
114
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
115
|
requirements:
|
115
116
|
- - ">="
|