paytrace 0.1.23 → 1.0.0

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.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/lib/paytrace/address.rb +2 -0
  3. data/lib/paytrace/api/gateway.rb +19 -4
  4. data/lib/paytrace/api/request.rb +72 -28
  5. data/lib/paytrace/api/response.rb +19 -11
  6. data/lib/paytrace/batch_operations.rb +8 -30
  7. data/lib/paytrace/check_transaction.rb +119 -84
  8. data/lib/paytrace/configuration.rb +2 -0
  9. data/lib/paytrace/customer.rb +95 -97
  10. data/lib/paytrace/debug.rb +36 -0
  11. data/lib/paytrace/email_receipt_request.rb +4 -28
  12. data/lib/paytrace/recurring_transaction.rb +20 -67
  13. data/lib/paytrace/transaction.rb +680 -267
  14. data/lib/paytrace/version.rb +1 -1
  15. data/lib/paytrace.rb +0 -4
  16. data/paytrace.gemspec +1 -0
  17. data/run_all_integrations.sh +15 -0
  18. data/test/paytrace/api/gateway_spec.rb +8 -0
  19. data/test/paytrace/api/request_spec.rb +84 -28
  20. data/test/paytrace/api/response_spec.rb +2 -2
  21. data/test/paytrace/batch_operations_spec.rb +5 -5
  22. data/test/paytrace/{check_transactions_spec.rb → check_transaction_spec.rb} +40 -19
  23. data/test/paytrace/customer_spec.rb +86 -110
  24. data/test/paytrace/email_receipt_request_spec.rb +9 -8
  25. data/test/paytrace/level3_data_spec.rb +28 -2
  26. data/test/paytrace/recurring_transaction_spec.rb +8 -16
  27. data/test/paytrace/transaction_spec.rb +300 -330
  28. data/test/scripts/run_adjust_amount.rb +1 -1
  29. data/test/scripts/run_attach_signature.rb +2 -2
  30. data/test/scripts/run_calculate_shipping_costs.rb +2 -3
  31. data/test/scripts/run_change_password.rb +2 -0
  32. data/test/scripts/run_check_transactions.rb +2 -3
  33. data/test/scripts/run_create_customer.rb +16 -23
  34. data/test/scripts/run_email_request.rb +3 -5
  35. data/test/scripts/run_export_batches.rb +6 -3
  36. data/test/scripts/run_export_customers.rb +1 -1
  37. data/test/scripts/run_export_transactions.rb +2 -2
  38. data/test/scripts/run_level3_data.rb +1 -1
  39. data/test/scripts/run_recur_payments_integration.rb +24 -32
  40. data/test/scripts/run_settle_transaction.rb +2 -2
  41. data/test/test_helper.rb +12 -1
  42. metadata +19 -7
  43. data/lib/paytrace/credit_card.rb +0 -32
  44. data/test/paytrace/credit_card_spec.rb +0 -26
@@ -1,19 +1,20 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '../../test_helper.rb')
2
2
 
3
3
  describe PayTrace::EmailReceiptRequest do
4
+ before do
5
+ PayTrace::API::Gateway.debug = true
6
+ PayTrace::API::Gateway.next_response = "RESPONSE~ok|CUSTOMERID~12345|CUSTID~john_doe"
7
+ end
8
+
4
9
  it "correctly formats the request URL" do
5
- e = PayTrace::EmailReceiptRequest.new({email: "support@paytrace.com", transaction_id: "FOO1234"})
6
- r = e.set_request
10
+ PayTrace::EmailReceiptRequest.create({email: "support@paytrace.com", transaction_id: "FOO1234"})
7
11
 
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|"
12
+ assert_last_request_equals "METHOD~EmailReceipt|TRANXID~FOO1234|EMAIL~support@paytrace.com|"
10
13
  end
11
14
 
12
15
  it "uses check id instead of transaction id if specified" do
13
- e = PayTrace::EmailReceiptRequest.new({email: "support@paytrace.com", check_id: "CHECK2345"})
14
- r = e.set_request
16
+ PayTrace::EmailReceiptRequest.create({email: "support@paytrace.com", check_id: "CHECK2345"})
15
17
 
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
+ assert_last_request_equals "METHOD~EmailReceipt|CHECKID~CHECK2345|EMAIL~support@paytrace.com|"
18
19
  end
19
20
  end
@@ -69,8 +69,8 @@ describe PayTrace::Transaction do
69
69
  add_tax_rate_li: 0.45,
70
70
  discount_li: 1.87,
71
71
  amount_li: 6
72
- }
73
- ]
72
+ }
73
+ ]
74
74
  }
75
75
  PayTrace::Transaction.add_level_three_visa(params)
76
76
 
@@ -78,6 +78,19 @@ describe PayTrace::Transaction do
78
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
79
  end
80
80
 
81
+ it "detects extra line item details for visa" do
82
+ params = {
83
+ transaction_id: "1143",
84
+ line_items:
85
+ [
86
+ {
87
+ billing_name: "John Doe"
88
+ }
89
+ ]
90
+ }
91
+ -> {PayTrace::Transaction.add_level_three_visa(params)}.must_raise PayTrace::Exceptions::ValidationError
92
+ end
93
+
81
94
  # Required Name Value Pairs
82
95
 
83
96
  # UN, PSWD, TERMS, METHOD, TRANXID
@@ -132,5 +145,18 @@ describe PayTrace::Transaction do
132
145
  PayTrace::API::Gateway.last_request.must_equal base_url(PayTrace::Transaction::LEVEL_3_MC_METHOD) +
133
146
  "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
147
  end
148
+
149
+ it "detects extra line item details for mastercard" do
150
+ params = {
151
+ transaction_id: "1143",
152
+ line_items:
153
+ [
154
+ {
155
+ billing_name: "John Doe"
156
+ }
157
+ ]
158
+ }
159
+ -> {PayTrace::Transaction.add_level_three_mc(params)}.must_raise PayTrace::Exceptions::ValidationError
160
+ end
135
161
  end
136
162
  end
@@ -24,11 +24,9 @@ describe PayTrace::RecurringTransaction do
24
24
  recur_type: "A"
25
25
  }
26
26
 
27
- recur_id = PayTrace::RecurringTransaction.create(params)
27
+ PayTrace::RecurringTransaction.create(params)
28
28
  PayTrace::API::Gateway.last_request.must_equal base_url(PayTrace::RecurringTransaction::CREATE_METHOD) +
29
29
  "CUSTID~foo_bar|FREQUENCY~3|START~4/22/2014|TOTALCOUNT~999|AMOUNT~9.99|TRANXTYPE~sale|DESCRIPTION~Recurring transaction|CUSTRECEIPT~Y|RECURTYPE~A|"
30
-
31
- recur_id.must_equal "12345"
32
30
  end
33
31
  end
34
32
 
@@ -51,12 +49,10 @@ describe PayTrace::RecurringTransaction do
51
49
  recur_receipt: "Y"
52
50
  }
53
51
 
54
- recur_id = PayTrace::RecurringTransaction.update(params)
52
+ PayTrace::RecurringTransaction.update(params)
55
53
  PayTrace::API::Gateway.last_request.must_equal base_url(PayTrace::RecurringTransaction::UPDATE_METHOD) +
56
54
  "RECURID~12345|CUSTID~foo_bar|FREQUENCY~3|START~4/22/2014|TOTALCOUNT~999|AMOUNT~9.99|TRANXTYPE~sale|" +
57
55
  "DESCRIPTION~Recurring transaction|CUSTRECEIPT~Y|"
58
-
59
- recur_id.must_equal "12345"
60
56
  end
61
57
 
62
58
  it "accepts a recur type" do
@@ -73,12 +69,10 @@ describe PayTrace::RecurringTransaction do
73
69
  recur_type: "A"
74
70
  }
75
71
 
76
- recur_id = PayTrace::RecurringTransaction.update(params)
72
+ PayTrace::RecurringTransaction.update(params)
77
73
  PayTrace::API::Gateway.last_request.must_equal base_url(PayTrace::RecurringTransaction::UPDATE_METHOD) +
78
74
  "RECURID~12345|CUSTID~foo_bar|FREQUENCY~3|START~4/22/2014|TOTALCOUNT~999|AMOUNT~9.99|TRANXTYPE~sale|" +
79
75
  "DESCRIPTION~Recurring transaction|CUSTRECEIPT~Y|RECURTYPE~A|"
80
-
81
- recur_id.must_equal "12345"
82
76
  end
83
77
  end
84
78
 
@@ -93,11 +87,9 @@ describe PayTrace::RecurringTransaction do
93
87
  recur_id: 12345
94
88
  }
95
89
 
96
- recur_id = PayTrace::RecurringTransaction.delete(params)
90
+ PayTrace::RecurringTransaction.delete(params)
97
91
  PayTrace::API::Gateway.last_request.must_equal base_url(PayTrace::RecurringTransaction::DELETE_METHOD) +
98
92
  "RECURID~12345|"
99
-
100
- recur_id.must_equal "12345"
101
93
  end
102
94
 
103
95
  it "works with a customer ID" do
@@ -105,11 +97,9 @@ describe PayTrace::RecurringTransaction do
105
97
  customer_id: "foo_bar"
106
98
  }
107
99
 
108
- recur_id = PayTrace::RecurringTransaction.delete(params)
100
+ PayTrace::RecurringTransaction.delete(params)
109
101
  PayTrace::API::Gateway.last_request.must_equal base_url(PayTrace::RecurringTransaction::DELETE_METHOD) +
110
102
  "CUSTID~foo_bar|"
111
-
112
- recur_id.must_equal "12345"
113
103
  end
114
104
  end
115
105
 
@@ -137,7 +127,9 @@ describe PayTrace::RecurringTransaction do
137
127
  PayTrace::API::Gateway.last_request.must_equal base_url(PayTrace::RecurringTransaction::EXPORT_SCHEDULED_METHOD) +
138
128
  "CUSTID~john_doe|"
139
129
 
140
- exported.must_be_instance_of PayTrace::RecurringTransaction
130
+ exported.must_be_instance_of Array
131
+ exported[0].must_be_instance_of Hash
132
+ exported[0]['AMOUNT'].must_equal '9.99'
141
133
  end
142
134
  end
143
135
  end