paytrace 0.0.5 → 0.0.6
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/api/fields.rb +1 -0
- data/lib/paytrace/api/request.rb +3 -57
- data/lib/paytrace/email_receipt_request.rb +32 -0
- data/lib/paytrace/transaction.rb +67 -1
- data/lib/paytrace/version.rb +1 -1
- data/test/paytrace/api/request_spec.rb +5 -190
- data/test/paytrace/email_receipt_request_spec.rb +19 -0
- data/test/paytrace/transaction_spec.rb +204 -0
- metadata +6 -4
- data/.ruby-version +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f22e1455f84e910000a9d9a751021ac5e473287
|
4
|
+
data.tar.gz: 01202f564b24a3ba0f6188771af8170dedcba65c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 66c923651c3dd5388ee6d692765b75c5e0f03b2e61f293ea39a35a00ffd5a897f0f0a4563a0a830c52fe6f8893f6d7da7a5d5e3f2fa267e42fa5e1df95b19dd5
|
7
|
+
data.tar.gz: ff35841365e29a55fe7c987e62a0ea1d8c1359598ebfb1e49c720aea0b0f0d714a18c70b2517b152b2088c11d85725debd8decd455f423d30122ecc0ed0cef96
|
data/lib/paytrace.rb
CHANGED
data/lib/paytrace/api/fields.rb
CHANGED
data/lib/paytrace/api/request.rb
CHANGED
@@ -4,7 +4,7 @@ module PayTrace
|
|
4
4
|
TRANSACTION_METHOD = "PROCESSTRANX"
|
5
5
|
attr_reader :params, :field_delim, :value_delim
|
6
6
|
|
7
|
-
def initialize
|
7
|
+
def initialize
|
8
8
|
@field_delim = "|"
|
9
9
|
@value_delim = "~"
|
10
10
|
|
@@ -14,7 +14,6 @@ module PayTrace
|
|
14
14
|
terms: "Y"
|
15
15
|
}
|
16
16
|
|
17
|
-
add_transaction(transaction) if transaction
|
18
17
|
end
|
19
18
|
|
20
19
|
def to_parms_string()
|
@@ -23,63 +22,10 @@ module PayTrace
|
|
23
22
|
end.join(@field_delim) << "|"
|
24
23
|
end
|
25
24
|
|
26
|
-
|
27
|
-
|
28
|
-
add_credit_card t.credit_card if t.credit_card
|
29
|
-
add_customer t.customer if t.customer
|
30
|
-
@params[:transaction_type] = t.type
|
31
|
-
@params[:method] = TRANSACTION_METHOD
|
32
|
-
@params[:amount] = t.amount
|
33
|
-
load_address(t)
|
34
|
-
load_misc_fields(t) if t.optional_fields
|
25
|
+
def set_param(k, v)
|
26
|
+
@params[k] = v
|
35
27
|
end
|
36
28
|
|
37
|
-
def add_credit_card(cc)
|
38
|
-
@params[:card_number] = cc.card_number if cc.card_number
|
39
|
-
@params[:expiration_month] = cc.expiration_month if cc.expiration_month
|
40
|
-
@params[:expiration_year] = cc.expiration_year if cc.expiration_year
|
41
|
-
@params[:swipe] = cc.swipe if cc.swipe
|
42
|
-
@params[:csc] = cc.csc if cc.csc
|
43
|
-
end
|
44
|
-
|
45
|
-
def load_misc_fields(t)
|
46
|
-
o = t.optional_fields
|
47
|
-
o.each do |k,v|
|
48
|
-
@params[k]= v
|
49
|
-
end
|
50
|
-
|
51
|
-
|
52
|
-
end
|
53
|
-
|
54
|
-
def load_address(t)
|
55
|
-
add_shipping_address(t.shipping_address) if t.shipping_address
|
56
|
-
add_billing_address(t.billing_address) if t.billing_address
|
57
|
-
end
|
58
|
-
|
59
|
-
def add_customer(c)
|
60
|
-
@params[:customer_id] = c.customer_id
|
61
|
-
end
|
62
|
-
|
63
|
-
def add_shipping_address(s)
|
64
|
-
add_address("shipping",s)
|
65
|
-
end
|
66
|
-
|
67
|
-
def add_billing_address(b)
|
68
|
-
add_address("billing",b)
|
69
|
-
end
|
70
|
-
|
71
|
-
def add_address(address_type, address)
|
72
|
-
@params[:"#{address_type}_name"] = address.name if address.name
|
73
|
-
@params[:"#{address_type}_address"] = address.street if address.street
|
74
|
-
@params[:"#{address_type}_address2"] = address.street2 if address.street2
|
75
|
-
@params[:"#{address_type}_city"] = address.city if address.city
|
76
|
-
@params[:"#{address_type}_region"] = address.region if address.region
|
77
|
-
@params[:"#{address_type}_state"] = address.state if address.state
|
78
|
-
@params[:"#{address_type}_postal_code"] = address.postal_code if address.postal_code
|
79
|
-
@params[:"#{address_type}_country"] = address.country if address.country
|
80
|
-
end
|
81
|
-
|
82
|
-
|
83
29
|
end
|
84
30
|
end
|
85
31
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module PayTrace
|
2
|
+
class EmailReceiptRequest
|
3
|
+
TRANSACTION_METHOD = "EmailReceipt"
|
4
|
+
attr_accessor :email, :id, :id_is_check_id
|
5
|
+
|
6
|
+
def initialize(email, id, id_is_check_id = false)
|
7
|
+
@email = email
|
8
|
+
@id = id
|
9
|
+
@id_is_check_id = id_is_check_id
|
10
|
+
end
|
11
|
+
|
12
|
+
def set_request(request = nil)
|
13
|
+
request ||= PayTrace::API::Request.new
|
14
|
+
request.set_param(:method, TRANSACTION_METHOD)
|
15
|
+
if @id_is_check_id
|
16
|
+
request.set_param(:check_id, @id)
|
17
|
+
else
|
18
|
+
request.set_param(:transaction_id, @id)
|
19
|
+
end
|
20
|
+
request.set_param(:email, @email)
|
21
|
+
|
22
|
+
request
|
23
|
+
end
|
24
|
+
|
25
|
+
def send_request(request = nil)
|
26
|
+
request ||= set_request
|
27
|
+
|
28
|
+
gateway = PayTrace::API::Gateway.new
|
29
|
+
gateway.send_request(request)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/paytrace/transaction.rb
CHANGED
@@ -66,7 +66,9 @@ module PayTrace
|
|
66
66
|
|
67
67
|
private
|
68
68
|
def send_request(t)
|
69
|
-
request = PayTrace::API::Request.new
|
69
|
+
request = PayTrace::API::Request.new
|
70
|
+
t.set_request(request)
|
71
|
+
|
70
72
|
gateway = PayTrace::API::Gateway.new
|
71
73
|
gateway.send_request(request)
|
72
74
|
end
|
@@ -81,6 +83,9 @@ module PayTrace
|
|
81
83
|
attr_reader :amount, :credit_card, :type, :customer, :billing_address, :shipping_address,:optional_fields
|
82
84
|
attr_accessor :response
|
83
85
|
|
86
|
+
TRANSACTION_METHOD = "PROCESSTRANX"
|
87
|
+
|
88
|
+
|
84
89
|
def set_shipping_same_as_billing()
|
85
90
|
@shipping_address = @billing_address
|
86
91
|
end
|
@@ -95,7 +100,68 @@ module PayTrace
|
|
95
100
|
include_optional(optional) if optional
|
96
101
|
end
|
97
102
|
|
103
|
+
def set_request(request)
|
104
|
+
add_transaction(request)
|
105
|
+
end
|
106
|
+
|
98
107
|
private
|
108
|
+
def add_transaction(request)
|
109
|
+
add_credit_card(request, credit_card) if credit_card
|
110
|
+
add_customer(request, customer) if customer
|
111
|
+
request.set_param(:transaction_type, type)
|
112
|
+
request.set_param(:method, TRANSACTION_METHOD)
|
113
|
+
request.set_param(:amount, amount)
|
114
|
+
load_address(request)
|
115
|
+
load_misc_fields(request) if optional_fields
|
116
|
+
end
|
117
|
+
|
118
|
+
def add_credit_card(request, cc)
|
119
|
+
request.set_param(:card_number, cc.card_number) if cc.card_number
|
120
|
+
request.set_param(:expiration_month, cc.expiration_month) if cc.expiration_month
|
121
|
+
request.set_param(:expiration_year, cc.expiration_year) if cc.expiration_year
|
122
|
+
request.set_param(:swipe, cc.swipe) if cc.swipe
|
123
|
+
request.set_param(:csc, cc.csc) if cc.csc
|
124
|
+
end
|
125
|
+
|
126
|
+
|
127
|
+
def load_misc_fields(request)
|
128
|
+
o = optional_fields
|
129
|
+
o.each do |k,v|
|
130
|
+
request.set_param(k, v)
|
131
|
+
end
|
132
|
+
|
133
|
+
|
134
|
+
end
|
135
|
+
|
136
|
+
def load_address(request)
|
137
|
+
add_shipping_address(request, shipping_address) if shipping_address
|
138
|
+
add_billing_address(request, billing_address) if billing_address
|
139
|
+
end
|
140
|
+
|
141
|
+
def add_customer(request, c)
|
142
|
+
request.set_param(:customer_id, c.customer_id)
|
143
|
+
end
|
144
|
+
|
145
|
+
def add_shipping_address(request, s)
|
146
|
+
add_address(request, "shipping",s)
|
147
|
+
end
|
148
|
+
|
149
|
+
def add_billing_address(request, b)
|
150
|
+
add_address(request, "billing",b)
|
151
|
+
end
|
152
|
+
|
153
|
+
def add_address(request, address_type, address)
|
154
|
+
request.set_param(:"#{address_type}_name", address.name) if address.name
|
155
|
+
request.set_param(:"#{address_type}_address", address.street) if address.street
|
156
|
+
request.set_param(:"#{address_type}_address2", address.street2) if address.street2
|
157
|
+
request.set_param(:"#{address_type}_city", address.city) if address.city
|
158
|
+
request.set_param(:"#{address_type}_region", address.region) if address.region
|
159
|
+
request.set_param(:"#{address_type}_state", address.state) if address.state
|
160
|
+
request.set_param(:"#{address_type}_postal_code", address.postal_code) if address.postal_code
|
161
|
+
request.set_param(:"#{address_type}_country", address.country) if address.country
|
162
|
+
end
|
163
|
+
|
164
|
+
|
99
165
|
def include_optional(args)
|
100
166
|
s = nil
|
101
167
|
b = nil
|
data/lib/paytrace/version.rb
CHANGED
@@ -24,194 +24,9 @@ describe PayTrace::API::Request do
|
|
24
24
|
to_url.must_equal "UN~request_test|PSWD~request_password|TERMS~Y|"
|
25
25
|
end
|
26
26
|
|
27
|
-
it "can
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
expiration_year: 24,
|
32
|
-
expiration_month: 10 }),
|
33
|
-
type: PayTrace::TransactionTypes::SALE})
|
34
|
-
r = PayTrace::API::Request.new(transaction: t)
|
35
|
-
|
36
|
-
r.params[:card_number].must_equal "1234123412341234"
|
37
|
-
r.params[:expiration_month].must_equal 10
|
38
|
-
r.params[:expiration_year].must_equal 24
|
39
|
-
r.params[:transaction_type].must_equal "SALE"
|
40
|
-
r.params[:method].must_equal "PROCESSTRANX"
|
41
|
-
r.params[:amount].must_equal "23.12"
|
42
|
-
|
43
|
-
url = r.to_parms_string
|
44
|
-
url.must_equal "UN~test|PSWD~test|TERMS~Y|CC~1234123412341234|EXPMNTH~10|EXPYR~24|TRANXTYPE~SALE|METHOD~PROCESSTRANX|AMOUNT~23.12|"
|
45
|
-
end
|
46
|
-
|
47
|
-
it "can use a customer id for processing the transaction" do
|
48
|
-
t = PayTrace::Transaction.new({amount: "12.34",
|
49
|
-
customer: PayTrace::Customer.new(customer_id: "1234"),
|
50
|
-
type: PayTrace::TransactionTypes::SALE
|
51
|
-
}
|
52
|
-
)
|
53
|
-
r = PayTrace::API::Request.new(transaction: t)
|
54
|
-
r.params[:customer_id].must_equal "1234"
|
55
|
-
r.params[:amount].must_equal "12.34"
|
56
|
-
|
57
|
-
url = r.to_parms_string
|
58
|
-
|
59
|
-
#Make sure it puts in values we expect
|
60
|
-
url.must_match /\|CUSTID~1234\|/
|
61
|
-
url.must_match /\|AMOUNT~12.34\|/
|
62
|
-
url.must_match /\|METHOD~PROCESSTRANX\|/
|
63
|
-
url.must_match /\|TRANXTYPE~SALE\|/
|
64
|
-
end
|
65
|
-
|
66
|
-
it "can include a billing address" do
|
67
|
-
t = PayTrace::Transaction.new(
|
68
|
-
optional:{
|
69
|
-
billing_address:{
|
70
|
-
name:"John Doe",
|
71
|
-
street:"1234 happy lane",
|
72
|
-
street2:"apt#2",
|
73
|
-
city:"Seattle",
|
74
|
-
state:"WA",
|
75
|
-
country: "US",
|
76
|
-
postal_code:"98107"
|
77
|
-
}
|
78
|
-
}
|
79
|
-
)
|
80
|
-
|
81
|
-
t.shipping_address.must_be_nil
|
82
|
-
|
83
|
-
r = PayTrace::API::Request.new(transaction: t)
|
84
|
-
|
85
|
-
url = r.to_parms_string
|
86
|
-
|
87
|
-
#Make sure it puts in values we expect
|
88
|
-
url.must_match /\|BNAME~John Doe\|/
|
89
|
-
url.must_match /\|BADDRESS~1234 happy lane\|/
|
90
|
-
url.must_match /\|BADDRESS2~apt#2\|/
|
91
|
-
url.must_match /\|BCITY~Seattle\|/
|
92
|
-
url.must_match /\|BSTATE~WA\|/
|
93
|
-
url.must_match /\|BSTATE~WA\|/
|
94
|
-
url.must_match /\|BCOUNTRY~US\|/
|
95
|
-
|
96
|
-
end
|
97
|
-
|
98
|
-
it "can include misc fields as well" do
|
99
|
-
t = PayTrace::Transaction.new(
|
100
|
-
optional: {
|
101
|
-
email:"it@paytrace.com",
|
102
|
-
description:"This is a test",
|
103
|
-
tax_amount: "1.00",
|
104
|
-
return_clr: "Y",
|
105
|
-
enable_partial_authentication:"Y",
|
106
|
-
discretionary_data:"This is some data that is discretionary",
|
107
|
-
custom_dba:"NewName"
|
108
|
-
}
|
109
|
-
)
|
110
|
-
|
111
|
-
r = PayTrace::API::Request.new(transaction: t)
|
112
|
-
|
113
|
-
url = r.to_parms_string
|
114
|
-
|
115
|
-
url.must_match /\|DESCRIPTION~This is a test\|/
|
116
|
-
url.must_match /\|TAX~1.00\|/
|
117
|
-
url.must_match /\|EMAIL~it@paytrace.com\|/
|
118
|
-
url.must_match /\|RETURNCLR~Y\|/
|
119
|
-
url.must_match /\|ENABLEPARTIALAUTH~Y\|/
|
120
|
-
url.must_match /\|DISCRETIONARY DATA~This is some data that is discretionary\|/
|
121
|
-
url.must_match /\|CUSTOMDBA~NewName\|/
|
122
|
-
end
|
123
|
-
|
124
|
-
it "can do a swipe transaction" do
|
125
|
-
cc = PayTrace::CreditCard.new( {
|
126
|
-
swipe: '%B4055010000000005^J/SCOTT^1212101001020001000000701000000?;4055010000000005=12121010010270100001?'
|
127
|
-
})
|
128
|
-
t = PayTrace::Transaction.new(
|
129
|
-
amount: '1.00',
|
130
|
-
credit_card:cc
|
131
|
-
)
|
132
|
-
|
133
|
-
r = PayTrace::API::Request.new(transaction: t)
|
134
|
-
url = r.to_parms_string
|
135
|
-
|
136
|
-
url.must_match /\|AMOUNT~1.00\|/
|
137
|
-
url.must_match /\|SWIPE~%B4055010000000005/
|
138
|
-
|
139
|
-
|
140
|
-
end
|
141
|
-
|
142
|
-
it "can do a reference sales request " do
|
143
|
-
|
144
|
-
t = PayTrace::Transaction.new(
|
145
|
-
amount: '1.00',
|
146
|
-
optional:{transaction_id: '1234'}
|
147
|
-
)
|
148
|
-
|
149
|
-
r = PayTrace::API::Request.new(transaction: t)
|
150
|
-
url = r.to_parms_string
|
151
|
-
|
152
|
-
url.must_match /\|AMOUNT~1.00\|/
|
153
|
-
url.must_match /\|TRANXID~1234|/
|
154
|
-
end
|
155
|
-
|
156
|
-
it "can create an approval code call" do
|
157
|
-
t = PayTrace::Transaction.new({amount: "23.12",
|
158
|
-
credit_card: PayTrace::CreditCard.new({
|
159
|
-
card_number: "1234123412341234",
|
160
|
-
expiration_year: 24,
|
161
|
-
expiration_month: 10 }),
|
162
|
-
type: PayTrace::TransactionTypes::ForcedSale,
|
163
|
-
optional:{approval_code:'1234'}
|
164
|
-
})
|
165
|
-
r = PayTrace::API::Request.new(transaction: t)
|
166
|
-
url = r.to_parms_string
|
167
|
-
|
168
|
-
url.must_match /\|APPROVAL~1234\|/
|
169
|
-
url.must_match /\|TRANXTYPE~Force\|/
|
170
|
-
|
171
|
-
end
|
172
|
-
|
173
|
-
it "can create a new cash_advance sale" do
|
174
|
-
cc = PayTrace::CreditCard.new( {
|
175
|
-
swipe: '%B4055010000000005^J/SCOTT^1212101001020001000000701000000?;4055010000000005=12121010010270100001?'
|
176
|
-
})
|
177
|
-
|
178
|
-
optional = {
|
179
|
-
billing_address:{
|
180
|
-
name:"John Doe",
|
181
|
-
street:"1234 happy lane",
|
182
|
-
street2:"apt#2",
|
183
|
-
city:"Seattle",
|
184
|
-
state:"WA",
|
185
|
-
country: "US",
|
186
|
-
postal_code:"98107"
|
187
|
-
},
|
188
|
-
id_number: "1234",
|
189
|
-
id_expiration:"12/20/2020",
|
190
|
-
cc_last_4: "1234",
|
191
|
-
cash_advance: "Y"
|
192
|
-
|
193
|
-
|
194
|
-
}
|
195
|
-
t = PayTrace::Transaction.new(
|
196
|
-
amount: '1.00',
|
197
|
-
credit_card:cc,
|
198
|
-
type: PayTrace::TransactionTypes::SALE,
|
199
|
-
optional:optional
|
200
|
-
)
|
201
|
-
|
202
|
-
r = PayTrace::API::Request.new(transaction: t)
|
203
|
-
url = r.to_parms_string
|
204
|
-
|
205
|
-
url.must_match /\|AMOUNT~1.00\|/
|
206
|
-
url.must_match /\|SWIPE~%B4055010000000005/
|
207
|
-
url.must_match /\|CASHADVANCE~Y\|/
|
208
|
-
url.must_match /\|PHOTOID~1234\|/
|
209
|
-
url.must_match /\|LAST4~1234\|/
|
210
|
-
url.must_match /\|BADDRESS~1234 happy lane\|/
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
27
|
+
it "can manually set params" do
|
28
|
+
r = PayTrace::API::Request.new
|
29
|
+
r.set_param(:foo, "bar")
|
30
|
+
r.params[:foo].must_equal "bar"
|
215
31
|
end
|
216
|
-
|
217
|
-
end
|
32
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '../../test_helper.rb')
|
2
|
+
|
3
|
+
describe PayTrace::EmailReceiptRequest do
|
4
|
+
it "correctly formats the request URL" do
|
5
|
+
e = PayTrace::EmailReceiptRequest.new("support@paytrace.com", "FOO1234", false)
|
6
|
+
r = e.set_request
|
7
|
+
|
8
|
+
url = r.to_parms_string
|
9
|
+
url.must_equal "UN~#{PayTrace.configuration.user_name}|PSWD~#{PayTrace.configuration.password}|TERMS~Y|METHOD~EmailReceipt|TRANXID~FOO1234|EMAIL~support@paytrace.com|"
|
10
|
+
end
|
11
|
+
|
12
|
+
it "uses check id instead of transaction id if specified" do
|
13
|
+
e = PayTrace::EmailReceiptRequest.new("support@paytrace.com", "CHECK2345", true)
|
14
|
+
r = e.set_request
|
15
|
+
|
16
|
+
url = r.to_parms_string
|
17
|
+
url.must_equal "UN~#{PayTrace.configuration.user_name}|PSWD~#{PayTrace.configuration.password}|TERMS~Y|METHOD~EmailReceipt|CHECKID~CHECK2345|EMAIL~support@paytrace.com|"
|
18
|
+
end
|
19
|
+
end
|
@@ -192,4 +192,208 @@ describe PayTrace::Transaction do
|
|
192
192
|
end
|
193
193
|
|
194
194
|
|
195
|
+
it "can add a transaction to its param list" do
|
196
|
+
t = PayTrace::Transaction.new({amount: "23.12",
|
197
|
+
credit_card: PayTrace::CreditCard.new({
|
198
|
+
card_number: "1234123412341234",
|
199
|
+
expiration_year: 24,
|
200
|
+
expiration_month: 10 }),
|
201
|
+
type: PayTrace::TransactionTypes::SALE})
|
202
|
+
r = PayTrace::API::Request.new
|
203
|
+
t.set_request(r)
|
204
|
+
|
205
|
+
r.params[:card_number].must_equal "1234123412341234"
|
206
|
+
r.params[:expiration_month].must_equal 10
|
207
|
+
r.params[:expiration_year].must_equal 24
|
208
|
+
r.params[:transaction_type].must_equal "SALE"
|
209
|
+
r.params[:method].must_equal "PROCESSTRANX"
|
210
|
+
r.params[:amount].must_equal "23.12"
|
211
|
+
|
212
|
+
url = r.to_parms_string
|
213
|
+
url.must_equal "UN~#{PayTrace.configuration.user_name}|PSWD~#{PayTrace.configuration.password}|TERMS~Y|CC~1234123412341234|EXPMNTH~10|EXPYR~24|TRANXTYPE~SALE|METHOD~PROCESSTRANX|AMOUNT~23.12|"
|
214
|
+
end
|
215
|
+
|
216
|
+
it "can use a customer id for processing the transaction" do
|
217
|
+
t = PayTrace::Transaction.new({amount: "12.34",
|
218
|
+
customer: PayTrace::Customer.new(customer_id: "1234"),
|
219
|
+
type: PayTrace::TransactionTypes::SALE
|
220
|
+
}
|
221
|
+
)
|
222
|
+
r = PayTrace::API::Request.new
|
223
|
+
t.set_request(r)
|
224
|
+
|
225
|
+
r.params[:customer_id].must_equal "1234"
|
226
|
+
r.params[:amount].must_equal "12.34"
|
227
|
+
|
228
|
+
url = r.to_parms_string
|
229
|
+
|
230
|
+
#Make sure it puts in values we expect
|
231
|
+
url.must_match /\|CUSTID~1234\|/
|
232
|
+
url.must_match /\|AMOUNT~12.34\|/
|
233
|
+
url.must_match /\|METHOD~PROCESSTRANX\|/
|
234
|
+
url.must_match /\|TRANXTYPE~SALE\|/
|
235
|
+
end
|
236
|
+
|
237
|
+
it "can include a billing address" do
|
238
|
+
t = PayTrace::Transaction.new(
|
239
|
+
optional:{
|
240
|
+
billing_address:{
|
241
|
+
name:"John Doe",
|
242
|
+
street:"1234 happy lane",
|
243
|
+
street2:"apt#2",
|
244
|
+
city:"Seattle",
|
245
|
+
state:"WA",
|
246
|
+
country: "US",
|
247
|
+
postal_code:"98107"
|
248
|
+
}
|
249
|
+
}
|
250
|
+
)
|
251
|
+
|
252
|
+
t.shipping_address.must_be_nil
|
253
|
+
|
254
|
+
r = PayTrace::API::Request.new
|
255
|
+
t.set_request(r)
|
256
|
+
|
257
|
+
url = r.to_parms_string
|
258
|
+
|
259
|
+
#Make sure it puts in values we expect
|
260
|
+
url.must_match /\|BNAME~John Doe\|/
|
261
|
+
url.must_match /\|BADDRESS~1234 happy lane\|/
|
262
|
+
url.must_match /\|BADDRESS2~apt#2\|/
|
263
|
+
url.must_match /\|BCITY~Seattle\|/
|
264
|
+
url.must_match /\|BSTATE~WA\|/
|
265
|
+
url.must_match /\|BSTATE~WA\|/
|
266
|
+
url.must_match /\|BCOUNTRY~US\|/
|
267
|
+
|
268
|
+
end
|
269
|
+
|
270
|
+
it "can include misc fields as well" do
|
271
|
+
t = PayTrace::Transaction.new(
|
272
|
+
optional: {
|
273
|
+
email:"it@paytrace.com",
|
274
|
+
description:"This is a test",
|
275
|
+
tax_amount: "1.00",
|
276
|
+
return_clr: "Y",
|
277
|
+
enable_partial_authentication:"Y",
|
278
|
+
discretionary_data:"This is some data that is discretionary",
|
279
|
+
custom_dba:"NewName"
|
280
|
+
}
|
281
|
+
)
|
282
|
+
|
283
|
+
r = PayTrace::API::Request.new
|
284
|
+
t.set_request(r)
|
285
|
+
|
286
|
+
url = r.to_parms_string
|
287
|
+
|
288
|
+
url.must_match /\|DESCRIPTION~This is a test\|/
|
289
|
+
url.must_match /\|TAX~1.00\|/
|
290
|
+
url.must_match /\|EMAIL~it@paytrace.com\|/
|
291
|
+
url.must_match /\|RETURNCLR~Y\|/
|
292
|
+
url.must_match /\|ENABLEPARTIALAUTH~Y\|/
|
293
|
+
url.must_match /\|DISCRETIONARY DATA~This is some data that is discretionary\|/
|
294
|
+
url.must_match /\|CUSTOMDBA~NewName\|/
|
295
|
+
end
|
296
|
+
|
297
|
+
it "can do a swipe transaction" do
|
298
|
+
cc = PayTrace::CreditCard.new( {
|
299
|
+
swipe: '%B4055010000000005^J/SCOTT^1212101001020001000000701000000?;4055010000000005=12121010010270100001?'
|
300
|
+
})
|
301
|
+
t = PayTrace::Transaction.new(
|
302
|
+
amount: '1.00',
|
303
|
+
credit_card:cc
|
304
|
+
)
|
305
|
+
|
306
|
+
r = PayTrace::API::Request.new
|
307
|
+
t.set_request(r)
|
308
|
+
|
309
|
+
url = r.to_parms_string
|
310
|
+
|
311
|
+
url.must_match /\|AMOUNT~1.00\|/
|
312
|
+
url.must_match /\|SWIPE~%B4055010000000005/
|
313
|
+
|
314
|
+
|
315
|
+
end
|
316
|
+
|
317
|
+
it "can do a reference sales request " do
|
318
|
+
|
319
|
+
t = PayTrace::Transaction.new(
|
320
|
+
amount: '1.00',
|
321
|
+
optional:{transaction_id: '1234'}
|
322
|
+
)
|
323
|
+
|
324
|
+
r = PayTrace::API::Request.new
|
325
|
+
t.set_request(r)
|
326
|
+
|
327
|
+
url = r.to_parms_string
|
328
|
+
|
329
|
+
url.must_match /\|AMOUNT~1.00\|/
|
330
|
+
url.must_match /\|TRANXID~1234|/
|
331
|
+
end
|
332
|
+
|
333
|
+
it "can create an approval code call" do
|
334
|
+
t = PayTrace::Transaction.new({amount: "23.12",
|
335
|
+
credit_card: PayTrace::CreditCard.new({
|
336
|
+
card_number: "1234123412341234",
|
337
|
+
expiration_year: 24,
|
338
|
+
expiration_month: 10 }),
|
339
|
+
type: PayTrace::TransactionTypes::ForcedSale,
|
340
|
+
optional:{approval_code:'1234'}
|
341
|
+
})
|
342
|
+
|
343
|
+
r = PayTrace::API::Request.new
|
344
|
+
t.set_request(r)
|
345
|
+
|
346
|
+
url = r.to_parms_string
|
347
|
+
|
348
|
+
url.must_match /\|APPROVAL~1234\|/
|
349
|
+
url.must_match /\|TRANXTYPE~Force\|/
|
350
|
+
|
351
|
+
end
|
352
|
+
|
353
|
+
it "can create a new cash_advance sale" do
|
354
|
+
cc = PayTrace::CreditCard.new( {
|
355
|
+
swipe: '%B4055010000000005^J/SCOTT^1212101001020001000000701000000?;4055010000000005=12121010010270100001?'
|
356
|
+
})
|
357
|
+
|
358
|
+
optional = {
|
359
|
+
billing_address:{
|
360
|
+
name:"John Doe",
|
361
|
+
street:"1234 happy lane",
|
362
|
+
street2:"apt#2",
|
363
|
+
city:"Seattle",
|
364
|
+
state:"WA",
|
365
|
+
country: "US",
|
366
|
+
postal_code:"98107"
|
367
|
+
},
|
368
|
+
id_number: "1234",
|
369
|
+
id_expiration:"12/20/2020",
|
370
|
+
cc_last_4: "1234",
|
371
|
+
cash_advance: "Y"
|
372
|
+
|
373
|
+
|
374
|
+
}
|
375
|
+
t = PayTrace::Transaction.new(
|
376
|
+
amount: '1.00',
|
377
|
+
credit_card:cc,
|
378
|
+
type: PayTrace::TransactionTypes::SALE,
|
379
|
+
optional:optional
|
380
|
+
)
|
381
|
+
|
382
|
+
r = PayTrace::API::Request.new
|
383
|
+
t.set_request(r)
|
384
|
+
|
385
|
+
url = r.to_parms_string
|
386
|
+
|
387
|
+
url.must_match /\|AMOUNT~1.00\|/
|
388
|
+
url.must_match /\|SWIPE~%B4055010000000005/
|
389
|
+
url.must_match /\|CASHADVANCE~Y\|/
|
390
|
+
url.must_match /\|PHOTOID~1234\|/
|
391
|
+
url.must_match /\|LAST4~1234\|/
|
392
|
+
url.must_match /\|BADDRESS~1234 happy lane\|/
|
393
|
+
|
394
|
+
|
395
|
+
|
396
|
+
|
397
|
+
end
|
398
|
+
|
195
399
|
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.0.
|
4
|
+
version: 0.0.6
|
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-03-
|
11
|
+
date: 2014-03-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -75,7 +75,6 @@ extra_rdoc_files: []
|
|
75
75
|
files:
|
76
76
|
- ".gitignore"
|
77
77
|
- ".ruby-gemset"
|
78
|
-
- ".ruby-version"
|
79
78
|
- Gemfile
|
80
79
|
- LICENSE.txt
|
81
80
|
- README.md
|
@@ -91,6 +90,7 @@ files:
|
|
91
90
|
- lib/paytrace/configuration.rb
|
92
91
|
- lib/paytrace/credit_card.rb
|
93
92
|
- lib/paytrace/customer.rb
|
93
|
+
- lib/paytrace/email_receipt_request.rb
|
94
94
|
- lib/paytrace/transaction.rb
|
95
95
|
- lib/paytrace/version.rb
|
96
96
|
- paytrace.gemspec
|
@@ -100,6 +100,7 @@ files:
|
|
100
100
|
- test/paytrace/api/response_spec.rb
|
101
101
|
- test/paytrace/configuration_spec.rb
|
102
102
|
- test/paytrace/credit_card_spec.rb
|
103
|
+
- test/paytrace/email_receipt_request_spec.rb
|
103
104
|
- test/paytrace/transaction_spec.rb
|
104
105
|
- test/test_helper.rb
|
105
106
|
- vagrant-bootstrap.sh
|
@@ -123,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
123
124
|
version: '0'
|
124
125
|
requirements: []
|
125
126
|
rubyforge_project:
|
126
|
-
rubygems_version: 2.2
|
127
|
+
rubygems_version: 2.0.2
|
127
128
|
signing_key:
|
128
129
|
specification_version: 4
|
129
130
|
summary: Integration providing access to the transaction processing API for PayTrace
|
@@ -134,5 +135,6 @@ test_files:
|
|
134
135
|
- test/paytrace/api/response_spec.rb
|
135
136
|
- test/paytrace/configuration_spec.rb
|
136
137
|
- test/paytrace/credit_card_spec.rb
|
138
|
+
- test/paytrace/email_receipt_request_spec.rb
|
137
139
|
- test/paytrace/transaction_spec.rb
|
138
140
|
- test/test_helper.rb
|
data/.ruby-version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
2.1.0
|