VantivCnp 8.31.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 (120) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG +139 -0
  3. data/CONTRIBUTORS +2 -0
  4. data/DESCRIPTION +5 -0
  5. data/LICENSE +22 -0
  6. data/README.md +72 -0
  7. data/Rakefile +89 -0
  8. data/SETUP.md +46 -0
  9. data/bin/Setup.rb +124 -0
  10. data/bin/sample_batch_driver.rb +123 -0
  11. data/bin/sample_driver.rb +49 -0
  12. data/lib/Communications.rb +85 -0
  13. data/lib/Configuration.rb +67 -0
  14. data/lib/EnvironmentVariables.rb +22 -0
  15. data/lib/LitleBatchRequest.rb +562 -0
  16. data/lib/LitleListeners.rb +142 -0
  17. data/lib/LitleOnline.rb +62 -0
  18. data/lib/LitleOnlineRequest.rb +297 -0
  19. data/lib/LitleRequest.rb +494 -0
  20. data/lib/LitleTransaction.rb +463 -0
  21. data/lib/LitleXmlMapper.rb +64 -0
  22. data/lib/XMLFields.rb +1869 -0
  23. data/lib/cacert.pem +3331 -0
  24. data/samples/Auth/LitleAuthReversalTransaction.rb +15 -0
  25. data/samples/Auth/LitleAuthorizationTransaction.rb +31 -0
  26. data/samples/Auth/LitlePaymentFullLifeCycle.rb +47 -0
  27. data/samples/Batch/AccountUpdate.rb +64 -0
  28. data/samples/Batch/SampleBatchDriver.rb +94 -0
  29. data/samples/Capture/LitleCaptureGivenAuthTransaction.rb +30 -0
  30. data/samples/Capture/LitleCaptureTransaction.rb +14 -0
  31. data/samples/Capture/LitleForceCaptureTransaction.rb +26 -0
  32. data/samples/Capture/LitlePartialCapture.rb +16 -0
  33. data/samples/Credit/LitleCreditTransaction.rb +16 -0
  34. data/samples/Credit/LitleRefundTransaction.rb +29 -0
  35. data/samples/Other/LitleAvsTransaction.rb +34 -0
  36. data/samples/Other/LitleVoidTransaction.rb +18 -0
  37. data/samples/Paypage/FullPaypageLifeCycle.rb +74 -0
  38. data/samples/Run_all.rb +17 -0
  39. data/samples/Sale/LitleSaleTransaction.rb +29 -0
  40. data/samples/Sale/SampleSaleTransaction.rb +24 -0
  41. data/test/certification/certTest1_base.rb +945 -0
  42. data/test/certification/certTest2_authenhanced.rb +573 -0
  43. data/test/certification/certTest3_authreversal.rb +185 -0
  44. data/test/certification/certTest4_echeck.rb +278 -0
  45. data/test/certification/certTest5_token.rb +204 -0
  46. data/test/certification/certTest_batchAll.rb +337 -0
  47. data/test/certification/ts_all.rb +33 -0
  48. data/test/functional/test_activate.rb +100 -0
  49. data/test/functional/test_activateReversal.rb +56 -0
  50. data/test/functional/test_auth.rb +298 -0
  51. data/test/functional/test_authReversal.rb +69 -0
  52. data/test/functional/test_balanceInquiry.rb +80 -0
  53. data/test/functional/test_batch.rb +164 -0
  54. data/test/functional/test_batchStream.rb +145 -0
  55. data/test/functional/test_cancelSubscription.rb +55 -0
  56. data/test/functional/test_capture.rb +84 -0
  57. data/test/functional/test_captureGivenAuth.rb +235 -0
  58. data/test/functional/test_configuration.rb +89 -0
  59. data/test/functional/test_createPlan.rb +85 -0
  60. data/test/functional/test_credit.rb +174 -0
  61. data/test/functional/test_deactivate.rb +80 -0
  62. data/test/functional/test_deactivateReversal.rb +56 -0
  63. data/test/functional/test_depositReversal.rb +56 -0
  64. data/test/functional/test_echeckCredit.rb +134 -0
  65. data/test/functional/test_echeckRedeposit.rb +88 -0
  66. data/test/functional/test_echeckSale.rb +177 -0
  67. data/test/functional/test_echeckVerification.rb +127 -0
  68. data/test/functional/test_echeckVoid.rb +41 -0
  69. data/test/functional/test_forceCapture.rb +183 -0
  70. data/test/functional/test_litle_requests.rb +356 -0
  71. data/test/functional/test_load.rb +82 -0
  72. data/test/functional/test_loadReversal.rb +56 -0
  73. data/test/functional/test_override.rb +64 -0
  74. data/test/functional/test_refundReversal.rb +56 -0
  75. data/test/functional/test_sale.rb +259 -0
  76. data/test/functional/test_token.rb +115 -0
  77. data/test/functional/test_unload.rb +82 -0
  78. data/test/functional/test_unloadReversal.rb +56 -0
  79. data/test/functional/test_updateCardValidationNumOnToken.rb +43 -0
  80. data/test/functional/test_updatePlan.rb +58 -0
  81. data/test/functional/test_updateSubscription.rb +76 -0
  82. data/test/functional/test_xmlfields.rb +427 -0
  83. data/test/functional/ts_all.rb +66 -0
  84. data/test/unit/test_LitleAUBatch.rb +216 -0
  85. data/test/unit/test_LitleBatchRequest.rb +643 -0
  86. data/test/unit/test_LitleOnlineRequest.rb +295 -0
  87. data/test/unit/test_LitleRequest.rb +316 -0
  88. data/test/unit/test_LitleTransaction.rb +397 -0
  89. data/test/unit/test_activate.rb +92 -0
  90. data/test/unit/test_activateReversal.rb +44 -0
  91. data/test/unit/test_auth.rb +421 -0
  92. data/test/unit/test_authReversal.rb +82 -0
  93. data/test/unit/test_balanceInquiry.rb +52 -0
  94. data/test/unit/test_cancelSubscription.rb +43 -0
  95. data/test/unit/test_capture.rb +73 -0
  96. data/test/unit/test_captureGivenAuth.rb +188 -0
  97. data/test/unit/test_createPlan.rb +52 -0
  98. data/test/unit/test_credit.rb +342 -0
  99. data/test/unit/test_deactivate.rb +52 -0
  100. data/test/unit/test_deactivateReversal.rb +44 -0
  101. data/test/unit/test_depositReversal.rb +44 -0
  102. data/test/unit/test_echeckCredit.rb +71 -0
  103. data/test/unit/test_echeckRedeposit.rb +94 -0
  104. data/test/unit/test_echeckSale.rb +71 -0
  105. data/test/unit/test_echeckVerification.rb +71 -0
  106. data/test/unit/test_echeckVoid.rb +54 -0
  107. data/test/unit/test_forceCapture.rb +145 -0
  108. data/test/unit/test_load.rb +53 -0
  109. data/test/unit/test_loadReversal.rb +44 -0
  110. data/test/unit/test_refundReversal.rb +44 -0
  111. data/test/unit/test_sale.rb +465 -0
  112. data/test/unit/test_token.rb +144 -0
  113. data/test/unit/test_unload.rb +53 -0
  114. data/test/unit/test_unloadReversal.rb +44 -0
  115. data/test/unit/test_updateCardValidationNumOnToken.rb +80 -0
  116. data/test/unit/test_updatePlan.rb +45 -0
  117. data/test/unit/test_updateSubscription.rb +172 -0
  118. data/test/unit/test_xmlfields.rb +2930 -0
  119. data/test/unit/ts_unit.rb +65 -0
  120. metadata +224 -0
@@ -0,0 +1,463 @@
1
+ =begin
2
+ Copyright (c) 2011 Litle & Co.
3
+
4
+ Permission is hereby granted, free of charge, to any person
5
+ obtaining a copy of this software and associated documentation
6
+ files (the "Software"), to deal in the Software without
7
+ restriction, including without limitation the rights to use,
8
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the
10
+ Software is furnished to do so, subject to the following
11
+ conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
18
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
20
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
21
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23
+ OTHER DEALINGS IN THE SOFTWARE.
24
+ =end
25
+ require_relative 'Configuration'
26
+
27
+ #
28
+ # This class does all the heavy lifting of mapping the Ruby hash into Litle XML format
29
+ # It also handles validation looking for missing or incorrect fields
30
+ # contains the methods to properly create each transaction type
31
+ #
32
+ module LitleOnline
33
+
34
+ class LitleTransaction
35
+ def authorization(options)
36
+ transaction = Authorization.new
37
+ transaction.secondaryAmount = options['secondaryAmount']
38
+ transaction.surchargeAmount = options['surchargeAmount']
39
+ transaction.recurringRequest = RecurringRequest.from_hash(options,'recurringRequest')
40
+ transaction.debtRepayment = options['debtRepayment']
41
+ transaction.advancedFraudChecks = AdvancedFraudChecks.from_hash(options, 'advancedFraudChecks')
42
+ transaction.processingType = options['processingType']
43
+ transaction.originalNetworkTransactionId = options['originalNetworkTransactionId']
44
+ transaction.originalTransactionAmount = options['originalTransactionAmount']
45
+ add_transaction_info(transaction, options)
46
+
47
+ return transaction
48
+ end
49
+
50
+ def cancel_subscription(options)
51
+ transaction = CancelSubscription.new
52
+ transaction.subscriptionId = options['subscriptionId']
53
+ return transaction
54
+ end
55
+
56
+ def activate(options)
57
+ transaction = Activate.new
58
+ transaction.orderId = options['orderId']
59
+ transaction.orderSource = options['orderSource']
60
+ transaction.amount = options['amount']
61
+ transaction.card = Card.from_hash(options,'card')
62
+ transaction.virtualGiftCard = VirtualGiftCard.from_hash(options,'virtualGiftCard')
63
+ return transaction
64
+ end
65
+
66
+ def deactivate(options)
67
+ transaction = Deactivate.new
68
+ transaction.orderId = options['orderId']
69
+ transaction.orderSource = options['orderSource']
70
+ transaction.card = Card.from_hash(options,'card')
71
+ return transaction
72
+ end
73
+
74
+ def load_request(options)
75
+ transaction = Load.new
76
+ transaction.orderId = options['orderId']
77
+ transaction.orderSource = options['orderSource']
78
+ transaction.amount = options['amount']
79
+ transaction.card = Card.from_hash(options,'card')
80
+ return transaction
81
+ end
82
+
83
+ def unload_request(options)
84
+ transaction = Unload.new
85
+ transaction.orderId = options['orderId']
86
+ transaction.orderSource = options['orderSource']
87
+ transaction.amount = options['amount']
88
+ transaction.card = Card.from_hash(options,'card')
89
+ return transaction
90
+ end
91
+
92
+ def balance_inquiry(options)
93
+ transaction = BalanceInquiry.new
94
+ transaction.orderId = options['orderId']
95
+ transaction.orderSource = options['orderSource']
96
+ transaction.card = Card.from_hash(options,'card')
97
+ return transaction
98
+ end
99
+
100
+ def update_subscription(options)
101
+ transaction = UpdateSubscription.new
102
+ transaction.subscriptionId = options['subscriptionId']
103
+ transaction.planCode=options['planCode']
104
+ transaction.billToAddress=Contact.from_hash(options,'billToAddress')
105
+ transaction.card=Card.from_hash(options,'card')
106
+ transaction.billingDate=options['billingDate']
107
+ transaction.card = Card.from_hash(options)
108
+ transaction.token = CardToken.from_hash(options,'token')
109
+ transaction.paypage = CardPaypage.from_hash(options,'paypage')
110
+ if(options['createDiscount'])
111
+ options['createDiscount'].each_index {| index | transaction.createDiscount << CreateDiscount.from_hash(options, index,'createDiscount')}
112
+ end
113
+ if(options['updateDiscount'])
114
+ options['updateDiscount'].each_index {| index | transaction.updateDiscount << UpdateDiscount.from_hash(options, index,'updateDiscount')}
115
+ end
116
+ if(options['deleteDiscount'])
117
+ options['deleteDiscount'].each_index {| index | transaction.deleteDiscount << DeleteDiscount.from_hash(options, index,'deleteDiscount')}
118
+ end
119
+ if(options['createAddOn'])
120
+ options['createAddOn'].each_index {| index | transaction.createAddOn << CreateAddOn.from_hash(options, index,'createAddOn')}
121
+ end
122
+ if(options['updateAddOn'])
123
+ options['updateAddOn'].each_index {| index | transaction.updateAddOn << UpdateAddOn.from_hash(options, index,'updateAddOn')}
124
+ end
125
+ if(options['deleteAddOn'])
126
+ options['deleteAddOn'].each_index {| index | transaction.deleteAddOn << DeleteAddOn.from_hash(options, index,'deleteAddOn')}
127
+ end
128
+
129
+ return transaction
130
+ end
131
+
132
+ def create_plan(options)
133
+ transaction = CreatePlan.new
134
+ transaction.planCode = options['planCode']
135
+ transaction.name=options['name']
136
+ transaction.description=options['description']
137
+ transaction.intervalType=options['intervalType']
138
+ transaction.amount=options['amount']
139
+ transaction.numberOfPayments=options['numberOfPayments']
140
+ transaction.trialNumberOfIntervals=options['trialNumberOfIntervals']
141
+ transaction.trialIntervalType=options['trialIntervalType']
142
+ transaction.active=options['active']
143
+ return transaction
144
+ end
145
+
146
+ def update_plan(options)
147
+ transaction = UpdatePlan.new
148
+ transaction.planCode = options['planCode']
149
+ transaction.active=options['active']
150
+ return transaction
151
+ end
152
+
153
+ def virtual_giftcard(options)
154
+ transaction = VirtualGiftCard.new
155
+ transaction.accountNumberLength = options['accountNumberLength']
156
+ transaction.giftCardBin = options['giftCardBin']
157
+ return transaction
158
+ end
159
+
160
+ def activate_reversal(options)
161
+ transaction = ActivateReversal.new
162
+ transaction.litleTxnId = options['litleTxnId']
163
+ return transaction
164
+ end
165
+
166
+ def deposit_reversal(options)
167
+ transaction = DepositReversal.new
168
+ transaction.litleTxnId = options['litleTxnId']
169
+ return transaction
170
+ end
171
+
172
+ def refund_reversal(options)
173
+ transaction = RefundReversal.new
174
+ transaction.litleTxnId = options['litleTxnId']
175
+ return transaction
176
+ end
177
+
178
+ def deactivate_reversal(options)
179
+ transaction = DeactivateReversal.new
180
+ transaction.litleTxnId = options['litleTxnId']
181
+ return transaction
182
+ end
183
+
184
+ def load_reversal(options)
185
+ transaction = LoadReversal.new
186
+ transaction.litleTxnId = options['litleTxnId']
187
+ return transaction
188
+ end
189
+
190
+ def unload_reversal(options)
191
+ transaction = UnloadReversal.new
192
+ transaction.litleTxnId = options['litleTxnId']
193
+ return transaction
194
+ end
195
+
196
+ def sale(options)
197
+ transaction = Sale.new
198
+ add_transaction_info(transaction, options)
199
+ transaction.secondaryAmount = options['secondaryAmount']
200
+ transaction.surchargeAmount = options['surchargeAmount']
201
+ transaction.fraudCheck = FraudCheck.from_hash(options,'fraudCheck')
202
+ transaction.payPalOrderComplete = options['payPalOrderComplete']
203
+ transaction.payPalNotes = options['payPalNotes']
204
+ transaction.recurringRequest = RecurringRequest.from_hash(options,'recurringRequest')
205
+ transaction.litleInternalRecurringRequest = LitleInternalRecurringRequest.from_hash(options,'litleInternalRecurringRequest')
206
+ transaction.debtRepayment = options['debtRepayment']
207
+ transaction.advancedFraudChecks = AdvancedFraudChecks.from_hash(options, 'advancedFraudChecks')
208
+ transaction.processingType = options['processingType']
209
+ transaction.originalNetworkTransactionId = options['originalNetworkTransactionId']
210
+ transaction.originalTransactionAmount = options['originalTransactionAmount']
211
+ return transaction
212
+ end
213
+
214
+ def credit(options)
215
+ transaction = Credit.new
216
+ transaction.litleTxnId = options['litleTxnId']
217
+ if(transaction.litleTxnId.nil?)
218
+ transaction.orderId = options['orderId']
219
+ transaction.orderSource = options['orderSource']
220
+ transaction.taxType = options['taxType']
221
+ transaction.billToAddress = Contact.from_hash(options,'billToAddress')
222
+ transaction.amexAggregatorData = AmexAggregatorData.from_hash(options)
223
+ transaction.card = Card.from_hash(options)
224
+ transaction.token = CardToken.from_hash(options,'token')
225
+ transaction.paypage = CardPaypage.from_hash(options,'paypage')
226
+ transaction.mpos = Mpos.from_hash(options,'mpos')
227
+ end
228
+ transaction.amount = options['amount']
229
+ transaction.secondaryAmount = options['secondaryAmount']
230
+ transaction.surchargeAmount = options['surchargeAmount']
231
+ transaction.customBilling = CustomBilling.from_hash(options)
232
+ transaction.enhancedData = EnhancedData.from_hash(options)
233
+ transaction.processingInstructions = ProcessingInstructions.from_hash(options)
234
+ transaction.pos = Pos.from_hash(options)
235
+ transaction.billMeLaterRequest = BillMeLaterRequest.from_hash(options)
236
+ transaction.payPalNotes = options['payPalNotes']
237
+ transaction.actionReason = options['actionReason']
238
+ transaction.paypal = CreditPayPal.from_hash(options,'paypal')
239
+
240
+ add_account_info(transaction, options)
241
+ return transaction
242
+ end
243
+
244
+ def auth_reversal(options)
245
+ transaction = AuthReversal.new
246
+
247
+ transaction.litleTxnId = options['litleTxnId']
248
+ transaction.amount = options['amount']
249
+ transaction.surchargeAmount = options['surchargeAmount']
250
+ transaction.payPalNotes = options['payPalNotes']
251
+ transaction.actionReason = options['actionReason']
252
+
253
+ add_account_info(transaction, options)
254
+ return transaction
255
+ end
256
+
257
+ def register_token_request(options)
258
+ transaction = RegisterTokenRequest.new
259
+
260
+ transaction.orderId = options['orderId']
261
+ transaction.accountNumber = options['accountNumber']
262
+ transaction.echeckForToken = EcheckForToken.from_hash(options)
263
+ transaction.paypageRegistrationId = options['paypageRegistrationId']
264
+ transaction.applepay = Applepay.from_hash(options,'applepay')
265
+ add_account_info(transaction, options)
266
+ return transaction
267
+ end
268
+
269
+ def update_card_validation_num_on_token(options)
270
+ transaction = UpdateCardValidationNumOnToken.new
271
+
272
+ transaction.orderId = options['orderId']
273
+ transaction.litleToken = options['litleToken']
274
+ transaction.cardValidationNum = options['cardValidationNum']
275
+
276
+ SchemaValidation.validate_length(transaction.litleToken, true, 13, 25, "updateCardValidationNumOnToken", "litleToken")
277
+ SchemaValidation.validate_length(transaction.cardValidationNum, true, 1, 4, "updateCardValidationNumOnToken", "cardValidationNum")
278
+
279
+ add_account_info(transaction, options)
280
+ return transaction
281
+ end
282
+
283
+ def force_capture(options)
284
+ transaction = ForceCapture.new
285
+ transaction.secondaryAmount = options['secondaryAmount']
286
+ transaction.surchargeAmount = options['surchargeAmount']
287
+ transaction.customBilling = CustomBilling.from_hash(options)
288
+ transaction.debtRepayment = options['debtRepayment']
289
+ transaction.processingType = options['processingType']
290
+ add_order_info(transaction, options)
291
+
292
+ return transaction
293
+ end
294
+
295
+ def capture(options)
296
+ transaction = Capture.new
297
+
298
+ transaction.partial = options['partial']
299
+ transaction.litleTxnId = options['litleTxnId']
300
+ transaction.amount = options['amount']
301
+ transaction.surchargeAmount = options['surchargeAmount']
302
+ transaction.enhancedData = EnhancedData.from_hash(options)
303
+ transaction.processingInstructions = ProcessingInstructions.from_hash(options)
304
+ transaction.payPalOrderComplete = options['payPalOrderComplete']
305
+ transaction.payPalNotes = options['payPalNotes']
306
+ transaction.customBilling = options['customBilling']
307
+
308
+ add_account_info(transaction, options)
309
+ return transaction
310
+ end
311
+
312
+ def capture_given_auth(options)
313
+ transaction = CaptureGivenAuth.new
314
+ add_order_info(transaction, options)
315
+ transaction.secondaryAmount = options['secondaryAmount']
316
+ transaction.surchargeAmount = options['surchargeAmount']
317
+ transaction.authInformation = AuthInformation.from_hash(options)
318
+ transaction.shipToAddress = Contact.from_hash(options,'shipToAddress')
319
+ transaction.customBilling = CustomBilling.from_hash(options)
320
+ transaction.billMeLaterRequest = BillMeLaterRequest.from_hash(options)
321
+ transaction.debtRepayment = options['debtRepayment']
322
+ transaction.processingType = options['processingType']
323
+ transaction.originalNetworkTransactionId = options['originalNetworkTransactionId']
324
+ transaction.originalTransactionAmount = options['originalTransactionAmount']
325
+ return transaction
326
+ end
327
+
328
+ def void(options)
329
+ transaction = Void.new
330
+
331
+ transaction.litleTxnId = options['litleTxnId']
332
+ transaction.processingInstructions = ProcessingInstructions.from_hash(options)
333
+
334
+ add_account_info(transaction, options)
335
+ return transaction
336
+ end
337
+
338
+ def echeck_redeposit(options)
339
+ transaction = EcheckRedeposit.new
340
+ add_echeck(transaction, options)
341
+
342
+ transaction.litleTxnId = options['litleTxnId']
343
+ transaction.merchantData = MerchantData.from_hash(options)
344
+
345
+ return transaction
346
+ end
347
+
348
+ def echeck_sale(options)
349
+ transaction = EcheckSale.new
350
+ add_echeck(transaction, options)
351
+ add_echeck_order_info(transaction, options)
352
+ transaction.secondaryAmount = options['secondaryAmount']
353
+ transaction.verify = options['verify']
354
+ transaction.shipToAddress = Contact.from_hash(options,'shipToAddress')
355
+ transaction.customBilling = CustomBilling.from_hash(options)
356
+
357
+ return transaction
358
+ end
359
+
360
+ def echeck_credit(options)
361
+ transaction = EcheckCredit.new
362
+ transaction.customBilling = CustomBilling.from_hash(options)
363
+ transaction.secondaryAmount = options['secondaryAmount']
364
+ add_echeck_order_info(transaction, options)
365
+ add_echeck(transaction, options)
366
+
367
+ return transaction
368
+ end
369
+
370
+ def echeck_verification(options)
371
+ transaction = EcheckVerification.new
372
+
373
+ add_echeck_order_info(transaction, options)
374
+ add_echeck(transaction, options)
375
+ transaction.merchantData = MerchantData.from_hash(options)
376
+
377
+ return transaction
378
+ end
379
+
380
+ def echeck_void(options)
381
+ transaction = EcheckVoid.new
382
+ transaction.litleTxnId = options['litleTxnId']
383
+
384
+ add_account_info(transaction, options)
385
+ return transaction
386
+ end
387
+
388
+ def account_update(options)
389
+ transaction = AccountUpdate.new
390
+ transaction.card = Card.from_hash(options)
391
+ transaction.token = CardToken.from_hash(options,'token')
392
+ transaction.orderId = options['orderId']
393
+
394
+ add_account_info(transaction, options)
395
+
396
+ return transaction
397
+ end
398
+
399
+ private
400
+
401
+ def add_account_info(transaction, options)
402
+ transaction.reportGroup = get_report_group(options)
403
+ transaction.transactionId = options['id']
404
+ transaction.customerId = options['customerId']
405
+ end
406
+
407
+ def add_transaction_info(transaction, options)
408
+ transaction.litleTxnId = options['litleTxnId']
409
+ transaction.customerInfo = CustomerInfo.from_hash(options)
410
+ transaction.shipToAddress = Contact.from_hash(options,'shipToAddress')
411
+ transaction.billMeLaterRequest = BillMeLaterRequest.from_hash(options)
412
+ transaction.cardholderAuthentication = FraudCheck.from_hash(options, 'cardholderAuthentication')
413
+ transaction.allowPartialAuth = options['allowPartialAuth']
414
+ transaction.healthcareIIAS = HealthcareIIAS.from_hash(options)
415
+ transaction.filtering = Filtering.from_hash(options)
416
+ transaction.merchantData = MerchantData.from_hash(options)
417
+ transaction.recyclingRequest = RecyclingRequest.from_hash(options)
418
+ transaction.fraudFilterOverride = options['fraudFilterOverride']
419
+ transaction.customBilling = CustomBilling.from_hash(options)
420
+ transaction.paypal = PayPal.from_hash(options,'paypal')
421
+ transaction.applepay = Applepay.from_hash(options,'applepay')
422
+
423
+ add_order_info(transaction, options)
424
+ end
425
+
426
+ def add_order_info(transaction, options)
427
+ transaction.amount = options['amount']
428
+ transaction.orderId = options['orderId']
429
+ transaction.orderSource = options['orderSource']
430
+ transaction.taxType = options['taxType']
431
+ transaction.billToAddress = Contact.from_hash(options,'billToAddress')
432
+ transaction.enhancedData = EnhancedData.from_hash(options)
433
+ transaction.processingInstructions = ProcessingInstructions.from_hash(options)
434
+ transaction.pos = Pos.from_hash(options)
435
+ transaction.amexAggregatorData = AmexAggregatorData.from_hash(options)
436
+ transaction.card = Card.from_hash(options)
437
+ transaction.token = CardToken.from_hash(options,'token')
438
+ transaction.paypage = CardPaypage.from_hash(options,'paypage')
439
+ transaction.mpos = Mpos.from_hash(options,'mpos')
440
+ add_account_info(transaction, options)
441
+ end
442
+
443
+ def add_echeck_order_info(transaction, options)
444
+ transaction.litleTxnId = options['litleTxnId']
445
+ transaction.orderId = options['orderId']
446
+ transaction.amount = options['amount']
447
+ transaction.orderSource = options['orderSource']
448
+ transaction.billToAddress = Contact.from_hash(options,'billToAddress')
449
+ end
450
+
451
+ def add_echeck(transaction, options)
452
+ transaction.echeck = Echeck.from_hash(options)
453
+ transaction.echeckToken = EcheckToken.from_hash(options)
454
+
455
+ add_account_info(transaction, options)
456
+ end
457
+
458
+ def get_report_group(options)
459
+ #options['reportGroup'] || @config_hash['default_report_group']
460
+ options['reportGroup']
461
+ end
462
+ end
463
+ end