paytrace 0.1.21 → 0.1.23
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/paytrace.rb +1 -0
- data/lib/paytrace/address.rb +17 -10
- data/lib/paytrace/api/fields.rb +2 -0
- data/lib/paytrace/api/request.rb +26 -3
- data/lib/paytrace/batch_operations.rb +62 -0
- data/lib/paytrace/customer.rb +13 -18
- data/lib/paytrace/recurring_transaction.rb +13 -11
- data/lib/paytrace/version.rb +1 -1
- data/paytrace.gemspec +1 -0
- data/test/paytrace/api/request_spec.rb +8 -0
- data/test/paytrace/batch_operations_spec.rb +43 -0
- data/test/scripts/run_export_batches.rb +32 -0
- metadata +21 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb8b55937b9c0b2a71ebf27a80842724762b006d
|
4
|
+
data.tar.gz: 872c601caeb2ebe395d9ff3abc1c64edde62f78b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa3d3191c00543ab32e097a41a2b50fe8ab74eff126c64e288ae9d1b74dc841a7316e44706357ea14baca473673674a0561a59e07f82e913a0ccb264336cd44e
|
7
|
+
data.tar.gz: 0b32bc57ddec96fa1007f53118cbfc85fd685d804048a9729ae5356868c783e1fd6a692b3072aff36602321a9772c35a4d76ad28b0f02f7ecd7ca18d382ad574
|
data/lib/paytrace.rb
CHANGED
data/lib/paytrace/address.rb
CHANGED
@@ -5,6 +5,17 @@ module PayTrace
|
|
5
5
|
class Address
|
6
6
|
attr_accessor :name, :street,:street2,:city,:state, :country,:region,:postal_code,:address_type
|
7
7
|
|
8
|
+
ATTRIBUTE_MAP = [
|
9
|
+
[:name, :name],
|
10
|
+
[:address, :street],
|
11
|
+
[:address2, :street2],
|
12
|
+
[:city, :city],
|
13
|
+
[:region, :region],
|
14
|
+
[:state, :state],
|
15
|
+
[:postal_code, :postal_code],
|
16
|
+
[:country, :country]
|
17
|
+
]
|
18
|
+
|
8
19
|
# Initialize a new address instance. Parameters are symbolic keys in a hash. They are:
|
9
20
|
# * *:name* -- the name on this address
|
10
21
|
# * *:street* -- the street address
|
@@ -31,16 +42,12 @@ module PayTrace
|
|
31
42
|
# Parameters:
|
32
43
|
# * *request* -- the request object to apply this address to
|
33
44
|
def set_request(request)
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
request.set_param(:"#{atype_str}_region", region) if region
|
41
|
-
request.set_param(:"#{atype_str}_state", state) if state
|
42
|
-
request.set_param(:"#{atype_str}_postal_code", postal_code) if postal_code
|
43
|
-
request.set_param(:"#{atype_str}_country", country) if country
|
45
|
+
ATTRIBUTE_MAP.each do |request_name, attribute_name|
|
46
|
+
unless request_name == :region && address_type == :billing # special case
|
47
|
+
# this is ugly, but it saves us from subclassing just to change field names in a predictable way...
|
48
|
+
request.set_param("#{address_type.to_s}_#{request_name}".to_sym, self.send(attribute_name))
|
49
|
+
end
|
50
|
+
end
|
44
51
|
end
|
45
52
|
end
|
46
53
|
end
|
data/lib/paytrace/api/fields.rb
CHANGED
data/lib/paytrace/api/request.rb
CHANGED
@@ -42,10 +42,16 @@ module PayTrace
|
|
42
42
|
# Sets discretionary data keys and values
|
43
43
|
# * *:key* -- the name of the setting
|
44
44
|
# * *:value* -- the value of the setting
|
45
|
+
#
|
46
|
+
# _Note:_ you can bulk-set discretionary data by simply passing in a hash as the "key"
|
45
47
|
def set_discretionary(key, value = nil)
|
46
48
|
if key.is_a?(Hash)
|
47
|
-
|
48
|
-
|
49
|
+
ddata_hash = key
|
50
|
+
ddata_hash.keys.each do |inner_key|
|
51
|
+
inner_value = ddata_hash[inner_key]
|
52
|
+
@discretionary_data[inner_key] = inner_value unless inner_value.nil?
|
53
|
+
end
|
54
|
+
elsif key.is_a?(Symbol)
|
49
55
|
@discretionary_data[key] = value unless value.nil?
|
50
56
|
end
|
51
57
|
end
|
@@ -86,9 +92,26 @@ module PayTrace
|
|
86
92
|
# Sets multiple parameters at once
|
87
93
|
# * *:keys* -- an array of key names to extract from the params hash
|
88
94
|
# * *:params* -- the parameters hash to be extracted from
|
95
|
+
#
|
96
|
+
# _Note:_ the values in *:keys* can also include arrays of two values (techincally, a tuple). The sub-array contains the name of the field that will be used in the request, and the name of the field in the params. This allows more succinct parameter names; e.g. *:address* instead of *:billing_address*. Example:
|
97
|
+
#
|
98
|
+
# #
|
99
|
+
# # note the nested array; this will send the field :billing_address,
|
100
|
+
# # but uses the argument :address as the argument name
|
101
|
+
# #
|
102
|
+
# set_params([
|
103
|
+
# :foo,
|
104
|
+
# [:billing_address, :address]
|
105
|
+
# ], params)
|
89
106
|
def set_params(keys, params)
|
90
107
|
keys.each do |key|
|
91
|
-
|
108
|
+
if key.is_a?(Array)
|
109
|
+
request_variable = key[0]
|
110
|
+
arg_name = key[1]
|
111
|
+
set_param(request_variable, params[arg_name])
|
112
|
+
else
|
113
|
+
set_param(key, params[key])
|
114
|
+
end
|
92
115
|
end
|
93
116
|
end
|
94
117
|
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module PayTrace
|
2
|
+
# This class serves as a container for batch processing methods
|
3
|
+
class BatchOperations
|
4
|
+
EXPORT_SINGLE_METHOD = "ExportBatch"
|
5
|
+
EXPORT_MULTIPLE_METHOD = "ExportBatches"
|
6
|
+
EXPORT_DETAILS_METHOD = "ExportBatchDetails"
|
7
|
+
|
8
|
+
# See http://help.paytrace.com/api-export-single-batch
|
9
|
+
#
|
10
|
+
# Verifying batch details is sometimes necessary for your application to be able to determine deposit and transaction sums. The ExportBatch method is useful for extracting a summary of a specific batch or currently pending settlement break-down by card and transaction type.
|
11
|
+
#
|
12
|
+
# Optional parameters hash:
|
13
|
+
#
|
14
|
+
# * *:batch_number* -- number of the batch of transactions you wish to export
|
15
|
+
def self.exportSingle(params = {})
|
16
|
+
request = PayTrace::API::Request.new
|
17
|
+
request.set_param(:method, EXPORT_SINGLE_METHOD)
|
18
|
+
request.set_param(:batch_number, params[:batch_number])
|
19
|
+
|
20
|
+
gateway = PayTrace::API::Gateway.new
|
21
|
+
response = gateway.send_request(request)
|
22
|
+
unless response.has_errors?
|
23
|
+
response.values
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# See http://help.paytrace.com/api-export-batches
|
28
|
+
#
|
29
|
+
# Exports summary information about multiple batches over a given date range. Required parameters:
|
30
|
+
#
|
31
|
+
# * *:start_date* -- indicates when to start searching for transactions to export. Must be a valid date formatted as MM/DD/YYYY
|
32
|
+
# * *:end_date* -- indicates when to end searching for transactions to export. Must be a valid date formatted as MM/DD/YYYY
|
33
|
+
def self.exportMultiple(params = {})
|
34
|
+
request = PayTrace::API::Request.new
|
35
|
+
request.set_param(:method, EXPORT_MULTIPLE_METHOD)
|
36
|
+
request.set_params([:start_date, :end_date], params)
|
37
|
+
|
38
|
+
gateway = PayTrace::API::Gateway.new
|
39
|
+
response = gateway.send_request(request)
|
40
|
+
unless response.has_errors?
|
41
|
+
response.values
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# See http://help.paytrace.com/api-export-batch-details
|
46
|
+
#
|
47
|
+
# Exports transaction details of a given batch. Required parameters hash:
|
48
|
+
#
|
49
|
+
# * *:batch_number* -- number of the batch of transactions you wish to export
|
50
|
+
def self.exportDetails(params = {})
|
51
|
+
request = PayTrace::API::Request.new
|
52
|
+
request.set_param(:method, EXPORT_DETAILS_METHOD)
|
53
|
+
request.set_param(:batch_number, params[:batch_number])
|
54
|
+
|
55
|
+
gateway = PayTrace::API::Gateway.new
|
56
|
+
response = gateway.send_request(request)
|
57
|
+
unless response.has_errors?
|
58
|
+
response.values
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
data/lib/paytrace/customer.rb
CHANGED
@@ -131,28 +131,23 @@ module PayTrace
|
|
131
131
|
# Internal helper method; not meant to be called directly.
|
132
132
|
def set_request_data(params, request = nil)
|
133
133
|
request ||= PayTrace::API::Request.new
|
134
|
-
request.
|
135
|
-
|
136
|
-
|
134
|
+
request.set_params([
|
135
|
+
:customer_id,
|
136
|
+
:new_customer_id,
|
137
|
+
:transaction_id,
|
138
|
+
:email,
|
139
|
+
[:customer_phone, :phone],
|
140
|
+
[:customer_fax, :fax],
|
141
|
+
:customer_password,
|
142
|
+
:account_number,
|
143
|
+
:routing_number
|
144
|
+
], params)
|
137
145
|
|
138
146
|
params[:billing_address].set_request(request) if params[:billing_address]
|
139
147
|
params[:shipping_address].set_request(request) if params[:shipping_address]
|
148
|
+
params[:credit_card].set_request_data(request) if params[:credit_card]
|
140
149
|
|
141
|
-
|
142
|
-
params[:credit_card].set_request_data(request)
|
143
|
-
end
|
144
|
-
|
145
|
-
request.set_param(:email, params[:email])
|
146
|
-
request.set_param(:customer_phone, params[:phone])
|
147
|
-
request.set_param(:customer_fax, params[:fax])
|
148
|
-
request.set_param(:customer_password, params[:customer_password])
|
149
|
-
request.set_param(:account_number, params[:account_number])
|
150
|
-
request.set_param(:routing_number, params[:routing_number])
|
151
|
-
if params[:discretionary_data]
|
152
|
-
params[:discretionary_data].keys.each do |k|
|
153
|
-
request.set_discretionary(k, params[:discretionary_data][k])
|
154
|
-
end
|
155
|
-
end
|
150
|
+
request.set_discretionary(params[:discretionary_data])
|
156
151
|
end
|
157
152
|
end
|
158
153
|
end
|
@@ -112,17 +112,19 @@ module PayTrace
|
|
112
112
|
request = PayTrace::API::Request.new
|
113
113
|
request.set_param(:method, method)
|
114
114
|
|
115
|
-
request.
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
115
|
+
request.set_params([
|
116
|
+
:recur_id,
|
117
|
+
:customer_id,
|
118
|
+
:recur_frequency,
|
119
|
+
:recur_start,
|
120
|
+
:recur_next,
|
121
|
+
:recur_count,
|
122
|
+
:amount,
|
123
|
+
:transaction_type,
|
124
|
+
:description,
|
125
|
+
:recur_receipt,
|
126
|
+
:recur_type
|
127
|
+
], params)
|
126
128
|
|
127
129
|
gateway = PayTrace::API::Gateway.new
|
128
130
|
gateway.send_request(request)
|
data/lib/paytrace/version.rb
CHANGED
data/paytrace.gemspec
CHANGED
@@ -38,6 +38,14 @@ describe PayTrace::API::Request do
|
|
38
38
|
r.params[:billing_postal_code].must_equal [98133]
|
39
39
|
end
|
40
40
|
|
41
|
+
it "can alias parameters in set_params" do
|
42
|
+
params = {name: "Ron Jones", postal_code: 98134}
|
43
|
+
r = PayTrace::API::Request.new
|
44
|
+
r.set_params([[:billing_name, :name], [:billing_postal_code, :postal_code]], params)
|
45
|
+
r.params[:billing_name].must_equal ["Ron Jones"]
|
46
|
+
r.params[:billing_postal_code].must_equal [98134]
|
47
|
+
end
|
48
|
+
|
41
49
|
it "raises a validation exception for unknown fields" do
|
42
50
|
r = PayTrace::API::Request.new
|
43
51
|
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '../../test_helper.rb')
|
2
|
+
|
3
|
+
describe PayTrace::BatchOperations do
|
4
|
+
def base_url(method)
|
5
|
+
"UN~#{PayTrace.configuration.user_name}|PSWD~#{PayTrace.configuration.password}|TERMS~Y|METHOD~#{method}|"
|
6
|
+
end
|
7
|
+
|
8
|
+
before do
|
9
|
+
PayTrace::API::Gateway.debug = true
|
10
|
+
PayTrace::API::Gateway.reset_trace()
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "exportSingle" do
|
14
|
+
it "generates the correct request" do
|
15
|
+
PayTrace::API::Gateway.next_response = "RESULT~Ok"
|
16
|
+
result = PayTrace::BatchOperations.exportSingle()
|
17
|
+
PayTrace::API::Gateway.last_request.must_equal base_url(PayTrace::BatchOperations::EXPORT_SINGLE_METHOD)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "accepts an optional batch number" do
|
21
|
+
PayTrace::API::Gateway.next_response = "RESULT~Ok"
|
22
|
+
result = PayTrace::BatchOperations.exportSingle(batch_number: 12345)
|
23
|
+
PayTrace::API::Gateway.last_request.must_equal base_url(PayTrace::BatchOperations::EXPORT_SINGLE_METHOD) + "BATCHNUMBER~12345|"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "exportMultiple" do
|
28
|
+
it "generates the correct request" do
|
29
|
+
PayTrace::API::Gateway.next_response = "RESULT~Ok"
|
30
|
+
result = PayTrace::BatchOperations.exportMultiple(start_date: "03/01/2014", end_date: "06/01/2014")
|
31
|
+
PayTrace::API::Gateway.last_request.must_equal base_url(PayTrace::BatchOperations::EXPORT_MULTIPLE_METHOD) +
|
32
|
+
"SDATE~03/01/2014|EDATE~06/01/2014|"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "exportDetails" do
|
37
|
+
it "generates the correct request" do
|
38
|
+
PayTrace::API::Gateway.next_response = "RESULT~Ok"
|
39
|
+
result = PayTrace::BatchOperations.exportDetails(batch_number: 12346)
|
40
|
+
PayTrace::API::Gateway.last_request.must_equal base_url(PayTrace::BatchOperations::EXPORT_DETAILS_METHOD) + "BATCHNUMBER~12346|"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
$:<< "./lib" # uncomment this to run against a Git clone instead of an installed gem
|
2
|
+
|
3
|
+
require "paytrace"
|
4
|
+
require "paytrace/debug"
|
5
|
+
|
6
|
+
# change this as needed to reflect the username, password, and test host you're testing against
|
7
|
+
PayTrace::Debug.configure_test("demo123", "demo123", "stage.paytrace.com")
|
8
|
+
|
9
|
+
# export summary info of a single batch (by batch number in this case, otherwise chooses latest batch)
|
10
|
+
PayTrace::Debug.trace do
|
11
|
+
params = {
|
12
|
+
batch_number: 413
|
13
|
+
}
|
14
|
+
result = PayTrace::BatchOperations.exportSingle(params)
|
15
|
+
end
|
16
|
+
|
17
|
+
# export batches by date range
|
18
|
+
PayTrace::Debug.trace do
|
19
|
+
params = {
|
20
|
+
start_date: "01/01/2014",
|
21
|
+
end_date: "05/01/2014"
|
22
|
+
}
|
23
|
+
result = PayTrace::BatchOperations.exportMultiple(params)
|
24
|
+
end
|
25
|
+
|
26
|
+
# export batch transaction details
|
27
|
+
PayTrace::Debug.trace do
|
28
|
+
params = {
|
29
|
+
batch_number: 413
|
30
|
+
}
|
31
|
+
result = PayTrace::BatchOperations.exportDetails(params)
|
32
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paytrace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.23
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Trevor Redfern
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-05-
|
11
|
+
date: 2014-05-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: ruby_gntp
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
97
111
|
description: Integration with PayTrace Payment Gateway
|
98
112
|
email:
|
99
113
|
- trevor@paytrace.com
|
@@ -116,6 +130,7 @@ files:
|
|
116
130
|
- lib/paytrace/api/gateway.rb
|
117
131
|
- lib/paytrace/api/request.rb
|
118
132
|
- lib/paytrace/api/response.rb
|
133
|
+
- lib/paytrace/batch_operations.rb
|
119
134
|
- lib/paytrace/check_transaction.rb
|
120
135
|
- lib/paytrace/configuration.rb
|
121
136
|
- lib/paytrace/credit_card.rb
|
@@ -132,6 +147,7 @@ files:
|
|
132
147
|
- test/paytrace/api/gateway_spec.rb
|
133
148
|
- test/paytrace/api/request_spec.rb
|
134
149
|
- test/paytrace/api/response_spec.rb
|
150
|
+
- test/paytrace/batch_operations_spec.rb
|
135
151
|
- test/paytrace/check_transactions_spec.rb
|
136
152
|
- test/paytrace/configuration_spec.rb
|
137
153
|
- test/paytrace/credit_card_spec.rb
|
@@ -148,6 +164,7 @@ files:
|
|
148
164
|
- test/scripts/run_check_transactions.rb
|
149
165
|
- test/scripts/run_create_customer.rb
|
150
166
|
- test/scripts/run_email_request.rb
|
167
|
+
- test/scripts/run_export_batches.rb
|
151
168
|
- test/scripts/run_export_customers.rb
|
152
169
|
- test/scripts/run_export_transactions.rb
|
153
170
|
- test/scripts/run_level3_data.rb
|
@@ -186,6 +203,7 @@ test_files:
|
|
186
203
|
- test/paytrace/api/gateway_spec.rb
|
187
204
|
- test/paytrace/api/request_spec.rb
|
188
205
|
- test/paytrace/api/response_spec.rb
|
206
|
+
- test/paytrace/batch_operations_spec.rb
|
189
207
|
- test/paytrace/check_transactions_spec.rb
|
190
208
|
- test/paytrace/configuration_spec.rb
|
191
209
|
- test/paytrace/credit_card_spec.rb
|
@@ -202,6 +220,7 @@ test_files:
|
|
202
220
|
- test/scripts/run_check_transactions.rb
|
203
221
|
- test/scripts/run_create_customer.rb
|
204
222
|
- test/scripts/run_email_request.rb
|
223
|
+
- test/scripts/run_export_batches.rb
|
205
224
|
- test/scripts/run_export_customers.rb
|
206
225
|
- test/scripts/run_export_transactions.rb
|
207
226
|
- test/scripts/run_level3_data.rb
|