paytrace 0.0.7 → 0.0.8
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/README.md +1 -1
- data/lib/paytrace/api/fields.rb +0 -1
- data/lib/paytrace/api/request.rb +20 -4
- data/lib/paytrace/customer.rb +5 -1
- data/lib/paytrace/transaction.rb +6 -2
- data/lib/paytrace/version.rb +1 -1
- data/test/paytrace/api/request_spec.rb +9 -0
- data/test/paytrace/customer_spec.rb +4 -4
- data/test/paytrace/transaction_spec.rb +3 -3
- data/test/scripts/run_recur_payments_integration.rb +90 -0
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc24d8b07a7ac3d137357a112e9f82722e8cdba9
|
4
|
+
data.tar.gz: 6db8dc240022b174b1c519cbbfdf71dc8c4a1f4b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f1cb13b0698362191da90230643f5bb13e3a6e85de366fe4727b3195d2681f74171d6cd629fc0fdf546c0ac5f522763dc22c6480f4fa1143275d7c4a72a84ea
|
7
|
+
data.tar.gz: 43e763f160328816280a99dcb8d75701ce6ab827ca5b559c040e8557854df9f627c4710428a3437a49323a880b68b21305e83b864145f4dbd83926d7d82e1d2e
|
data/README.md
CHANGED
data/lib/paytrace/api/fields.rb
CHANGED
data/lib/paytrace/api/request.rb
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
module PayTrace
|
2
2
|
module API
|
3
3
|
class Request
|
4
|
-
|
5
|
-
attr_reader :params, :field_delim, :value_delim
|
4
|
+
attr_reader :params, :field_delim, :value_delim, :discretionary_data
|
6
5
|
|
7
6
|
def initialize
|
8
7
|
@field_delim = "|"
|
@@ -14,12 +13,29 @@ module PayTrace
|
|
14
13
|
terms: "Y"
|
15
14
|
}
|
16
15
|
|
16
|
+
@discretionary_data = {}
|
17
17
|
end
|
18
18
|
|
19
19
|
def to_parms_string()
|
20
|
-
@params.map do |k,v|
|
20
|
+
raw_request = @params.map do |k,v|
|
21
21
|
"#{PayTrace::API.fields[k]}#{@value_delim}#{v}"
|
22
|
-
end.join(@field_delim) <<
|
22
|
+
end.join(@field_delim) << @field_delim
|
23
|
+
|
24
|
+
if @discretionary_data.any?
|
25
|
+
raw_request << @discretionary_data.map do |k,v|
|
26
|
+
"#{k}#{@value_delim}#{v}"
|
27
|
+
end.join(@field_delim) << @field_delim
|
28
|
+
end
|
29
|
+
|
30
|
+
raw_request
|
31
|
+
end
|
32
|
+
|
33
|
+
def set_discretionary(k, v = nil)
|
34
|
+
if k.is_a?(Hash)
|
35
|
+
@discretionary_data = k
|
36
|
+
else
|
37
|
+
@discretionary_data[k] = v unless v.nil?
|
38
|
+
end
|
23
39
|
end
|
24
40
|
|
25
41
|
def set_param(k, v)
|
data/lib/paytrace/customer.rb
CHANGED
@@ -62,7 +62,11 @@ module PayTrace
|
|
62
62
|
request.set_param(:customer_password, params[:customer_password])
|
63
63
|
request.set_param(:account_number, params[:account_number])
|
64
64
|
request.set_param(:routing_number, params[:routing_number])
|
65
|
-
|
65
|
+
if params[:discretionary_data]
|
66
|
+
params[:discretionary_data].keys.each do |k|
|
67
|
+
request.set_discretionary(k, params[:discretionary_data][k])
|
68
|
+
end
|
69
|
+
end
|
66
70
|
|
67
71
|
gateway = PayTrace::API::Gateway.new
|
68
72
|
response = gateway.send_request(request)
|
data/lib/paytrace/transaction.rb
CHANGED
@@ -81,7 +81,7 @@ module PayTrace
|
|
81
81
|
end
|
82
82
|
|
83
83
|
attr_reader :amount, :credit_card, :type, :customer, :billing_address, :shipping_address,:optional_fields
|
84
|
-
attr_accessor :response
|
84
|
+
attr_accessor :response, :discretionary_data
|
85
85
|
|
86
86
|
TRANSACTION_METHOD = "PROCESSTRANX"
|
87
87
|
|
@@ -92,11 +92,12 @@ module PayTrace
|
|
92
92
|
|
93
93
|
|
94
94
|
|
95
|
-
def initialize(amount: nil, credit_card: nil, customer: nil, type: nil, optional: nil )
|
95
|
+
def initialize(amount: nil, credit_card: nil, customer: nil, type: nil, optional: nil, discretionary_data: {} )
|
96
96
|
@amount = amount
|
97
97
|
@credit_card = credit_card
|
98
98
|
@type = type
|
99
99
|
@customer = customer
|
100
|
+
@discretionary_data = discretionary_data || {}
|
100
101
|
include_optional(optional) if optional
|
101
102
|
end
|
102
103
|
|
@@ -110,6 +111,9 @@ module PayTrace
|
|
110
111
|
add_transaction_info(request)
|
111
112
|
add_addresses(request)
|
112
113
|
add_optional_fields(request) if optional_fields
|
114
|
+
if @discretionary_data.any?
|
115
|
+
request.set_discretionary(@discretionary_data)
|
116
|
+
end
|
113
117
|
end
|
114
118
|
|
115
119
|
private
|
data/lib/paytrace/version.rb
CHANGED
@@ -35,4 +35,13 @@ describe PayTrace::API::Request do
|
|
35
35
|
|
36
36
|
-> { r.set_param(:foo, "bar") }.must_raise PayTrace::Exceptions::ValidationError
|
37
37
|
end
|
38
|
+
|
39
|
+
it "properly appends discretionary data" do
|
40
|
+
r = PayTrace::API::Request.new
|
41
|
+
r.set_param(:billing_name, "Fred Jones")
|
42
|
+
r.set_discretionary(:hair_color, "red")
|
43
|
+
|
44
|
+
r.to_parms_string.must_equal "UN~#{PayTrace.configuration.user_name}|PSWD~#{PayTrace.configuration.password}|TERMS~Y|" +
|
45
|
+
"BNAME~Fred Jones|hair_color~red|"
|
46
|
+
end
|
38
47
|
end
|
@@ -95,13 +95,13 @@ describe PayTrace::Customer do
|
|
95
95
|
customer_password: "none_shall_pass",
|
96
96
|
account_number: 123456789,
|
97
97
|
routing_number: 12345678,
|
98
|
-
discretionary_data: "
|
98
|
+
discretionary_data: {hair_color: "red"}
|
99
99
|
}
|
100
100
|
|
101
101
|
PayTrace::Customer.from_transaction_id(params)
|
102
102
|
PayTrace::API::Gateway.last_request.must_equal base_url + "METHOD~CreateCustomer|CUSTID~foo_bar|TRANXID~12345678|EMAIL~support@paytrace.com|" +
|
103
103
|
"PHONE~123-555-1212|FAX~456-555-1212|CUSTPSWD~none_shall_pass|DDA~123456789|TR~12345678|" +
|
104
|
-
"
|
104
|
+
"hair_color~red|"
|
105
105
|
end
|
106
106
|
end
|
107
107
|
|
@@ -157,7 +157,7 @@ describe PayTrace::Customer do
|
|
157
157
|
customer_password: "none_shall_pass",
|
158
158
|
account_number: 123456789,
|
159
159
|
routing_number: 12345678,
|
160
|
-
discretionary_data: "
|
160
|
+
discretionary_data: {hair_color: "red"}
|
161
161
|
}
|
162
162
|
|
163
163
|
c = PayTrace::Customer.new
|
@@ -165,7 +165,7 @@ describe PayTrace::Customer do
|
|
165
165
|
|
166
166
|
PayTrace::API::Gateway.last_request.must_equal base_url + "METHOD~UpdateCustomer|NEWCUSTID~foo_bar|" +
|
167
167
|
"EMAIL~support@paytrace.com|PHONE~123-555-1212|FAX~456-555-1212|CUSTPSWD~none_shall_pass|DDA~123456789|" +
|
168
|
-
"TR~12345678|
|
168
|
+
"TR~12345678|hair_color~red|"
|
169
169
|
end
|
170
170
|
end
|
171
171
|
|
@@ -275,9 +275,9 @@ describe PayTrace::Transaction do
|
|
275
275
|
tax_amount: "1.00",
|
276
276
|
return_clr: "Y",
|
277
277
|
enable_partial_authentication:"Y",
|
278
|
-
discretionary_data:"This is some data that is discretionary",
|
279
278
|
custom_dba:"NewName"
|
280
|
-
}
|
279
|
+
},
|
280
|
+
discretionary_data: {hair_color: "red"}
|
281
281
|
)
|
282
282
|
|
283
283
|
r = PayTrace::API::Request.new
|
@@ -290,7 +290,7 @@ describe PayTrace::Transaction do
|
|
290
290
|
url.must_match /\|EMAIL~it@paytrace.com\|/
|
291
291
|
url.must_match /\|RETURNCLR~Y\|/
|
292
292
|
url.must_match /\|ENABLEPARTIALAUTH~Y\|/
|
293
|
-
url.must_match /\|
|
293
|
+
url.must_match /\|hair_color~red\|/
|
294
294
|
url.must_match /\|CUSTOMDBA~NewName\|/
|
295
295
|
end
|
296
296
|
|
@@ -0,0 +1,90 @@
|
|
1
|
+
require 'paytrace'
|
2
|
+
|
3
|
+
# see: http://help.paytrace.com/api-email-receipt for details
|
4
|
+
|
5
|
+
#
|
6
|
+
# Helper that loops through the response values and dumps them out
|
7
|
+
#
|
8
|
+
def dump_response_values(response)
|
9
|
+
if(response.has_errors?)
|
10
|
+
response.errors.each do |key, value|
|
11
|
+
puts "#{key.ljust(20)}#{value}"
|
12
|
+
end
|
13
|
+
else
|
14
|
+
response.values.each do |key, value|
|
15
|
+
puts "#{key.ljust(20)}#{value}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def log(msg)
|
21
|
+
puts ">>>>>> #{msg}"
|
22
|
+
end
|
23
|
+
|
24
|
+
PayTrace.configure do |config|
|
25
|
+
config.user_name = "demo123"
|
26
|
+
config.password = "demo123"
|
27
|
+
config.domain = "stage.paytrace.com"
|
28
|
+
end
|
29
|
+
|
30
|
+
# this should be a valid credit card number (it can be a "sandbox" number, however)
|
31
|
+
cc = PayTrace::CreditCard.new({
|
32
|
+
card_number: "4111111111111111",
|
33
|
+
expiration_month: 12,
|
34
|
+
expiration_year: 2014
|
35
|
+
})
|
36
|
+
ba = PayTrace::Address.new({
|
37
|
+
name: "John Doe",
|
38
|
+
street: "1234 Main Street",
|
39
|
+
street2: "Apartment 1B",
|
40
|
+
city: "Shoreline",
|
41
|
+
state: "WA",
|
42
|
+
country: "US",
|
43
|
+
postal_code: "98133",
|
44
|
+
address_type: :billing
|
45
|
+
})
|
46
|
+
extra = {
|
47
|
+
email: "support@paytrace.com",
|
48
|
+
phone: "206-555-1212",
|
49
|
+
fax: "206-555-1313",
|
50
|
+
password: "foxtrot123",
|
51
|
+
account_number: 123456789,
|
52
|
+
routing_number: 12345678,
|
53
|
+
discretionary_data: "Discretionary data."
|
54
|
+
}
|
55
|
+
|
56
|
+
PayTrace::API::Gateway.debug = true
|
57
|
+
|
58
|
+
begin
|
59
|
+
log "Attempting to remove existing customer 'john_doe'..."
|
60
|
+
c = PayTrace::Customer.new("john_doe")
|
61
|
+
c.delete()
|
62
|
+
rescue PayTrace::Exceptions::ErrorResponse
|
63
|
+
log "No such cusomter... continuing..."
|
64
|
+
end
|
65
|
+
|
66
|
+
log "Creating customer john_doe..."
|
67
|
+
c = PayTrace::Customer.from_cc_info({customer_id: "john_doe", credit_card: cc, billing_address: ba}.merge(extra))
|
68
|
+
log "Customer ID: #{c.id}"
|
69
|
+
dump_response_values(PayTrace::API::Gateway.last_response)
|
70
|
+
|
71
|
+
log "Creating recurrence for john_doe..."
|
72
|
+
params = {
|
73
|
+
customer_id: "john_doe",
|
74
|
+
recur_frequency: "3",
|
75
|
+
recur_start: "4/22/2016",
|
76
|
+
recur_count: 999,
|
77
|
+
amount: 9.99,
|
78
|
+
transaction_type: "sale",
|
79
|
+
description: "Recurring transaction",
|
80
|
+
recur_receipt: "Y",
|
81
|
+
recur_type: "A"
|
82
|
+
}
|
83
|
+
recur_id = PayTrace::RecurringTransaction.create(params)
|
84
|
+
puts ">>>>>>> Recurrence ID: #{recur_id}"
|
85
|
+
|
86
|
+
log "Deleting recurrence #{recur_id}..."
|
87
|
+
PayTrace::RecurringTransaction.delete({recur_id: recur_id})
|
88
|
+
|
89
|
+
log "Deleting customer 'john_doe'..."
|
90
|
+
c.delete()
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paytrace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Trevor Redfern
|
@@ -139,6 +139,7 @@ files:
|
|
139
139
|
- test/paytrace/transaction_spec.rb
|
140
140
|
- test/scripts/run_create_customer.rb
|
141
141
|
- test/scripts/run_email_request.rb
|
142
|
+
- test/scripts/run_recur_payments_integration.rb
|
142
143
|
- test/test_helper.rb
|
143
144
|
- vagrant-bootstrap.sh
|
144
145
|
homepage: http://github.com/PayTrace/paytrace_ruby
|
@@ -180,4 +181,5 @@ test_files:
|
|
180
181
|
- test/paytrace/transaction_spec.rb
|
181
182
|
- test/scripts/run_create_customer.rb
|
182
183
|
- test/scripts/run_email_request.rb
|
184
|
+
- test/scripts/run_recur_payments_integration.rb
|
183
185
|
- test/test_helper.rb
|