abtain_billing 1.0 → 1.02

Sign up to get free protection for your applications and to get access to all the features.
Files changed (237) hide show
  1. data/CHANGELOG +2 -472
  2. data/CONTRIBUTORS +0 -126
  3. data/MIT-LICENSE +2 -2
  4. data/Rakefile +3 -3
  5. data/init.rb +3 -3
  6. data/lib/{active_merchant.rb → abtain_billing.rb} +18 -18
  7. data/lib/{active_merchant → abtain_billing}/billing/avs_result.rb +1 -1
  8. data/lib/{active_merchant → abtain_billing}/billing/base.rb +7 -7
  9. data/lib/{active_merchant → abtain_billing}/billing/check.rb +1 -1
  10. data/lib/{active_merchant → abtain_billing}/billing/credit_card.rb +2 -2
  11. data/lib/{active_merchant → abtain_billing}/billing/credit_card_formatting.rb +1 -1
  12. data/lib/{active_merchant → abtain_billing}/billing/credit_card_methods.rb +2 -2
  13. data/lib/{active_merchant → abtain_billing}/billing/cvv_result.rb +1 -1
  14. data/lib/{active_merchant → abtain_billing}/billing/expiry_date.rb +1 -1
  15. data/lib/{active_merchant → abtain_billing}/billing/gateway.rb +5 -5
  16. data/lib/{active_merchant → abtain_billing}/billing/gateways.rb +1 -1
  17. data/lib/{active_merchant → abtain_billing}/billing/gateways/authorize_net.rb +3 -1
  18. data/lib/{active_merchant → abtain_billing}/billing/gateways/authorize_net_cim.rb +2 -1
  19. data/lib/{active_merchant → abtain_billing}/billing/gateways/bogus.rb +1 -1
  20. data/lib/{active_merchant → abtain_billing}/billing/gateways/cyber_source.rb +1 -1
  21. data/lib/abtain_billing/billing/integrations.rb +22 -0
  22. data/lib/{active_merchant → abtain_billing}/billing/integrations/action_view_helper.rb +2 -2
  23. data/lib/{active_merchant → abtain_billing}/billing/integrations/bogus.rb +4 -4
  24. data/lib/{active_merchant → abtain_billing}/billing/integrations/bogus/helper.rb +2 -2
  25. data/lib/{active_merchant → abtain_billing}/billing/integrations/bogus/notification.rb +2 -2
  26. data/lib/{active_merchant → abtain_billing}/billing/integrations/bogus/return.rb +2 -2
  27. data/lib/{active_merchant → abtain_billing}/billing/integrations/chronopay.rb +4 -4
  28. data/lib/{active_merchant → abtain_billing}/billing/integrations/chronopay/helper.rb +2 -2
  29. data/lib/{active_merchant → abtain_billing}/billing/integrations/chronopay/notification.rb +2 -2
  30. data/lib/{active_merchant → abtain_billing}/billing/integrations/chronopay/return.rb +2 -2
  31. data/lib/{active_merchant → abtain_billing}/billing/integrations/gestpay.rb +1 -1
  32. data/lib/{active_merchant → abtain_billing}/billing/integrations/gestpay/common.rb +1 -1
  33. data/lib/{active_merchant → abtain_billing}/billing/integrations/gestpay/helper.rb +2 -2
  34. data/lib/{active_merchant → abtain_billing}/billing/integrations/gestpay/notification.rb +2 -2
  35. data/lib/{active_merchant → abtain_billing}/billing/integrations/gestpay/return.rb +2 -2
  36. data/lib/{active_merchant → abtain_billing}/billing/integrations/helper.rb +2 -2
  37. data/lib/{active_merchant → abtain_billing}/billing/integrations/hi_trust.rb +2 -2
  38. data/lib/{active_merchant → abtain_billing}/billing/integrations/hi_trust/helper.rb +2 -2
  39. data/lib/{active_merchant → abtain_billing}/billing/integrations/hi_trust/notification.rb +3 -3
  40. data/lib/{active_merchant → abtain_billing}/billing/integrations/hi_trust/return.rb +2 -2
  41. data/lib/{active_merchant → abtain_billing}/billing/integrations/nochex.rb +5 -5
  42. data/lib/{active_merchant → abtain_billing}/billing/integrations/nochex/helper.rb +2 -2
  43. data/lib/{active_merchant → abtain_billing}/billing/integrations/nochex/notification.rb +3 -3
  44. data/lib/{active_merchant → abtain_billing}/billing/integrations/nochex/return.rb +2 -2
  45. data/lib/{active_merchant → abtain_billing}/billing/integrations/notification.rb +2 -2
  46. data/lib/{active_merchant → abtain_billing}/billing/integrations/paypal.rb +5 -5
  47. data/lib/{active_merchant → abtain_billing}/billing/integrations/paypal/helper.rb +2 -2
  48. data/lib/{active_merchant → abtain_billing}/billing/integrations/paypal/notification.rb +3 -3
  49. data/lib/{active_merchant → abtain_billing}/billing/integrations/paypal/return.rb +2 -2
  50. data/lib/{active_merchant → abtain_billing}/billing/integrations/quickpay.rb +1 -1
  51. data/lib/{active_merchant → abtain_billing}/billing/integrations/quickpay/helper.rb +2 -2
  52. data/lib/{active_merchant → abtain_billing}/billing/integrations/quickpay/notification.rb +2 -2
  53. data/lib/{active_merchant → abtain_billing}/billing/integrations/return.rb +1 -1
  54. data/lib/{active_merchant → abtain_billing}/billing/integrations/two_checkout.rb +1 -1
  55. data/lib/{active_merchant → abtain_billing}/billing/integrations/two_checkout/helper.rb +3 -3
  56. data/lib/{active_merchant → abtain_billing}/billing/integrations/two_checkout/notification.rb +2 -2
  57. data/lib/{active_merchant → abtain_billing}/billing/integrations/two_checkout/return.rb +2 -2
  58. data/lib/{active_merchant → abtain_billing}/billing/response.rb +2 -2
  59. data/lib/{active_merchant → abtain_billing}/lib/connection.rb +3 -3
  60. data/lib/{active_merchant → abtain_billing}/lib/country.rb +1 -1
  61. data/lib/abtain_billing/lib/error.rb +4 -0
  62. data/lib/{active_merchant → abtain_billing}/lib/post_data.rb +0 -0
  63. data/lib/{active_merchant → abtain_billing}/lib/posts_data.rb +1 -1
  64. data/lib/{active_merchant → abtain_billing}/lib/requires_parameters.rb +1 -1
  65. data/lib/{active_merchant → abtain_billing}/lib/utils.rb +1 -1
  66. data/lib/{active_merchant → abtain_billing}/lib/validateable.rb +1 -1
  67. data/lib/support/gateway_support.rb +3 -3
  68. data/test/fixtures.yml +2 -2
  69. data/test/remote/integrations/remote_gestpay_integration_test.rb +1 -1
  70. data/test/remote/integrations/remote_paypal_integration_test.rb +3 -3
  71. data/test/test_helper.rb +10 -10
  72. data/test/unit/base_test.rb +2 -2
  73. data/test/unit/connection_test.rb +11 -11
  74. data/test/unit/country_code_test.rb +1 -1
  75. data/test/unit/country_test.rb +1 -1
  76. data/test/unit/credit_card_formatting_test.rb +1 -1
  77. data/test/unit/credit_card_methods_test.rb +2 -2
  78. data/test/unit/gateways/authorize_net_test.rb +2 -2
  79. data/test/unit/gateways/bogus_test.rb +1 -1
  80. data/test/unit/gateways/data_cash_test.rb +1 -1
  81. data/test/unit/gateways/jetpay_test.rb +1 -1
  82. data/test/unit/gateways/merchant_ware_test.rb +1 -1
  83. data/test/unit/gateways/payflow_express_test.rb +1 -1
  84. data/test/unit/gateways/payflow_test.rb +5 -5
  85. data/test/unit/gateways/paypal_express_test.rb +2 -2
  86. data/test/unit/gateways/paypal_test.rb +2 -2
  87. data/test/unit/gateways/realex_test.rb +1 -1
  88. data/test/unit/gateways/verifi_test.rb +1 -1
  89. data/test/unit/integrations/action_view_helper_test.rb +1 -1
  90. data/test/unit/integrations/bogus_module_test.rb +1 -1
  91. data/test/unit/integrations/chronopay_module_test.rb +1 -1
  92. data/test/unit/integrations/gestpay_module_test.rb +1 -1
  93. data/test/unit/integrations/helpers/bogus_helper_test.rb +1 -1
  94. data/test/unit/integrations/helpers/chronopay_helper_test.rb +1 -1
  95. data/test/unit/integrations/helpers/gestpay_helper_test.rb +1 -1
  96. data/test/unit/integrations/helpers/hi_trust_helper_test.rb +1 -1
  97. data/test/unit/integrations/helpers/nochex_helper_test.rb +1 -1
  98. data/test/unit/integrations/helpers/paypal_helper_test.rb +2 -2
  99. data/test/unit/integrations/helpers/quickpay_helper_test.rb +1 -1
  100. data/test/unit/integrations/helpers/two_checkout_helper_test.rb +4 -4
  101. data/test/unit/integrations/hi_trust_module_test.rb +1 -1
  102. data/test/unit/integrations/nochex_module_test.rb +1 -1
  103. data/test/unit/integrations/notifications/chronopay_notification_test.rb +1 -1
  104. data/test/unit/integrations/notifications/gestpay_notification_test.rb +1 -1
  105. data/test/unit/integrations/notifications/hi_trust_notification_test.rb +4 -4
  106. data/test/unit/integrations/notifications/nochex_notification_test.rb +1 -1
  107. data/test/unit/integrations/notifications/notification_test.rb +4 -4
  108. data/test/unit/integrations/notifications/paypal_notification_test.rb +1 -1
  109. data/test/unit/integrations/notifications/quickpay_notification_test.rb +1 -1
  110. data/test/unit/integrations/notifications/two_checkout_notification_test.rb +1 -1
  111. data/test/unit/integrations/paypal_module_test.rb +4 -4
  112. data/test/unit/integrations/quickpay_module_test.rb +1 -1
  113. data/test/unit/integrations/returns/chronopay_return_test.rb +1 -1
  114. data/test/unit/integrations/returns/gestpay_return_test.rb +1 -1
  115. data/test/unit/integrations/returns/hi_trust_return_test.rb +1 -1
  116. data/test/unit/integrations/returns/nochex_return_test.rb +1 -1
  117. data/test/unit/integrations/returns/paypal_return_test.rb +1 -1
  118. data/test/unit/integrations/returns/return_test.rb +1 -1
  119. data/test/unit/integrations/returns/two_checkout_return_test.rb +1 -1
  120. data/test/unit/integrations/two_checkout_module_test.rb +1 -1
  121. data/test/unit/posts_data_test.rb +5 -5
  122. data/test/unit/utils_test.rb +1 -1
  123. data/test/unit/validateable_test.rb +2 -2
  124. metadata +63 -174
  125. data/lib/active_merchant/billing/gateways/beanstream.rb +0 -102
  126. data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +0 -233
  127. data/lib/active_merchant/billing/gateways/beanstream_interac.rb +0 -54
  128. data/lib/active_merchant/billing/gateways/braintree.rb +0 -17
  129. data/lib/active_merchant/billing/gateways/card_stream.rb +0 -230
  130. data/lib/active_merchant/billing/gateways/data_cash.rb +0 -595
  131. data/lib/active_merchant/billing/gateways/efsnet.rb +0 -229
  132. data/lib/active_merchant/billing/gateways/elavon.rb +0 -106
  133. data/lib/active_merchant/billing/gateways/eway.rb +0 -277
  134. data/lib/active_merchant/billing/gateways/exact.rb +0 -222
  135. data/lib/active_merchant/billing/gateways/first_pay.rb +0 -172
  136. data/lib/active_merchant/billing/gateways/instapay.rb +0 -164
  137. data/lib/active_merchant/billing/gateways/jetpay.rb +0 -270
  138. data/lib/active_merchant/billing/gateways/linkpoint.rb +0 -449
  139. data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +0 -154
  140. data/lib/active_merchant/billing/gateways/merchant_ware.rb +0 -283
  141. data/lib/active_merchant/billing/gateways/modern_payments.rb +0 -36
  142. data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +0 -214
  143. data/lib/active_merchant/billing/gateways/moneris.rb +0 -205
  144. data/lib/active_merchant/billing/gateways/net_registry.rb +0 -189
  145. data/lib/active_merchant/billing/gateways/netbilling.rb +0 -168
  146. data/lib/active_merchant/billing/gateways/ogone.rb +0 -279
  147. data/lib/active_merchant/billing/gateways/pay_junction.rb +0 -392
  148. data/lib/active_merchant/billing/gateways/pay_secure.rb +0 -120
  149. data/lib/active_merchant/billing/gateways/payflow.rb +0 -236
  150. data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +0 -207
  151. data/lib/active_merchant/billing/gateways/payflow/payflow_express_response.rb +0 -39
  152. data/lib/active_merchant/billing/gateways/payflow/payflow_response.rb +0 -13
  153. data/lib/active_merchant/billing/gateways/payflow_express.rb +0 -138
  154. data/lib/active_merchant/billing/gateways/payflow_express_uk.rb +0 -15
  155. data/lib/active_merchant/billing/gateways/payflow_uk.rb +0 -21
  156. data/lib/active_merchant/billing/gateways/payment_express.rb +0 -230
  157. data/lib/active_merchant/billing/gateways/paypal.rb +0 -121
  158. data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +0 -326
  159. data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +0 -38
  160. data/lib/active_merchant/billing/gateways/paypal_ca.rb +0 -13
  161. data/lib/active_merchant/billing/gateways/paypal_express.rb +0 -130
  162. data/lib/active_merchant/billing/gateways/paypal_express_common.rb +0 -20
  163. data/lib/active_merchant/billing/gateways/plugnpay.rb +0 -292
  164. data/lib/active_merchant/billing/gateways/psigate.rb +0 -214
  165. data/lib/active_merchant/billing/gateways/psl_card.rb +0 -306
  166. data/lib/active_merchant/billing/gateways/quickpay.rb +0 -213
  167. data/lib/active_merchant/billing/gateways/realex.rb +0 -200
  168. data/lib/active_merchant/billing/gateways/sage.rb +0 -146
  169. data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +0 -88
  170. data/lib/active_merchant/billing/gateways/sage/sage_core.rb +0 -116
  171. data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +0 -97
  172. data/lib/active_merchant/billing/gateways/sage_pay.rb +0 -308
  173. data/lib/active_merchant/billing/gateways/sallie_mae.rb +0 -144
  174. data/lib/active_merchant/billing/gateways/secure_pay.rb +0 -31
  175. data/lib/active_merchant/billing/gateways/secure_pay_au.rb +0 -157
  176. data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +0 -113
  177. data/lib/active_merchant/billing/gateways/skip_jack.rb +0 -452
  178. data/lib/active_merchant/billing/gateways/smart_ps.rb +0 -254
  179. data/lib/active_merchant/billing/gateways/trans_first.rb +0 -127
  180. data/lib/active_merchant/billing/gateways/transax.rb +0 -26
  181. data/lib/active_merchant/billing/gateways/trust_commerce.rb +0 -418
  182. data/lib/active_merchant/billing/gateways/usa_epay.rb +0 -194
  183. data/lib/active_merchant/billing/gateways/verifi.rb +0 -228
  184. data/lib/active_merchant/billing/gateways/viaklix.rb +0 -189
  185. data/lib/active_merchant/billing/gateways/wirecard.rb +0 -318
  186. data/lib/active_merchant/billing/integrations.rb +0 -22
  187. data/lib/active_merchant/lib/error.rb +0 -4
  188. data/test/remote/gateways/remote_beanstream_interac_test.rb +0 -53
  189. data/test/remote/gateways/remote_beanstream_test.rb +0 -150
  190. data/test/remote/gateways/remote_braintree_test.rb +0 -154
  191. data/test/remote/gateways/remote_card_stream_test.rb +0 -148
  192. data/test/remote/gateways/remote_data_cash_test.rb +0 -357
  193. data/test/remote/gateways/remote_efsnet_test.rb +0 -81
  194. data/test/remote/gateways/remote_elavon_test.rb +0 -66
  195. data/test/remote/gateways/remote_eway_test.rb +0 -74
  196. data/test/remote/gateways/remote_exact_test.rb +0 -60
  197. data/test/remote/gateways/remote_first_pay_test.rb +0 -87
  198. data/test/remote/gateways/remote_instapay_test.rb +0 -61
  199. data/test/remote/gateways/remote_jetpay_test.rb +0 -103
  200. data/test/remote/gateways/remote_linkpoint_test.rb +0 -121
  201. data/test/remote/gateways/remote_merchant_e_solutions_test.rb +0 -173
  202. data/test/remote/gateways/remote_merchant_ware_test.rb +0 -113
  203. data/test/remote/gateways/remote_modern_payments_cim_test.rb +0 -58
  204. data/test/remote/gateways/remote_modern_payments_test.rb +0 -43
  205. data/test/remote/gateways/remote_moneris_test.rb +0 -82
  206. data/test/remote/gateways/remote_net_registry_test.rb +0 -85
  207. data/test/remote/gateways/remote_netbilling_test.rb +0 -70
  208. data/test/remote/gateways/remote_ogone_test.rb +0 -115
  209. data/test/remote/gateways/remote_pay_junction_test.rb +0 -143
  210. data/test/remote/gateways/remote_pay_secure_test.rb +0 -39
  211. data/test/remote/gateways/remote_payflow_express_test.rb +0 -50
  212. data/test/remote/gateways/remote_payflow_test.rb +0 -237
  213. data/test/remote/gateways/remote_payflow_uk_test.rb +0 -173
  214. data/test/remote/gateways/remote_payment_express_test.rb +0 -136
  215. data/test/remote/gateways/remote_paypal_express_test.rb +0 -49
  216. data/test/remote/gateways/remote_paypal_test.rb +0 -191
  217. data/test/remote/gateways/remote_plugnpay_test.rb +0 -72
  218. data/test/remote/gateways/remote_psigate_test.rb +0 -50
  219. data/test/remote/gateways/remote_psl_card_test.rb +0 -125
  220. data/test/remote/gateways/remote_quickpay_test.rb +0 -190
  221. data/test/remote/gateways/remote_realex_test.rb +0 -224
  222. data/test/remote/gateways/remote_sage_bankcard_test.rb +0 -109
  223. data/test/remote/gateways/remote_sage_pay_test.rb +0 -219
  224. data/test/remote/gateways/remote_sage_test.rb +0 -87
  225. data/test/remote/gateways/remote_sage_virtual_check_test.rb +0 -62
  226. data/test/remote/gateways/remote_sallie_mae_test.rb +0 -51
  227. data/test/remote/gateways/remote_secure_pay_au_test.rb +0 -40
  228. data/test/remote/gateways/remote_secure_pay_tech_test.rb +0 -37
  229. data/test/remote/gateways/remote_secure_pay_test.rb +0 -28
  230. data/test/remote/gateways/remote_skipjack_test.rb +0 -105
  231. data/test/remote/gateways/remote_trans_first_test.rb +0 -34
  232. data/test/remote/gateways/remote_transax_test.rb +0 -112
  233. data/test/remote/gateways/remote_trust_commerce_test.rb +0 -152
  234. data/test/remote/gateways/remote_usa_epay_test.rb +0 -46
  235. data/test/remote/gateways/remote_verifi_test.rb +0 -107
  236. data/test/remote/gateways/remote_viaklix_test.rb +0 -43
  237. data/test/remote/gateways/remote_wirecard_test.rb +0 -111
@@ -1,222 +0,0 @@
1
- module ActiveMerchant #:nodoc:
2
- module Billing #:nodoc:
3
- class ExactGateway < Gateway
4
- URL = 'https://secure2.e-xact.com/vplug-in/transaction/rpc-enc/service.asmx'
5
-
6
- API_VERSION = "8.5"
7
-
8
- TEST_LOGINS = [ {:login => "A00049-01", :password => "test1"},
9
- {:login => "A00427-01", :password => "testus"} ]
10
-
11
- TRANSACTIONS = { :sale => "00",
12
- :authorization => "01",
13
- :capture => "32",
14
- :credit => "34" }
15
-
16
-
17
- ENVELOPE_NAMESPACES = { 'xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema',
18
- 'xmlns:env' => 'http://schemas.xmlsoap.org/soap/envelope/',
19
- 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance'
20
- }
21
-
22
- SEND_AND_COMMIT_ATTRIBUTES = { 'xmlns:n1' => "http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/Request",
23
- 'env:encodingStyle' => 'http://schemas.xmlsoap.org/soap/encoding/'
24
- }
25
-
26
- SEND_AND_COMMIT_SOURCE_ATTRIBUTES = { 'xmlns:n2' => 'http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/encodedTypes',
27
- 'xsi:type' => 'n2:Transaction'
28
- }
29
-
30
- POST_HEADERS = { 'soapAction' => "http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/SendAndCommit",
31
- 'Content-Type' => 'text/xml'
32
- }
33
-
34
- SUCCESS = "true"
35
-
36
- SENSITIVE_FIELDS = [ :verification_str2, :expiry_date, :card_number ]
37
-
38
- self.supported_cardtypes = [:visa, :master, :american_express, :jcb, :discover]
39
- self.supported_countries = ['CA', 'US']
40
- self.homepage_url = 'http://www.e-xact.com'
41
- self.display_name = 'E-xact'
42
-
43
- def initialize(options = {})
44
- requires!(options, :login, :password)
45
- @options = options
46
-
47
- if TEST_LOGINS.include?( { :login => options[:login], :password => options[:password] } )
48
- @test_mode = true
49
- end
50
-
51
- super
52
- end
53
-
54
- def test?
55
- @test_mode || Base.gateway_mode == :test
56
- end
57
-
58
- def authorize(money, credit_card, options = {})
59
- commit(:authorization, build_sale_or_authorization_request(money, credit_card, options))
60
- end
61
-
62
- def purchase(money, credit_card, options = {})
63
- commit(:sale, build_sale_or_authorization_request(money, credit_card, options))
64
- end
65
-
66
- def capture(money, authorization, options = {})
67
- commit(:capture, build_capture_or_credit_request(money, authorization, options))
68
- end
69
-
70
- def credit(money, authorization, options = {})
71
- commit(:credit, build_capture_or_credit_request(money, authorization, options))
72
- end
73
-
74
- private
75
- def build_request(action, body)
76
- xml = Builder::XmlMarkup.new
77
-
78
- xml.instruct!
79
- xml.tag! 'env:Envelope', ENVELOPE_NAMESPACES do
80
- xml.tag! 'env:Body' do
81
- xml.tag! 'n1:SendAndCommit', SEND_AND_COMMIT_ATTRIBUTES do
82
- xml.tag! 'SendAndCommitSource', SEND_AND_COMMIT_SOURCE_ATTRIBUTES do
83
- add_credentials(xml)
84
- add_transaction_type(xml, action)
85
- xml << body
86
- end
87
- end
88
- end
89
- end
90
- xml.target!
91
- end
92
-
93
- def build_sale_or_authorization_request(money, credit_card, options)
94
- xml = Builder::XmlMarkup.new
95
-
96
- add_amount(xml, money)
97
- add_credit_card(xml, credit_card)
98
- add_customer_data(xml, options)
99
- add_invoice(xml, options)
100
-
101
- xml.target!
102
- end
103
-
104
- def build_capture_or_credit_request(money, identification, options)
105
- xml = Builder::XmlMarkup.new
106
-
107
- add_identification(xml, identification)
108
- add_amount(xml, money)
109
- add_customer_data(xml, options)
110
-
111
- xml.target!
112
- end
113
-
114
- def add_credentials(xml)
115
- xml.tag! 'ExactID', @options[:login]
116
- xml.tag! 'Password', @options[:password]
117
- end
118
-
119
- def add_transaction_type(xml, action)
120
- xml.tag! 'Transaction_Type', TRANSACTIONS[action]
121
- end
122
-
123
- def add_identification(xml, identification)
124
- authorization_num, transaction_tag = identification.split(';')
125
-
126
- xml.tag! 'Authorization_Num', authorization_num
127
- xml.tag! 'Transaction_Tag', transaction_tag
128
- end
129
-
130
- def add_amount(xml, money)
131
- xml.tag! 'DollarAmount', amount(money)
132
- end
133
-
134
- def add_credit_card(xml, credit_card)
135
- xml.tag! 'Card_Number', credit_card.number
136
- xml.tag! 'Expiry_Date', expdate(credit_card)
137
- xml.tag! 'CardHoldersName', credit_card.name
138
-
139
- if credit_card.verification_value?
140
- xml.tag! 'CVD_Presence_Ind', '1'
141
- xml.tag! 'VerificationStr2', credit_card.verification_value
142
- end
143
- end
144
-
145
- def add_customer_data(xml, options)
146
- xml.tag! 'Customer_Ref', options[:customer]
147
- xml.tag! 'Client_IP', options[:ip]
148
- xml.tag! 'Client_Email', options[:email]
149
- end
150
-
151
- def add_address(xml, options)
152
- if address = options[:billing_address] || options[:address]
153
- xml.tag! 'ZipCode', address[:zip]
154
- end
155
- end
156
-
157
- def add_invoice(xml, options)
158
- xml.tag! 'Reference_No', options[:order_id]
159
- xml.tag! 'Reference_3', options[:description]
160
- end
161
-
162
- def expdate(credit_card)
163
- "#{format(credit_card.month, :two_digits)}#{format(credit_card.year, :two_digits)}"
164
- end
165
-
166
- def commit(action, request)
167
- response = parse(ssl_post(URL, build_request(action, request), POST_HEADERS))
168
-
169
- Response.new(successful?(response), message_from(response), response,
170
- :test => test?,
171
- :authorization => authorization_from(response),
172
- :avs_result => { :code => response[:avs] },
173
- :cvv_result => response[:cvv2]
174
- )
175
- end
176
-
177
- def successful?(response)
178
- response[:transaction_approved] == SUCCESS
179
- end
180
-
181
- def authorization_from(response)
182
- if response[:authorization_num] && response[:transaction_tag]
183
- "#{response[:authorization_num]};#{response[:transaction_tag]}"
184
- else
185
- ''
186
- end
187
- end
188
-
189
- def message_from(response)
190
- if response[:faultcode] && response[:faultstring]
191
- response[:faultstring]
192
- elsif response[:error_number] != '0'
193
- response[:error_description]
194
- else
195
- result = response[:exact_message] || ''
196
- result << " - #{response[:bank_message]}" unless response[:bank_message].blank?
197
- result
198
- end
199
- end
200
-
201
- def parse(xml)
202
- response = {}
203
- xml = REXML::Document.new(xml)
204
-
205
- if root = REXML::XPath.first(xml, "//types:TransactionResult")
206
- parse_elements(response, root)
207
- elsif root = REXML::XPath.first(xml, "//soap:Fault")
208
- parse_elements(response, root)
209
- end
210
-
211
- response.delete_if{ |k,v| SENSITIVE_FIELDS.include?(k) }
212
- end
213
-
214
- def parse_elements(response, root)
215
- root.elements.to_a.each do |node|
216
- response[node.name.gsub(/EXact/, 'Exact').underscore.to_sym] = (node.text || '').strip
217
- end
218
- end
219
- end
220
- end
221
- end
222
-
@@ -1,172 +0,0 @@
1
- module ActiveMerchant #:nodoc:
2
- module Billing #:nodoc:
3
- class FirstPayGateway < Gateway
4
- class FirstPayPostData < PostData
5
- # Fields that will be sent even if they are blank
6
- self.required_fields = [ :action, :amount, :trackid ]
7
- end
8
-
9
- # both URLs are IP restricted
10
- TEST_URL = 'https://apgcert.first-pay.com/AcqENGIN/SecureCapture'
11
- LIVE_URL = 'https://acqengin.first-pay.com/AcqENGIN/SecureCapture'
12
-
13
- # The countries the gateway supports merchants from as 2 digit ISO country codes
14
- self.supported_countries = ['US']
15
-
16
- # The card types supported by the payment gateway
17
- self.supported_cardtypes = [:visa, :master]
18
-
19
- # The homepage URL of the gateway
20
- self.homepage_url = 'http://www.first-pay.com'
21
-
22
- # The name of the gateway
23
- self.display_name = 'First Pay'
24
-
25
- # all transactions are in cents
26
- self.money_format = :cents
27
-
28
- ACTIONS = {
29
- 'sale' => 1,
30
- 'credit' => 2,
31
- 'void' => 3
32
- }
33
-
34
- def initialize(options = {})
35
- requires!(options, :login, :password)
36
- @options = options
37
- super
38
- end
39
-
40
- def purchase(money, creditcard, options = {})
41
- post = FirstPayPostData.new
42
- add_invoice(post, options)
43
- add_creditcard(post, creditcard)
44
- add_address(post, options)
45
- add_customer_data(post, options)
46
-
47
- commit('sale', money, post)
48
- end
49
-
50
- def credit(money, reference, options = {})
51
- raise ArgumentError, "Both TransactionID and CreditCard are required" unless reference.is_a?(String) && options[:credit_card]
52
-
53
- post = FirstPayPostData.new
54
- add_invoice(post, options)
55
- add_creditcard(post, options[:credit_card])
56
- add_address(post, options)
57
- add_customer_data(post, options)
58
- add_credit_data(post, reference)
59
-
60
- commit('credit', money, post)
61
- end
62
-
63
- def void(money, creditcard, options = {})
64
- post = FirstPayPostData.new
65
- add_creditcard(post, creditcard)
66
- add_void_data(post, options)
67
- add_invoice(post, options)
68
- add_customer_data(post, options)
69
-
70
- commit('void', money, post)
71
- end
72
-
73
-
74
- private
75
-
76
- def add_customer_data(post, options)
77
- post[:cardip] = options[:ip]
78
- post[:email] = options[:email]
79
- end
80
-
81
- def add_address(post, options)
82
- if billing_address = options[:billing_address] || options[:address]
83
- post[:addr] = billing_address[:address1].to_s + ' ' + billing_address[:address2].to_s
84
- post[:city] = billing_address[:city]
85
- post[:state] = billing_address[:state]
86
- post[:zip] = billing_address[:zip]
87
- post[:country] = billing_address[:country]
88
- end
89
- end
90
-
91
- def add_invoice(post, options)
92
- post[:trackid] = rand(Time.now)
93
- end
94
-
95
- def add_creditcard(post, creditcard)
96
- post[:member] = creditcard.first_name.to_s + " " + creditcard.last_name.to_s
97
- post[:card] = creditcard.number
98
- post[:exp] = expdate(creditcard)
99
- end
100
-
101
- def expdate(credit_card)
102
- year = sprintf("%.4i", credit_card.year)
103
- month = sprintf("%.2i", credit_card.month)
104
-
105
- "#{month}#{year[-2..-1]}"
106
- end
107
-
108
- def add_credit_data(post, transaction_id)
109
- post[:transid] = transaction_id
110
- end
111
-
112
- def add_void_data(post, options)
113
- post[:transid] = options[:transactionid]
114
- end
115
-
116
- def commit(action, money, post)
117
- response = parse( ssl_post(test? ? TEST_URL : LIVE_URL, post_data(action, post, money)) )
118
-
119
- Response.new(response[:response] == 'CAPTURED', response[:message], response,
120
- :test => test?,
121
- :authorization => response[:authorization],
122
- :avs_result => { :code => response[:avsresponse] },
123
- :cvv_result => response[:cvvresponse])
124
- end
125
-
126
- def parse(body)
127
- response = {}
128
-
129
- # check for an error first
130
- if body.include?('!ERROR!')
131
- response[:response] = 'ERROR'
132
- response[:message] = error_message_from(body)
133
- else
134
- # a capture / not captured response will be : delimited
135
- split = body.split(':')
136
- response[:response] = split[0]
137
-
138
- # FirstPay docs are worthless. turns out the transactionid is required for credits
139
- # so we need to store that in authorization, not the actual auth.
140
- if response[:response] == 'CAPTURED'
141
- response[:message] = 'CAPTURED'
142
- response[:authorization] = split[9] # actually the transactionid
143
- response[:auth] = split[1]
144
- response[:avsresponse] = split[3]
145
- response[:cvvresponse] = split[17]
146
- else
147
- # NOT CAPTURED response
148
- response[:message] = split[1]
149
- response[:transactionid] = split[9]
150
- end
151
- end
152
-
153
- return response
154
- end
155
-
156
- def error_message_from(response)
157
- # error messages use this format - '!ERROR! 704-MISSING BASIC DATA TYPE:card, exp, zip, addr, member, amount\n'
158
- response.split("! ")[1].chomp
159
- end
160
-
161
- def post_data(action, post, money)
162
- post[:vid] = @options[:login]
163
- post[:password] = @options[:password]
164
- post[:action] = ACTIONS[action]
165
- post[:amount] = amount(money)
166
-
167
- return post.to_post_data
168
- end
169
- end
170
- end
171
- end
172
-
@@ -1,164 +0,0 @@
1
- module ActiveMerchant #:nodoc:
2
- module Billing #:nodoc:
3
- class InstapayGateway < Gateway
4
- GATEWAY_URL = 'https://trans.instapaygateway.com/cgi-bin/process.cgi'
5
-
6
- # The countries the gateway supports merchants from as 2 digit ISO country codes
7
- self.supported_countries = ['US']
8
- self.money_format = :dollars
9
- self.default_currency = 'USD'
10
- # The card types supported by the payment gateway
11
- self.supported_cardtypes = [:visa, :master, :american_express, :discover]
12
-
13
- # The homepage URL of the gateway
14
- self.homepage_url = 'http://www.instapayllc.com'
15
-
16
- # The name of the gateway
17
- self.display_name = 'InstaPay'
18
-
19
- SUCCESS = "Accepted"
20
- SUCCESS_MESSAGE = "The transaction has been approved"
21
-
22
- def initialize(options = {})
23
- requires!(options, :login)
24
- @options = options
25
- super
26
- end
27
-
28
- def authorize(money, creditcard, options = {})
29
- post = {}
30
- post[:authonly] = 1
31
- add_amount(post, money)
32
- add_invoice(post, options)
33
- add_creditcard(post, creditcard)
34
- add_address(post, options)
35
- add_customer_data(post, options)
36
-
37
- commit('ns_quicksale_cc', post)
38
- end
39
-
40
- def purchase(money, creditcard, options = {})
41
- post = {}
42
- add_amount(post, money)
43
- add_invoice(post, options)
44
- add_creditcard(post, creditcard)
45
- add_address(post, options)
46
- add_customer_data(post, options)
47
-
48
- commit('ns_quicksale_cc', post)
49
- end
50
-
51
- def capture(money, authorization, options = {})
52
- post = {}
53
- add_amount(post, money)
54
- add_reference(post, authorization)
55
- commit('ns_quicksale_cc', post)
56
- end
57
-
58
- private
59
-
60
- def add_amount(post, money)
61
- post[:amount] = amount(money)
62
- end
63
-
64
- def add_reference(post, reference)
65
- post[:postonly] = reference
66
- end
67
-
68
- def add_customer_data(post, options)
69
- post[:ci_email] = options[:email]
70
- post["ci_IP Address"] = options[:ip]
71
- end
72
-
73
- def add_address(post, options)
74
- if address = options[:billing_address] || options[:address]
75
- post[:ci_billaddr1] = address[:address1]
76
- post[:ci_billaddr2] = address[:address2]
77
- post[:ci_billcity] = address[:city]
78
- post[:ci_billstate] = address[:state]
79
- post[:ci_billzip] = address[:zip]
80
- post[:ci_billcountry] = address[:country]
81
- post[:ci_phone] = address[:phone]
82
- end
83
-
84
- if address = options[:shipping_address]
85
- post[:ci_shipaddr1] = address[:address1]
86
- post[:ci_shipaddr2] = address[:address2]
87
- post[:ci_shipcity] = address[:city]
88
- post[:ci_shipstate] = address[:state]
89
- post[:ci_shipzip] = address[:zip]
90
- post[:ci_shipcountry] = address[:country]
91
- end
92
- end
93
-
94
- def add_invoice(post, options)
95
- post[:merchantordernumber] = options[:order_id]
96
- post[:ci_memo] = options[:description]
97
- post[:pocustomerrefid] = options[:invoice]
98
- end
99
-
100
- def add_creditcard(post, creditcard)
101
- post[:ccnum] = creditcard.number
102
- post[:expmon] = format(creditcard.month, :two_digits)
103
- post[:cvv2] = creditcard.verification_value if creditcard.verification_value?
104
- post[:expyear] = creditcard.year
105
- post[:ccname] = creditcard.name
106
- end
107
-
108
- def parse(body)
109
- results = {}
110
- fields = body.split("\r\n")
111
-
112
- response = fields[1].split('=')
113
- response_data = response[1].split(':')
114
-
115
- if response[0] == SUCCESS
116
- results[:success] = true
117
- results[:message] = SUCCESS_MESSAGE
118
- results[:transaction_type] = response_data[0]
119
- results[:authorization_code] = response_data[1]
120
- results[:reference_number] = response_data[2]
121
- results[:batch_number] = response_data[3]
122
- results[:transaction_id] = response_data[4]
123
- results[:avs_result] = response_data[5]
124
- results[:authorize_net] = response_data[6]
125
- results[:cvv_result] = response_data[7]
126
- else
127
- results[:success] = false
128
- results[:result] = response_data[0]
129
- results[:response_code] = response_data[1]
130
- results[:message] = response_data[2]
131
- end
132
-
133
- fields[1..-1].each do |pair|
134
- key, value = pair.split('=')
135
- results[key] = value
136
- end
137
- results
138
- end
139
-
140
- def commit(action, parameters)
141
- data = ssl_post GATEWAY_URL , post_data(action, parameters)
142
- response = parse(data)
143
-
144
- Response.new(response[:success] , response[:message], response,
145
- :authorization => response[:transaction_id],
146
- :avs_result => { :code => response[:avs_result] },
147
- :cvv_result => response[:cvv_result]
148
- )
149
- end
150
-
151
- def post_data(action, parameters = {})
152
- post = {}
153
- post[:acctid] = @options[:login]
154
- if(@options[:password])
155
- post[:merchantpin] = @options[:password]
156
- end
157
- post[:action] = action
158
- request = post.merge(parameters).collect { |key, value| "#{key}=#{CGI.escape(value.to_s)}" }.join("&")
159
- request
160
- end
161
- end
162
- end
163
- end
164
-