paytrace 0.1.13 → 0.1.14

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0594ca7187f8ba182f94fa8396b875dc7bccfa13
4
- data.tar.gz: ca0be761ea3f92728838af69ed89434b02b9fe84
3
+ metadata.gz: fc1307bbdaf427227ab1ee30bd21117d0b9f8969
4
+ data.tar.gz: 85f8bad34a822d70af78ae6dcc2c1e1bd0b5d344
5
5
  SHA512:
6
- metadata.gz: 67091c357b8a5da6bf5ae535436a6f65e23c5b14ccc1f42e50cdd2cf8755852b51c8f55a7287b17397edea1aa02f6e64038b82a7ed68788ca6b2092a528ae8da
7
- data.tar.gz: 963657ca71649d6873018182753dab987adce28cb8420a2ace1a1c7fc25b86b5c44f6a97fce00f6e0f2b87f89b861d00d6829a0a1d0ac3cc55e1b7e63d0a8b79
6
+ metadata.gz: a02f49b0ddb2937f3b40e85a0c40114542901c0a5e6e82e31438d3a97a75b8d972a364f56163b2596b12de7820f1ac8ac2fe4f62a5913e23305f57ae96c93596
7
+ data.tar.gz: cd412acbb7a6244c33359527ca0a9c86c7d0318c1a7513e29ad4c6486b69a956a9a6629aeaa7670db18d8e192f22ca1287d30f43dab99e8b50dbc82b820bb652
@@ -11,6 +11,36 @@ module PayTrace
11
11
  email: "EMAIL",
12
12
  description: "DESCRIPTION",
13
13
  tax_amount: "TAX",
14
+ national_tax: "NTAX",
15
+ new_password: "NEWPSWD",
16
+ new_password_confirmation: "NEWPSWD2",
17
+ # level 3 stuff
18
+ merchant_tax_id: "MERCHANTTAXID",
19
+ customer_tax_id: "CUSTOMERTAXID",
20
+ ccode: "CCODE",
21
+ line_item: "LINEITEM",
22
+ line_items: "LINEITEMS",
23
+ ccode_li: "CCODELI",
24
+ discount: "DISCOUNT",
25
+ freight: "FREIGHT",
26
+ duty: "DUTY",
27
+ add_tax: "ADDTAX",
28
+ add_tax_rate: "ADDTAXRATE",
29
+ product_id: "PRODUCTID",
30
+ quantity: "QUANTITY",
31
+ measure: "MEASURE",
32
+ unit_cost: "UNITCOST",
33
+ additional_tax_included: "ADDTAXIND",
34
+ additional_tax_included_li: "ADDTAXINDLI",
35
+ add_tax_li: "ADDTAXLI",
36
+ add_tax_rate_li: "ADDTAXRATELI",
37
+ discount_li: "DISCOUNTLI",
38
+ amount_li: "AMOUNTLI",
39
+ discount_included: "DISCOUNTIND",
40
+ line_item_is_gross: "NETGROSSIND",
41
+ is_debit_or_credit: "DCIND",
42
+ discount_rate: "DISCOUNTRATE",
43
+
14
44
  return_clr: "RETURNCLR",
15
45
  return_bin: "RETURNBIN",
16
46
  enable_partial_authentication: "ENABLEPARTIALAUTH",
@@ -41,7 +41,7 @@ module PayTrace
41
41
  @@raise_exceptions = raise_exceptions
42
42
  end
43
43
 
44
- def send_request(request, multi_value_fields = [])
44
+ def send_request(request, multi_value_response_fields = [])
45
45
  @@last_request = request.to_parms_string if @@debug
46
46
  unless (@@debug && @@next_response)
47
47
  res = @connection.post PayTrace.configuration.url, parmlist: request.to_parms_string
@@ -51,7 +51,7 @@ module PayTrace
51
51
  end
52
52
 
53
53
  @@last_response = raw_response
54
- response = PayTrace::API::Response.new(raw_response, multi_value_fields)
54
+ response = PayTrace::API::Response.new(raw_response, multi_value_response_fields)
55
55
  @@last_response_object = response
56
56
 
57
57
  @@next_response = nil # just to be sure
@@ -5,20 +5,24 @@ module PayTrace
5
5
 
6
6
  def initialize
7
7
  @field_delim = "|"
8
+ @multi_field_delim = "+"
8
9
  @value_delim = "~"
10
+ @multi_value_delim = "="
9
11
 
10
12
  @params= {
11
- user_name: PayTrace.configuration.user_name,
12
- password: PayTrace.configuration.password,
13
- terms: "Y"
13
+ user_name: [PayTrace.configuration.user_name],
14
+ password: [PayTrace.configuration.password],
15
+ terms: ["Y"]
14
16
  }
15
17
 
16
18
  @discretionary_data = {}
17
19
  end
18
20
 
19
21
  def to_parms_string()
20
- raw_request = @params.map do |k,v|
21
- "#{PayTrace::API.fields[k]}#{@value_delim}#{v}"
22
+ raw_request = @params.map do |k,items|
23
+ items.map do |item|
24
+ "#{PayTrace::API.fields[k]}#{@value_delim}#{item}"
25
+ end
22
26
  end.join(@field_delim) << @field_delim
23
27
 
24
28
  if @discretionary_data.any?
@@ -38,10 +42,29 @@ module PayTrace
38
42
  end
39
43
  end
40
44
 
41
- def set_param(k, v)
45
+ def validate_param(k, v)
42
46
  raise PayTrace::Exceptions::ValidationError.new("Unknown field '#{k}'") unless PayTrace::API.fields.has_key?(k)
47
+ end
48
+
49
+ def set_param(k, v)
50
+ validate_param(k, v)
51
+
52
+ unless v.nil?
53
+ @params[k] ||= []
54
+
55
+ @params[k] << v
56
+ end
57
+ end
58
+
59
+ def set_multivalue(param_name, items = {})
60
+ result = (items.map do |k,v|
61
+ validate_param(k, v)
62
+ "#{PayTrace::API.fields[k]}#{@multi_value_delim}#{v}"
63
+ end.join(@multi_field_delim))
64
+
65
+ set_param(param_name, result)
43
66
 
44
- @params[k] = v unless v.nil?
67
+ result
45
68
  end
46
69
 
47
70
  def set_params(keys, params)
@@ -2,12 +2,30 @@ module PayTrace
2
2
  class Configuration
3
3
  attr_accessor :user_name, :password, :connection, :domain, :path
4
4
 
5
+ RESET_PASSWORD_METHOD = "UpdatePassword"
6
+
5
7
  def initialize
6
8
  @domain = "paytrace.com"
7
9
  @connection = Faraday.new
8
10
  @path = "api/default.pay"
9
11
  end
10
12
 
13
+ def update_password(params)
14
+ request = PayTrace::API::Request.new
15
+ request.set_param(:method, RESET_PASSWORD_METHOD)
16
+ request.set_params([:new_password, :new_password_confirmation], params)
17
+ gateway = PayTrace::API::Gateway.new
18
+ response = gateway.send_request(request)
19
+
20
+ unless response.has_errors?
21
+ PayTrace.configure do |config|
22
+ config.password = params[:new_password]
23
+ end
24
+ end
25
+
26
+ response
27
+ end
28
+
11
29
  def url
12
30
  "https://#{@domain}/#{@path}"
13
31
  end
@@ -29,17 +29,19 @@ module PayTrace
29
29
  begin
30
30
  yield
31
31
  rescue Exception => e
32
+ puts "[REQUEST] #{PayTrace::API::Gateway.last_request}"
33
+
32
34
  raise
33
35
  else
34
36
  dump_transaction
35
37
  end
36
38
  end
37
39
 
38
- def self.configure_test
40
+ def self.configure_test(un = "demo123", pw = "demo123", domain = "stage.paytrace.com")
39
41
  PayTrace.configure do |config|
40
- config.user_name = "demo123"
41
- config.password = "demo123"
42
- config.domain = "stage.paytrace.com"
42
+ config.user_name = un
43
+ config.password = pw
44
+ config.domain = domain
43
45
  end
44
46
  end
45
47
  end
@@ -90,6 +90,8 @@ module PayTrace
90
90
  ATTACH_SIGNATURE_METHOD = "AttachSignature"
91
91
  CALCULATE_SHIPPING_COST = "CalculateShipping"
92
92
  CALCULATE_SHIPPING_COST_RESPONSE = "SHIPPINGRECORD"
93
+ LEVEL_3_VISA_METHOD = "Level3Visa"
94
+ LEVEL_3_MC_METHOD = "Level3MCRD"
93
95
 
94
96
  def set_shipping_same_as_billing()
95
97
  @shipping_address = @billing_address
@@ -167,6 +169,68 @@ module PayTrace
167
169
  end
168
170
  end
169
171
 
172
+ def self.add_level_three_visa(params = {})
173
+ line_items = params.delete(:line_items) || []
174
+ request = PayTrace::API::Request.new
175
+ request.set_param(:method, LEVEL_3_VISA_METHOD)
176
+ request.set_params([
177
+ :transaction_id,
178
+ :invoice,
179
+ :customer_reference_id,
180
+ :tax_amount,
181
+ :national_tax,
182
+ :merchant_tax_id,
183
+ :customer_tax_id,
184
+ :ccode,
185
+ :discount,
186
+ :freight,
187
+ :duty,
188
+ :source_zip,
189
+ :shipping_postal_code,
190
+ :shipping_country,
191
+ :add_tax,
192
+ :add_tax_rate
193
+ ], params)
194
+ line_items.each do |li|
195
+ request.set_multivalue(:line_item, li)
196
+ end
197
+
198
+ gateway = PayTrace::API::Gateway.new
199
+ response = gateway.send_request(request)
200
+ unless response.has_errors?
201
+ response.values
202
+ end
203
+ end
204
+
205
+ def self.add_level_three_mc(params = {})
206
+ line_items = params.delete(:line_items) || []
207
+ request = PayTrace::API::Request.new
208
+ request.set_param(:method, LEVEL_3_MC_METHOD)
209
+ request.set_params([
210
+ :transaction_id,
211
+ :invoice,
212
+ :customer_reference_id,
213
+ :tax_amount,
214
+ :national_tax,
215
+ :freight,
216
+ :duty,
217
+ :source_zip,
218
+ :shipping_postal_code,
219
+ :shipping_country,
220
+ :add_tax,
221
+ :additional_tax_included
222
+ ], params)
223
+ line_items.each do |li|
224
+ request.set_multivalue(:line_item, li)
225
+ end
226
+
227
+ gateway = PayTrace::API::Gateway.new
228
+ response = gateway.send_request(request)
229
+ unless response.has_errors?
230
+ response.values
231
+ end
232
+ end
233
+
170
234
  private
171
235
  def add_transaction_info(request)
172
236
  request.set_param(:transaction_type, type)
@@ -1,3 +1,3 @@
1
1
  module PayTrace
2
- VERSION = "0.1.13"
2
+ VERSION = "0.1.14"
3
3
  end
@@ -53,13 +53,13 @@ describe PayTrace::Address do
53
53
  })
54
54
  a.set_request(r)
55
55
 
56
- r.params[:shipping_name].must_equal "John Doe"
57
- r.params[:shipping_address].must_equal "1234 Main Street"
58
- r.params[:shipping_address2].must_equal "Apt. B"
59
- r.params[:shipping_city].must_equal "Shoreline"
60
- r.params[:shipping_state].must_equal "WA"
61
- r.params[:shipping_country].must_equal "USA"
62
- r.params[:shipping_region].must_equal "region??"
63
- r.params[:shipping_postal_code].must_equal "98133"
56
+ r.params[:shipping_name].must_equal ["John Doe"]
57
+ r.params[:shipping_address].must_equal ["1234 Main Street"]
58
+ r.params[:shipping_address2].must_equal ["Apt. B"]
59
+ r.params[:shipping_city].must_equal ["Shoreline"]
60
+ r.params[:shipping_state].must_equal ["WA"]
61
+ r.params[:shipping_country].must_equal ["USA"]
62
+ r.params[:shipping_region].must_equal ["region??"]
63
+ r.params[:shipping_postal_code].must_equal ["98133"]
64
64
  end
65
65
  end
@@ -17,9 +17,9 @@ describe PayTrace::API::Request do
17
17
  end
18
18
 
19
19
  r = PayTrace::API::Request.new
20
- r.params[:user_name].must_equal "request_test"
21
- r.params[:password].must_equal "request_password"
22
- r.params[:terms].must_equal "Y"
20
+ r.params[:user_name].must_equal ["request_test"]
21
+ r.params[:password].must_equal ["request_password"]
22
+ r.params[:terms].must_equal ["Y"]
23
23
  to_url = r.to_parms_string
24
24
  to_url.must_equal "UN~request_test|PSWD~request_password|TERMS~Y|"
25
25
  end
@@ -27,15 +27,15 @@ describe PayTrace::API::Request do
27
27
  it "can manually set params" do
28
28
  r = PayTrace::API::Request.new
29
29
  r.set_param(:billing_name, "Fred Jones")
30
- r.params[:billing_name].must_equal "Fred Jones"
30
+ r.params[:billing_name].must_equal ["Fred Jones"]
31
31
  end
32
32
 
33
33
  it "can bulk set params" do
34
34
  params = {billing_name: "Fred Jones", billing_postal_code: 98133}
35
35
  r = PayTrace::API::Request.new
36
36
  r.set_params([:billing_name, :billing_postal_code], params)
37
- r.params[:billing_name].must_equal "Fred Jones"
38
- r.params[:billing_postal_code].must_equal 98133
37
+ r.params[:billing_name].must_equal ["Fred Jones"]
38
+ r.params[:billing_postal_code].must_equal [98133]
39
39
  end
40
40
 
41
41
  it "raises a validation exception for unknown fields" do
@@ -33,4 +33,33 @@ describe PayTrace::Configuration do
33
33
  end
34
34
  PayTrace.configuration.url.must_equal "https://sandbox.paytrace.com/api/default.pay"
35
35
  end
36
+
37
+ it "allows you to change your password" do
38
+ PayTrace::API::Gateway.debug = true
39
+ PayTrace::API::Gateway.next_response = "RESPONSE~100. Your password was successfully updated."
40
+
41
+ old_password = PayTrace.configuration.password
42
+ c = PayTrace::Configuration.new
43
+ c.update_password(new_password: 'foobar', new_password_confirmation: 'foobar')
44
+
45
+ PayTrace::API::Gateway.last_request.must_equal "UN~#{PayTrace.configuration.user_name}|PSWD~#{old_password}|TERMS~Y|" +
46
+ "METHOD~UpdatePassword|NEWPSWD~foobar|NEWPSWD2~foobar|"
47
+
48
+ PayTrace::API::Gateway.next_response = "RESPONSE~100. Your password was successfully updated."
49
+ c.update_password(new_password: old_password, new_password_confirmation: old_password)
50
+ end
51
+
52
+ it "changes the config password when you successfully call update_password" do
53
+ PayTrace::API::Gateway.debug = true
54
+ PayTrace::API::Gateway.next_response = "RESPONSE~100. Your password was successfully updated."
55
+
56
+ old_password = PayTrace.configuration.password
57
+ c = PayTrace::Configuration.new
58
+ c.update_password(new_password: 'foobar', new_password_confirmation: 'foobar')
59
+
60
+ PayTrace.configuration.password.must_equal 'foobar'
61
+
62
+ PayTrace::API::Gateway.next_response = "RESPONSE~100. Your password was successfully updated."
63
+ c.update_password(new_password: old_password, new_password_confirmation: old_password)
64
+ end
36
65
  end
@@ -0,0 +1,136 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '../../test_helper.rb')
2
+
3
+ describe PayTrace::Transaction do
4
+ describe "add level 3 data" do
5
+ def base_url(method)
6
+ "UN~#{PayTrace.configuration.user_name}|PSWD~#{PayTrace.configuration.password}|TERMS~Y|METHOD~#{method}|"
7
+ end
8
+
9
+ before do
10
+ PayTrace::API::Gateway.debug = true
11
+ PayTrace::API::Gateway.next_response = "RESPONSE~ok|RECURID~12345|"
12
+ end
13
+
14
+ # see http://help.paytrace.com/api-adding-level-3-data-to-a-visa-sale
15
+
16
+ # Required Name Value Pairs
17
+
18
+ # UN, PSWD, TERMS, METHOD, TRANXID
19
+
20
+ # Optional Name Value Pairs For Add Level 3 Data to Visa Request
21
+
22
+ # INVOICE, CUSTREF, TAX, NTAX, MERCHANTTAXID, CUSTOMERTAXID, CCODE, DISCOUNT, FREIGHT, DUTY, SOURCEZIP, SZIP, SCOUNTRY, ADDTAX, ADDTAXRATE
23
+
24
+ # Optional Name Value Pairs For Line Item Detail to Visa Request
25
+
26
+ # CCODELI, PRODUCTID, DESCRIPTION, QUANTITY, MEASURE, UNITCOST, ADDTAXLI, ADDTAXRATELI, DISCOUNTLI, AMOUNTLI
27
+
28
+ # Please note that each name/value pair is separated by the traditional ~ and followed by a |. However, name/value pairs included in the LINEITEM parameter are separated by the = symbol and followed by a + symbol. So, no values in a Level3Visa request should contain a ~, |, +, or = symbols. The example request below contains 1 Line Item record.
29
+ it "works with visa" do
30
+ params = {
31
+ transaction_id: "1143",
32
+ invoice: "12346",
33
+ customer_reference_id: "1234578",
34
+ tax_amount: 31.76,
35
+ national_tax: "0.00",
36
+ merchant_tax_id: "13692468",
37
+ customer_tax_id: "12369240",
38
+ ccode: "1234abcd",
39
+ discount: 4.53,
40
+ freight: 7.99,
41
+ duty: 6.52,
42
+ source_zip: "94947",
43
+ shipping_postal_code: "98133",
44
+ shipping_country: "US",
45
+ add_tax: 4.78,
46
+ add_tax_rate: 0.43,
47
+ line_items:
48
+ [
49
+ {
50
+ ccode_li: "12345678",
51
+ product_id: "E123125",
52
+ description: "Widgets and wodgets",
53
+ quantity: 20,
54
+ measure: "foo",
55
+ unit_cost: 3.99,
56
+ add_tax_li: 3.82,
57
+ add_tax_rate_li: 0.44,
58
+ discount_li: 1.86,
59
+ amount_li: 5
60
+ },
61
+ {
62
+ ccode_li: "12345679",
63
+ product_id: "D987654",
64
+ description: "It's log!",
65
+ quantity: 42,
66
+ measure: "bar",
67
+ unit_cost: 3.98,
68
+ add_tax_li: 3.81,
69
+ add_tax_rate_li: 0.45,
70
+ discount_li: 1.87,
71
+ amount_li: 6
72
+ }
73
+ ]
74
+ }
75
+ PayTrace::Transaction.add_level_three_visa(params)
76
+
77
+ PayTrace::API::Gateway.last_request.must_equal base_url(PayTrace::Transaction::LEVEL_3_VISA_METHOD) +
78
+ "TRANXID~1143|INVOICE~12346|CUSTREF~1234578|TAX~31.76|NTAX~0.00|MERCHANTTAXID~13692468|CUSTOMERTAXID~12369240|CCODE~1234abcd|DISCOUNT~4.53|FREIGHT~7.99|DUTY~6.52|SOURCEZIP~94947|SZIP~98133|SCOUNTRY~US|ADDTAX~4.78|ADDTAXRATE~0.43|LINEITEM~CCODELI=12345678+PRODUCTID=E123125+DESCRIPTION=Widgets and wodgets+QUANTITY=20+MEASURE=foo+UNITCOST=3.99+ADDTAXLI=3.82+ADDTAXRATELI=0.44+DISCOUNTLI=1.86+AMOUNTLI=5|LINEITEM~CCODELI=12345679+PRODUCTID=D987654+DESCRIPTION=It's log!+QUANTITY=42+MEASURE=bar+UNITCOST=3.98+ADDTAXLI=3.81+ADDTAXRATELI=0.45+DISCOUNTLI=1.87+AMOUNTLI=6|"
79
+ end
80
+
81
+ # Required Name Value Pairs
82
+
83
+ # UN, PSWD, TERMS, METHOD, TRANXID
84
+
85
+ # Optional Name Value Pairs For Add Level 3 Data to MasterCard Request
86
+
87
+ # INVOICE, CUSTREF, TAX, NTAX, FREIGHT, DUTY, SOURCEZIP, SZIP, SCOUNTRY, ADDTAX, ADDTAXIND
88
+
89
+ # Optional Name Value Pairs For Line Item Detail to MasterCard Request
90
+
91
+ # PRODUCTID, DESCRIPTION, QUANTITY, MEASURE, MERCHANTTAXID, UNITCOST, ADDTAXRATELI, ADDTAXINDLI, ADDTAXLI, AMOUNTLI, DISCOUNTIND, NETGROSSIND, DCIND, DISCOUNTLI, DICOUNTRATE
92
+
93
+ # see http://help.paytrace.com/api-adding-level-3-data-to-a-mastercard-sale
94
+ it "works with mastercard" do
95
+ params = {
96
+ transaction_id: "1143",
97
+ invoice: "12347",
98
+ customer_reference_id: "1234579",
99
+ tax_amount: 31.78,
100
+ national_tax: 0.01,
101
+ freight: 7.98,
102
+ duty: 6.51,
103
+ source_zip: "94948",
104
+ shipping_postal_code: "98134",
105
+ shipping_country: "US",
106
+ add_tax: 4.54,
107
+ additional_tax_included: 'Y',
108
+ line_items:
109
+ [
110
+ {
111
+ product_id: "E123126",
112
+ description: "Wadgets and wudgets",
113
+ quantity: 21,
114
+ measure: "food",
115
+ merchant_tax_id: "13699468",
116
+ unit_cost: 3.98,
117
+ add_tax_rate_li: 0.45,
118
+ additional_tax_included_li: 'Y',
119
+ add_tax_li: 3.82,
120
+ discount_included: 'Y',
121
+ amount_li: 6,
122
+ line_item_is_gross: 'Y',
123
+ is_debit_or_credit: 'D',
124
+ discount_li: 1.86,
125
+ discount_rate: '0.10'
126
+ }
127
+ ]
128
+ }
129
+
130
+ PayTrace::Transaction.add_level_three_mc(params)
131
+
132
+ PayTrace::API::Gateway.last_request.must_equal base_url(PayTrace::Transaction::LEVEL_3_MC_METHOD) +
133
+ "TRANXID~1143|INVOICE~12347|CUSTREF~1234579|TAX~31.78|NTAX~0.01|FREIGHT~7.98|DUTY~6.51|SOURCEZIP~94948|SZIP~98134|SCOUNTRY~US|ADDTAX~4.54|ADDTAXIND~Y|LINEITEM~PRODUCTID=E123126+DESCRIPTION=Wadgets and wudgets+QUANTITY=21+MEASURE=food+MERCHANTTAXID=13699468+UNITCOST=3.98+ADDTAXRATELI=0.45+ADDTAXINDLI=Y+ADDTAXLI=3.82+DISCOUNTIND=Y+AMOUNTLI=6+NETGROSSIND=Y+DCIND=D+DISCOUNTLI=1.86+DISCOUNTRATE=0.10|"
134
+ end
135
+ end
136
+ end
@@ -243,12 +243,12 @@ describe PayTrace::Transaction do
243
243
  r = PayTrace::API::Request.new
244
244
  t.set_request(r)
245
245
 
246
- r.params[:card_number].must_equal "1234123412341234"
247
- r.params[:expiration_month].must_equal 10
248
- r.params[:expiration_year].must_equal 24
249
- r.params[:transaction_type].must_equal "SALE"
250
- r.params[:method].must_equal "PROCESSTRANX"
251
- r.params[:amount].must_equal "23.12"
246
+ r.params[:card_number].must_equal ["1234123412341234"]
247
+ r.params[:expiration_month].must_equal [10]
248
+ r.params[:expiration_year].must_equal [24]
249
+ r.params[:transaction_type].must_equal ["SALE"]
250
+ r.params[:method].must_equal ["PROCESSTRANX"]
251
+ r.params[:amount].must_equal ["23.12"]
252
252
 
253
253
  url = r.to_parms_string
254
254
  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|"
@@ -263,8 +263,8 @@ describe PayTrace::Transaction do
263
263
  r = PayTrace::API::Request.new
264
264
  t.set_request(r)
265
265
 
266
- r.params[:customer_id].must_equal 1234
267
- r.params[:amount].must_equal "12.34"
266
+ r.params[:customer_id].must_equal [1234]
267
+ r.params[:amount].must_equal ["12.34"]
268
268
 
269
269
  url = r.to_parms_string
270
270
 
@@ -0,0 +1,12 @@
1
+ require "paytrace"
2
+ require "paytrace/debug"
3
+
4
+ # use a low-security user for this test, so we don't mess up the integration users :)
5
+ PayTrace::Debug.configure_test("tom_test_user", "password4", "dev2.paytrace.com")
6
+
7
+ # see: http://help.paytrace.com/api-updating-user-password for details
8
+ PayTrace::Debug.trace {
9
+ # change my demo user password...
10
+ # note, if you run this, it won't run again because the password has been changed :)
11
+ PayTrace.configuration.update_password(new_password: 'password5', new_password_confirmation: 'password4')
12
+ }
@@ -10,7 +10,7 @@ PayTrace::API::Gateway.debug = true
10
10
  params = {
11
11
  start_date: "04/01/2014",
12
12
  end_date: "05/31/2014",
13
- transaction_id: 1143
13
+ # transaction_id: 1143
14
14
  }
15
15
 
16
16
  PayTrace::Debug.trace { puts PayTrace::Transaction.export(params) }
@@ -0,0 +1,97 @@
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
+ PayTrace::Debug.configure_test
7
+
8
+ PayTrace::Debug.trace do
9
+ params = {
10
+ transaction_id: "1143",
11
+ invoice: "12346",
12
+ customer_reference_id: "1234578",
13
+ tax_amount: 31.76,
14
+ ntax: 0.00,
15
+ merchant_tax_id: "13692468",
16
+ customer_tax_id: "12369240",
17
+ ccode: "1234abcd",
18
+ discount: 4.53,
19
+ freight: 7.99,
20
+ duty: 6.52,
21
+ source_zip: "94947",
22
+ shipping_postal_code: "98133",
23
+ shipping_country: "US",
24
+ add_tax: 4.78,
25
+ add_tax_rate: 0.43,
26
+ line_items:
27
+ [
28
+ {
29
+ ccode_li: "12345678",
30
+ product_id: "E123125",
31
+ description: "Widgets and wodgets",
32
+ quantity: 20,
33
+ measure: "foo",
34
+ unit_cost: 3.99,
35
+ add_tax_li: 3.82,
36
+ add_tax_rate_li: 0.44,
37
+ discount_li: 1.86,
38
+ amount_li: 5
39
+ },
40
+ {
41
+ ccode_li: "12345679",
42
+ product_id: "D987654",
43
+ description: "It's log!",
44
+ quantity: 42,
45
+ measure: "bar",
46
+ unit_cost: 3.98,
47
+ add_tax_li: 3.81,
48
+ add_tax_rate_li: 0.45,
49
+ discount_li: 1.87,
50
+ amount_li: 6
51
+ }
52
+ ]
53
+ }
54
+ PayTrace::Transaction.add_level_three_visa(params)
55
+ end
56
+
57
+ # https://stage.paytrace.com/api/default.pay?parmList=UN~NEWapiuser%7CPSWD~test456%7CTERMS~Y%7CMETHOD~Level3MCRD%7CTRANXID~1399%7CINVOICE~12347%7CCUSTREF~1234579%7CTAX~31.78%7CNTAX~0.01%7CFREIGHT~7.98%7CDUTY~6.51%7CSOURCEZIP~94948%7CSZIP~98134%7CSCOUNTRY~US%7CADDTAX~4.54%7CADDTAXIND~Y%7CLINEITEM~PRODUCTID=E123126+DESCRIPTION=Wadgets%20and%20wudgets+QUANTITY=21+MEASURE=food+MERCHANTTAXID=13699468+UNITCOST=3.98+ADDTAXRATELI=0.45+ADDTAXINDLI=Y+ADDTAXLI=3.82+DISCOUNTIND=Y+AMOUNTLI=6+NETGROSSIND=Y+DCIND=D+DISCOUNTLI=1.86+DISCOUNTRATE=0.10%7C
58
+ # [REQUEST] UN~demo123|PSWD~demo123|TERMS~Y|METHOD~Level3MCRD|TRANXID~1399|INVOICE~12347|CUSTREF~1234579|TAX~31.78|NTAX~0.01|FREIGHT~7.98|DUTY~6.51|SOURCEZIP~94948|SZIP~98134|SCOUNTRY~US|ADDTAX~4.54|ADDTAXIND~Y|LINEITEM~PRODUCTID=E123126+DESCRIPTION=Wadgets and wudgets+QUANTITY=21+MEASURE=food+MERCHANTTAXID=13699468+UNITCOST=3.98+ADDTAXRATELI=0.45+ADDTAXINDLI=Y+ADDTAXLI=3.82+DISCOUNTIND=Y+AMOUNTLI=6+NETGROSSIND=Y+DCIND=D+DISCOUNTLI=1.86+DISCOUNTRATE=0.10|
59
+
60
+ PayTrace::Debug.configure_test("NEWapiuser", "test456")
61
+ PayTrace::Debug.trace do
62
+ params = {
63
+ transaction_id: "1399",
64
+ invoice: "12347",
65
+ customer_reference_id: "1234579",
66
+ tax_amount: 31.78,
67
+ national_tax: 0.01,
68
+ freight: 7.98,
69
+ duty: 6.51,
70
+ source_zip: "94948",
71
+ shipping_postal_code: "98134",
72
+ shipping_country: "US",
73
+ add_tax: 4.54,
74
+ additional_tax_included: 'Y',
75
+ line_items:
76
+ [
77
+ {
78
+ product_id: "E123126",
79
+ description: "Wadgets and wudgets",
80
+ quantity: 21,
81
+ measure: "food",
82
+ merchant_tax_id: "13699468",
83
+ unit_cost: 3.98,
84
+ add_tax_rate_li: 0.45,
85
+ additional_tax_included_li: 'Y',
86
+ add_tax_li: 3.82,
87
+ discount_included: 'Y',
88
+ amount_li: 6,
89
+ line_item_is_gross: 'Y',
90
+ is_debit_or_credit: 'D',
91
+ discount_li: 1.86
92
+ }
93
+ ]
94
+ }
95
+
96
+ PayTrace::Transaction.add_level_three_mc(params)
97
+ end
@@ -81,6 +81,25 @@ PayTrace::Debug.trace do
81
81
  PayTrace::Debug.log "Recurrence ID: #{recur_id}"
82
82
  end
83
83
 
84
+ PayTrace::Debug.log "Modify recurrence for john_doe..."
85
+ PayTrace::Debug.trace do
86
+ recur_id = PayTrace::RecurringTransaction.create(params)
87
+ PayTrace::Debug.log "Recurrence ID: #{recur_id}"
88
+ update_params = {
89
+ recur_id: recur_id,
90
+ description: "Updated recurring payment"
91
+ }
92
+ PayTrace::RecurringTransaction.update(update_params)
93
+ end
94
+
95
+ PayTrace::Debug.log "Delete a recurrence for john_doe..."
96
+ PayTrace::Debug.trace do
97
+ recur_id = PayTrace::RecurringTransaction.create(params)
98
+ PayTrace::Debug.log "Recurrence ID: #{recur_id}"
99
+ PayTrace::RecurringTransaction.delete({recur_id: recur_id})
100
+ end
101
+
102
+
84
103
  begin
85
104
  PayTrace::Debug.log "Exporting recurring transaction..."
86
105
  PayTrace::Debug.trace do
@@ -101,4 +120,4 @@ PayTrace::Debug.trace { PayTrace::RecurringTransaction.delete({customer_id: "joh
101
120
  PayTrace::Debug.log "Deleting customer 'john_doe'..."
102
121
  ################
103
122
  # delete "john doe"
104
- PayTrace::Debug.trace { c.delete() }
123
+ PayTrace::Debug.trace { c.delete() }
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.13
4
+ version: 0.1.14
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-04-11 00:00:00.000000000 Z
11
+ date: 2014-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -136,14 +136,17 @@ files:
136
136
  - test/paytrace/customer_spec.rb
137
137
  - test/paytrace/email_receipt_request_spec.rb
138
138
  - test/paytrace/exceptions_spec.rb
139
+ - test/paytrace/level3_data_spec.rb
139
140
  - test/paytrace/recurring_transaction_spec.rb
140
141
  - test/paytrace/transaction_spec.rb
141
142
  - test/scripts/run_attach_signature.rb
142
143
  - test/scripts/run_calculate_shipping_costs.rb
144
+ - test/scripts/run_change_password.rb
143
145
  - test/scripts/run_create_customer.rb
144
146
  - test/scripts/run_email_request.rb
145
147
  - test/scripts/run_export_customers.rb
146
148
  - test/scripts/run_export_transactions.rb
149
+ - test/scripts/run_level3_data.rb
147
150
  - test/scripts/run_recur_payments_integration.rb
148
151
  - test/scripts/smiley_face.png
149
152
  - test/test_helper.rb
@@ -183,14 +186,17 @@ test_files:
183
186
  - test/paytrace/customer_spec.rb
184
187
  - test/paytrace/email_receipt_request_spec.rb
185
188
  - test/paytrace/exceptions_spec.rb
189
+ - test/paytrace/level3_data_spec.rb
186
190
  - test/paytrace/recurring_transaction_spec.rb
187
191
  - test/paytrace/transaction_spec.rb
188
192
  - test/scripts/run_attach_signature.rb
189
193
  - test/scripts/run_calculate_shipping_costs.rb
194
+ - test/scripts/run_change_password.rb
190
195
  - test/scripts/run_create_customer.rb
191
196
  - test/scripts/run_email_request.rb
192
197
  - test/scripts/run_export_customers.rb
193
198
  - test/scripts/run_export_transactions.rb
199
+ - test/scripts/run_level3_data.rb
194
200
  - test/scripts/run_recur_payments_integration.rb
195
201
  - test/scripts/smiley_face.png
196
202
  - test/test_helper.rb