fishman-activemerchant 1.18.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 (188) hide show
  1. data/CHANGELOG +733 -0
  2. data/CONTRIBUTORS +257 -0
  3. data/MIT-LICENSE +20 -0
  4. data/gem-public_cert.pem +20 -0
  5. data/lib/active_merchant.rb +47 -0
  6. data/lib/active_merchant/billing.rb +9 -0
  7. data/lib/active_merchant/billing/avs_result.rb +98 -0
  8. data/lib/active_merchant/billing/base.rb +57 -0
  9. data/lib/active_merchant/billing/check.rb +68 -0
  10. data/lib/active_merchant/billing/credit_card.rb +260 -0
  11. data/lib/active_merchant/billing/credit_card_formatting.rb +21 -0
  12. data/lib/active_merchant/billing/credit_card_methods.rb +125 -0
  13. data/lib/active_merchant/billing/cvv_result.rb +38 -0
  14. data/lib/active_merchant/billing/expiry_date.rb +34 -0
  15. data/lib/active_merchant/billing/gateway.rb +170 -0
  16. data/lib/active_merchant/billing/gateways.rb +18 -0
  17. data/lib/active_merchant/billing/gateways/authorize_net.rb +693 -0
  18. data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +858 -0
  19. data/lib/active_merchant/billing/gateways/barclays_epdq.rb +308 -0
  20. data/lib/active_merchant/billing/gateways/beanstream.rb +139 -0
  21. data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +282 -0
  22. data/lib/active_merchant/billing/gateways/beanstream_interac.rb +54 -0
  23. data/lib/active_merchant/billing/gateways/blue_pay.rb +11 -0
  24. data/lib/active_merchant/billing/gateways/bogus.rb +142 -0
  25. data/lib/active_merchant/billing/gateways/braintree.rb +17 -0
  26. data/lib/active_merchant/billing/gateways/braintree/braintree_common.rb +9 -0
  27. data/lib/active_merchant/billing/gateways/braintree_blue.rb +303 -0
  28. data/lib/active_merchant/billing/gateways/braintree_orange.rb +17 -0
  29. data/lib/active_merchant/billing/gateways/card_save.rb +23 -0
  30. data/lib/active_merchant/billing/gateways/card_stream.rb +230 -0
  31. data/lib/active_merchant/billing/gateways/cyber_source.rb +430 -0
  32. data/lib/active_merchant/billing/gateways/data_cash.rb +597 -0
  33. data/lib/active_merchant/billing/gateways/efsnet.rb +235 -0
  34. data/lib/active_merchant/billing/gateways/elavon.rb +134 -0
  35. data/lib/active_merchant/billing/gateways/epay.rb +274 -0
  36. data/lib/active_merchant/billing/gateways/eway.rb +277 -0
  37. data/lib/active_merchant/billing/gateways/eway_managed.rb +264 -0
  38. data/lib/active_merchant/billing/gateways/exact.rb +222 -0
  39. data/lib/active_merchant/billing/gateways/federated_canada.rb +168 -0
  40. data/lib/active_merchant/billing/gateways/first_pay.rb +177 -0
  41. data/lib/active_merchant/billing/gateways/garanti.rb +262 -0
  42. data/lib/active_merchant/billing/gateways/ideal/ideal_base.rb +250 -0
  43. data/lib/active_merchant/billing/gateways/ideal/ideal_rabobank.pem +13 -0
  44. data/lib/active_merchant/billing/gateways/ideal/ideal_response.rb +29 -0
  45. data/lib/active_merchant/billing/gateways/ideal_rabobank.rb +55 -0
  46. data/lib/active_merchant/billing/gateways/inspire.rb +221 -0
  47. data/lib/active_merchant/billing/gateways/instapay.rb +164 -0
  48. data/lib/active_merchant/billing/gateways/iridium.rb +258 -0
  49. data/lib/active_merchant/billing/gateways/jetpay.rb +276 -0
  50. data/lib/active_merchant/billing/gateways/linkpoint.rb +454 -0
  51. data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +156 -0
  52. data/lib/active_merchant/billing/gateways/merchant_ware.rb +289 -0
  53. data/lib/active_merchant/billing/gateways/modern_payments.rb +36 -0
  54. data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +220 -0
  55. data/lib/active_merchant/billing/gateways/moneris.rb +209 -0
  56. data/lib/active_merchant/billing/gateways/net_registry.rb +189 -0
  57. data/lib/active_merchant/billing/gateways/netaxept.rb +239 -0
  58. data/lib/active_merchant/billing/gateways/netbilling.rb +168 -0
  59. data/lib/active_merchant/billing/gateways/nmi.rb +13 -0
  60. data/lib/active_merchant/billing/gateways/ogone.rb +292 -0
  61. data/lib/active_merchant/billing/gateways/optimal_payment.rb +274 -0
  62. data/lib/active_merchant/billing/gateways/orbital.rb +321 -0
  63. data/lib/active_merchant/billing/gateways/orbital/orbital_soft_descriptors.rb +46 -0
  64. data/lib/active_merchant/billing/gateways/pay_junction.rb +392 -0
  65. data/lib/active_merchant/billing/gateways/pay_secure.rb +120 -0
  66. data/lib/active_merchant/billing/gateways/paybox_direct.rb +207 -0
  67. data/lib/active_merchant/billing/gateways/payflow.rb +253 -0
  68. data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +207 -0
  69. data/lib/active_merchant/billing/gateways/payflow/payflow_express_response.rb +39 -0
  70. data/lib/active_merchant/billing/gateways/payflow/payflow_response.rb +13 -0
  71. data/lib/active_merchant/billing/gateways/payflow_express.rb +222 -0
  72. data/lib/active_merchant/billing/gateways/payflow_express_uk.rb +15 -0
  73. data/lib/active_merchant/billing/gateways/payflow_uk.rb +21 -0
  74. data/lib/active_merchant/billing/gateways/payment_express.rb +235 -0
  75. data/lib/active_merchant/billing/gateways/paypal.rb +121 -0
  76. data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +354 -0
  77. data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +49 -0
  78. data/lib/active_merchant/billing/gateways/paypal_ca.rb +13 -0
  79. data/lib/active_merchant/billing/gateways/paypal_express.rb +184 -0
  80. data/lib/active_merchant/billing/gateways/paypal_express_common.rb +25 -0
  81. data/lib/active_merchant/billing/gateways/paypal_express_de.rb +14 -0
  82. data/lib/active_merchant/billing/gateways/paystation.rb +201 -0
  83. data/lib/active_merchant/billing/gateways/plugnpay.rb +298 -0
  84. data/lib/active_merchant/billing/gateways/psigate.rb +219 -0
  85. data/lib/active_merchant/billing/gateways/psl_card.rb +304 -0
  86. data/lib/active_merchant/billing/gateways/qbms.rb +297 -0
  87. data/lib/active_merchant/billing/gateways/quantum.rb +282 -0
  88. data/lib/active_merchant/billing/gateways/quickpay.rb +297 -0
  89. data/lib/active_merchant/billing/gateways/realex.rb +311 -0
  90. data/lib/active_merchant/billing/gateways/sage.rb +146 -0
  91. data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +88 -0
  92. data/lib/active_merchant/billing/gateways/sage/sage_core.rb +116 -0
  93. data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +97 -0
  94. data/lib/active_merchant/billing/gateways/sage_pay.rb +320 -0
  95. data/lib/active_merchant/billing/gateways/sallie_mae.rb +144 -0
  96. data/lib/active_merchant/billing/gateways/secure_net.rb +330 -0
  97. data/lib/active_merchant/billing/gateways/secure_pay.rb +31 -0
  98. data/lib/active_merchant/billing/gateways/secure_pay_au.rb +193 -0
  99. data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +113 -0
  100. data/lib/active_merchant/billing/gateways/skip_jack.rb +453 -0
  101. data/lib/active_merchant/billing/gateways/smart_ps.rb +271 -0
  102. data/lib/active_merchant/billing/gateways/stripe.rb +212 -0
  103. data/lib/active_merchant/billing/gateways/trans_first.rb +127 -0
  104. data/lib/active_merchant/billing/gateways/transax.rb +25 -0
  105. data/lib/active_merchant/billing/gateways/trust_commerce.rb +423 -0
  106. data/lib/active_merchant/billing/gateways/usa_epay.rb +194 -0
  107. data/lib/active_merchant/billing/gateways/verifi.rb +233 -0
  108. data/lib/active_merchant/billing/gateways/viaklix.rb +189 -0
  109. data/lib/active_merchant/billing/gateways/wirecard.rb +318 -0
  110. data/lib/active_merchant/billing/gateways/worldpay.rb +280 -0
  111. data/lib/active_merchant/billing/integrations.rb +17 -0
  112. data/lib/active_merchant/billing/integrations/action_view_helper.rb +68 -0
  113. data/lib/active_merchant/billing/integrations/bogus.rb +23 -0
  114. data/lib/active_merchant/billing/integrations/bogus/helper.rb +17 -0
  115. data/lib/active_merchant/billing/integrations/bogus/notification.rb +11 -0
  116. data/lib/active_merchant/billing/integrations/bogus/return.rb +10 -0
  117. data/lib/active_merchant/billing/integrations/chronopay.rb +23 -0
  118. data/lib/active_merchant/billing/integrations/chronopay/helper.rb +120 -0
  119. data/lib/active_merchant/billing/integrations/chronopay/notification.rb +158 -0
  120. data/lib/active_merchant/billing/integrations/chronopay/return.rb +10 -0
  121. data/lib/active_merchant/billing/integrations/direc_pay.rb +41 -0
  122. data/lib/active_merchant/billing/integrations/direc_pay/helper.rb +200 -0
  123. data/lib/active_merchant/billing/integrations/direc_pay/notification.rb +76 -0
  124. data/lib/active_merchant/billing/integrations/direc_pay/return.rb +32 -0
  125. data/lib/active_merchant/billing/integrations/direc_pay/status.rb +37 -0
  126. data/lib/active_merchant/billing/integrations/directebanking.rb +47 -0
  127. data/lib/active_merchant/billing/integrations/directebanking/helper.rb +90 -0
  128. data/lib/active_merchant/billing/integrations/directebanking/notification.rb +120 -0
  129. data/lib/active_merchant/billing/integrations/directebanking/return.rb +11 -0
  130. data/lib/active_merchant/billing/integrations/dwolla.rb +30 -0
  131. data/lib/active_merchant/billing/integrations/dwolla/helper.rb +28 -0
  132. data/lib/active_merchant/billing/integrations/dwolla/notification.rb +50 -0
  133. data/lib/active_merchant/billing/integrations/dwolla/return.rb +38 -0
  134. data/lib/active_merchant/billing/integrations/e_payment_plans.rb +48 -0
  135. data/lib/active_merchant/billing/integrations/e_payment_plans/helper.rb +34 -0
  136. data/lib/active_merchant/billing/integrations/e_payment_plans/notification.rb +84 -0
  137. data/lib/active_merchant/billing/integrations/gestpay.rb +25 -0
  138. data/lib/active_merchant/billing/integrations/gestpay/common.rb +42 -0
  139. data/lib/active_merchant/billing/integrations/gestpay/helper.rb +70 -0
  140. data/lib/active_merchant/billing/integrations/gestpay/notification.rb +85 -0
  141. data/lib/active_merchant/billing/integrations/gestpay/return.rb +10 -0
  142. data/lib/active_merchant/billing/integrations/helper.rb +96 -0
  143. data/lib/active_merchant/billing/integrations/hi_trust.rb +27 -0
  144. data/lib/active_merchant/billing/integrations/hi_trust/helper.rb +58 -0
  145. data/lib/active_merchant/billing/integrations/hi_trust/notification.rb +59 -0
  146. data/lib/active_merchant/billing/integrations/hi_trust/return.rb +67 -0
  147. data/lib/active_merchant/billing/integrations/moneybookers.rb +26 -0
  148. data/lib/active_merchant/billing/integrations/moneybookers/helper.rb +59 -0
  149. data/lib/active_merchant/billing/integrations/moneybookers/notification.rb +129 -0
  150. data/lib/active_merchant/billing/integrations/nochex.rb +88 -0
  151. data/lib/active_merchant/billing/integrations/nochex/helper.rb +68 -0
  152. data/lib/active_merchant/billing/integrations/nochex/notification.rb +94 -0
  153. data/lib/active_merchant/billing/integrations/nochex/return.rb +10 -0
  154. data/lib/active_merchant/billing/integrations/notification.rb +62 -0
  155. data/lib/active_merchant/billing/integrations/payflow_link.rb +21 -0
  156. data/lib/active_merchant/billing/integrations/payflow_link/helper.rb +58 -0
  157. data/lib/active_merchant/billing/integrations/payflow_link/notification.rb +78 -0
  158. data/lib/active_merchant/billing/integrations/paypal.rb +39 -0
  159. data/lib/active_merchant/billing/integrations/paypal/helper.rb +119 -0
  160. data/lib/active_merchant/billing/integrations/paypal/notification.rb +154 -0
  161. data/lib/active_merchant/billing/integrations/paypal/return.rb +10 -0
  162. data/lib/active_merchant/billing/integrations/quickpay.rb +21 -0
  163. data/lib/active_merchant/billing/integrations/quickpay/helper.rb +72 -0
  164. data/lib/active_merchant/billing/integrations/quickpay/notification.rb +74 -0
  165. data/lib/active_merchant/billing/integrations/return.rb +42 -0
  166. data/lib/active_merchant/billing/integrations/sage_pay_form.rb +37 -0
  167. data/lib/active_merchant/billing/integrations/sage_pay_form/encryption.rb +33 -0
  168. data/lib/active_merchant/billing/integrations/sage_pay_form/helper.rb +111 -0
  169. data/lib/active_merchant/billing/integrations/sage_pay_form/notification.rb +210 -0
  170. data/lib/active_merchant/billing/integrations/sage_pay_form/return.rb +31 -0
  171. data/lib/active_merchant/billing/integrations/two_checkout.rb +23 -0
  172. data/lib/active_merchant/billing/integrations/two_checkout/helper.rb +59 -0
  173. data/lib/active_merchant/billing/integrations/two_checkout/notification.rb +114 -0
  174. data/lib/active_merchant/billing/integrations/two_checkout/return.rb +17 -0
  175. data/lib/active_merchant/billing/integrations/valitor.rb +33 -0
  176. data/lib/active_merchant/billing/integrations/valitor/helper.rb +86 -0
  177. data/lib/active_merchant/billing/integrations/valitor/notification.rb +13 -0
  178. data/lib/active_merchant/billing/integrations/valitor/response_fields.rb +97 -0
  179. data/lib/active_merchant/billing/integrations/valitor/return.rb +13 -0
  180. data/lib/active_merchant/billing/integrations/world_pay.rb +27 -0
  181. data/lib/active_merchant/billing/integrations/world_pay/helper.rb +100 -0
  182. data/lib/active_merchant/billing/integrations/world_pay/notification.rb +160 -0
  183. data/lib/active_merchant/billing/response.rb +32 -0
  184. data/lib/active_merchant/version.rb +3 -0
  185. data/lib/activemerchant.rb +1 -0
  186. data/lib/support/gateway_support.rb +58 -0
  187. data/lib/support/outbound_hosts.rb +25 -0
  188. metadata +335 -0
@@ -0,0 +1,90 @@
1
+ module ActiveMerchant #:nodoc:
2
+ module Billing #:nodoc:
3
+ module Integrations #:nodoc:
4
+ module Directebanking
5
+ class Helper < ActiveMerchant::Billing::Integrations::Helper
6
+
7
+ # All credentials are mandatory and need to be set
8
+ #
9
+ # credential1: User ID
10
+ # credential2: Project ID
11
+ # credential3: Project Password (Algorithm: SH1)
12
+ # credential4: Notification Password (Algorithm: SH1)
13
+ def initialize(order, account, options = {})
14
+ super
15
+ add_field('user_variable_0', order)
16
+ add_field('project_id', options[:credential2])
17
+ @project_password = options[:credential3]
18
+ end
19
+
20
+ SIGNATURE_FIELDS = [
21
+ :user_id,
22
+ :project_id,
23
+ :sender_holder,
24
+ :sender_account_number,
25
+ :sender_bank_code,
26
+ :sender_country_id,
27
+ :amount,
28
+ :currency_id,
29
+ :reason_1,
30
+ :reason_2,
31
+ :user_variable_0,
32
+ :user_variable_1,
33
+ :user_variable_2,
34
+ :user_variable_3,
35
+ :user_variable_4,
36
+ :user_variable_5
37
+ ]
38
+
39
+ SIGNATURE_IGNORE_AT_METHOD_CREATION_FIELDS = [
40
+ :user_id,
41
+ :amount,
42
+ :project_id,
43
+ :currency_id,
44
+ :user_variable_0,
45
+ :user_variable_1,
46
+ :user_variable_2,
47
+ :user_variable_3
48
+ ]
49
+
50
+ SIGNATURE_FIELDS.each do |key|
51
+ if !SIGNATURE_IGNORE_AT_METHOD_CREATION_FIELDS.include?(key)
52
+ mapping "#{key}".to_sym, "#{key.to_s}"
53
+ end
54
+ end
55
+
56
+ # Need to format the amount to have 2 decimal places
57
+ def amount=(money)
58
+ cents = money.respond_to?(:cents) ? money.cents : money
59
+ if money.is_a?(String) or cents.to_i <= 0
60
+ raise ArgumentError, 'money amount must be either a Money object or a positive integer in cents.'
61
+ end
62
+ add_field mappings[:amount], sprintf("%.2f", cents.to_f/100)
63
+ end
64
+
65
+ def generate_signature_string
66
+ # format of signature: user_id|project_id|sender_holder|sender_account_number|sender_bank_code| sender_country_id|amount|currency_id|reason_1|reason_2|user_variable_0|user_variable_1|user_variable_2|user_variable_3|user_variable_4|user_variable_5|project_password
67
+ SIGNATURE_FIELDS.map {|key| @fields[key.to_s]} * "|" + "|#{@project_password}"
68
+ end
69
+
70
+ def generate_signature
71
+ Digest::SHA1.hexdigest(generate_signature_string)
72
+ end
73
+
74
+ def form_fields
75
+ @fields.merge('hash' => generate_signature)
76
+ end
77
+
78
+ mapping :account, 'user_id'
79
+ mapping :amount, 'amount'
80
+ mapping :currency, 'currency_id'
81
+ mapping :description, 'reason_1'
82
+
83
+ mapping :return_url, 'user_variable_1'
84
+ mapping :cancel_return_url, 'user_variable_2'
85
+ mapping :notify_url, 'user_variable_3'
86
+ end
87
+ end
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,120 @@
1
+ module ActiveMerchant #:nodoc:
2
+ module Billing #:nodoc:
3
+ module Integrations #:nodoc:
4
+ module Directebanking
5
+ class Notification < ActiveMerchant::Billing::Integrations::Notification
6
+
7
+ def initialize(data, options)
8
+ if options[:credential4].nil?
9
+ raise ArgumentError, "You need to provide the notification password (SH1) as the option :credential4 to verify that the notification originated from Directebanking (Payment Networks AG)"
10
+ end
11
+ super
12
+ end
13
+
14
+ def complete?
15
+ status == 'Completed'
16
+ end
17
+
18
+ def item_id
19
+ params['user_variable_0']
20
+ end
21
+
22
+ def transaction_id
23
+ params['transaction']
24
+ end
25
+
26
+ # When was this payment received by the client.
27
+ def received_at
28
+ Time.parse(params['created']) if params['created']
29
+ end
30
+
31
+ # the money amount we received in X.2 decimal.
32
+ def gross
33
+ "%.2f" % params['amount'].to_f
34
+ end
35
+
36
+ def status
37
+ 'Completed'
38
+ end
39
+
40
+ def currency
41
+ params['currency_id']
42
+ end
43
+
44
+ def test?
45
+ params['sender_bank_name'] == 'Testbank'
46
+ end
47
+
48
+ # for verifying the signature of the URL parameters
49
+ PAYMENT_HOOK_SIGNATURE_FIELDS = [
50
+ :transaction,
51
+ :user_id,
52
+ :project_id,
53
+ :sender_holder,
54
+ :sender_account_number,
55
+ :sender_bank_code,
56
+ :sender_bank_name,
57
+ :sender_bank_bic,
58
+ :sender_iban,
59
+ :sender_country_id,
60
+ :recipient_holder,
61
+ :recipient_account_number,
62
+ :recipient_bank_code,
63
+ :recipient_bank_name,
64
+ :recipient_bank_bic,
65
+ :recipient_iban,
66
+ :recipient_country_id,
67
+ :international_transaction,
68
+ :amount,
69
+ :currency_id,
70
+ :reason_1,
71
+ :reason_2,
72
+ :security_criteria,
73
+ :user_variable_0,
74
+ :user_variable_1,
75
+ :user_variable_2,
76
+ :user_variable_3,
77
+ :user_variable_4,
78
+ :user_variable_5,
79
+ :created
80
+ ]
81
+
82
+ PAYMENT_HOOK_IGNORE_AT_METHOD_CREATION_FIELDS = [
83
+ :transaction,
84
+ :amount,
85
+ :currency_id,
86
+ :user_variable_0,
87
+ :user_variable_1,
88
+ :user_variable_2,
89
+ :user_variable_3,
90
+ :created
91
+ ]
92
+
93
+ # Provide access to raw fields
94
+ PAYMENT_HOOK_SIGNATURE_FIELDS.each do |key|
95
+ if !PAYMENT_HOOK_IGNORE_AT_METHOD_CREATION_FIELDS.include?(key)
96
+ define_method(key.to_s) do
97
+ params[key.to_s]
98
+ end
99
+ end
100
+ end
101
+
102
+ def generate_signature_string
103
+ #format is: transaction|user_id|project_id|sender_holder|sender_account_number|sender_bank_code|sender_bank_name|sender_bank_bic|sender_iban|sender_country_id|recipient_holder|recipient_account_number|recipient_bank_code|recipient_bank_name|recipient_bank_bic|recipient_iban|recipient_country_id|international_transaction|amount|currency_id|reason_1|reason_2|security_criteria|user_variable_0|user_variable_1|user_variable_2|user_variable_3|user_variable_4|user_variable_5|created|notification_password
104
+ PAYMENT_HOOK_SIGNATURE_FIELDS.map {|key| params[key.to_s]} * "|" + "|#{@options[:credential4]}"
105
+ end
106
+
107
+ def generate_signature
108
+ Digest::SHA1.hexdigest(generate_signature_string)
109
+ end
110
+
111
+ def acknowledge
112
+ # signature_is_valid?
113
+ generate_signature.to_s == params['hash'].to_s
114
+ end
115
+
116
+ end
117
+ end
118
+ end
119
+ end
120
+ end
@@ -0,0 +1,11 @@
1
+ module ActiveMerchant #:nodoc:
2
+ module Billing #:nodoc:
3
+ module Integrations #:nodoc:
4
+ module Directebanking
5
+ class Return < ActiveMerchant::Billing::Integrations::Return
6
+ end
7
+ end
8
+ end
9
+ end
10
+ end
11
+
@@ -0,0 +1,30 @@
1
+ # All mappings in helper.rb are required fields to be sent to Dwolla.
2
+ # :account = 'Dwolla Id of merchant'
3
+ # :credential1 = 'key from Dwolla Application'
4
+ # :credential2 = 'secret from Dwolla Application'
5
+ # :redirect_url = 'can be different that what is specified on Dwolla Application creation'
6
+ # :return_url = 'can be different that what is specified on Dwolla Application creation'
7
+ # :order_id = must be unique for each transaction
8
+
9
+ module ActiveMerchant #:nodoc:
10
+ module Billing #:nodoc:
11
+ module Integrations #:nodoc:
12
+ module Dwolla
13
+ autoload :Return, 'active_merchant/billing/integrations/dwolla/return.rb'
14
+ autoload :Helper, 'active_merchant/billing/integrations/dwolla/helper.rb'
15
+ autoload :Notification, 'active_merchant/billing/integrations/dwolla/notification.rb'
16
+
17
+ mattr_accessor :service_url
18
+ self.service_url = 'https://www.dwolla.com/payment/pay'
19
+
20
+ def self.notification(post)
21
+ Notification.new(post)
22
+ end
23
+
24
+ def self.return(query_string)
25
+ Return.new(query_string)
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,28 @@
1
+ module ActiveMerchant #:nodoc:
2
+ module Billing #:nodoc:
3
+ module Integrations #:nodoc:
4
+ module Dwolla
5
+ class Helper < ActiveMerchant::Billing::Integrations::Helper
6
+
7
+ def initialize(order, account, options = {})
8
+ super
9
+ add_field('name', 'Store Purchase')
10
+ end
11
+
12
+ # Replace with the real mapping
13
+ mapping :credential1, 'key'
14
+ mapping :credential2, 'secret'
15
+ mapping :notify_url, 'callback'
16
+ mapping :return_url, 'redirect'
17
+ mapping :test_mode, 'test'
18
+ mapping :description, 'description'
19
+ mapping :account, 'destinationid'
20
+ mapping :amount, 'amount'
21
+ mapping :tax, 'tax'
22
+ mapping :shipping, 'shipping'
23
+ mapping :order, 'orderid'
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,50 @@
1
+ require 'net/http'
2
+
3
+ module ActiveMerchant #:nodoc:
4
+ module Billing #:nodoc:
5
+ module Integrations #:nodoc:
6
+ module Dwolla
7
+ class Notification < ActiveMerchant::Billing::Integrations::Notification
8
+ def complete?
9
+ status == "Completed"
10
+ end
11
+
12
+ def status
13
+ params["Status"]
14
+ end
15
+
16
+ def transaction_id
17
+ params['OrderId']
18
+ end
19
+
20
+ def currency
21
+ "USD"
22
+ end
23
+
24
+ def gross
25
+ params['Amount']
26
+ end
27
+
28
+ def error
29
+ params['Message']
30
+ end
31
+
32
+ # Was this a test transaction?
33
+ def test?
34
+ params['TestMode']
35
+ end
36
+
37
+ def acknowledge
38
+ true
39
+ end
40
+ private
41
+ # Take the posted data and move the relevant data into a hash
42
+ def parse(post)
43
+ json_post = JSON.parse(post)
44
+ params.merge!(json_post)
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,38 @@
1
+ module ActiveMerchant #:nodoc:
2
+ module Billing #:nodoc:
3
+ module Integrations #:nodoc:
4
+ module Dwolla
5
+ class Return < ActiveMerchant::Billing::Integrations::Return
6
+
7
+ def success?
8
+ self.error.nil? && self.callback_success?
9
+ end
10
+
11
+ def error
12
+ params['error']
13
+ end
14
+
15
+ def error_description
16
+ params['error_description']
17
+ end
18
+
19
+ def checkout_id
20
+ params['checkoutid']
21
+ end
22
+
23
+ def transaction
24
+ params['transaction']
25
+ end
26
+
27
+ def test?
28
+ params['test']
29
+ end
30
+
31
+ def callback_success?
32
+ params['postback'] != "failure"
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,48 @@
1
+ module ActiveMerchant #:nodoc:
2
+ module Billing #:nodoc:
3
+ module Integrations #:nodoc:
4
+ module EPaymentPlans
5
+ autoload :Helper, File.dirname(__FILE__) + '/e_payment_plans/helper.rb'
6
+ autoload :Notification, File.dirname(__FILE__) + '/e_payment_plans/notification.rb'
7
+
8
+ mattr_accessor :production_url
9
+ self.production_url = 'https://www.epaymentplans.com'
10
+
11
+ mattr_accessor :test_url
12
+ self.test_url = 'https://test.epaymentplans.com'
13
+
14
+ def self.service_url
15
+ mode = ActiveMerchant::Billing::Base.integration_mode
16
+ case mode
17
+ when :production
18
+ "#{production_url}/order/purchase"
19
+ when :test
20
+ "#{test_url}/order/purchase"
21
+ else
22
+ raise StandardError, "Integration mode set to an invalid value: #{mode}"
23
+ end
24
+ end
25
+
26
+ def self.notification_confirmation_url
27
+ mode = ActiveMerchant::Billing::Base.integration_mode
28
+ case mode
29
+ when :production
30
+ "#{production_url}/order/confirmation"
31
+ when :test
32
+ "#{test_url}/order/confirmation"
33
+ else
34
+ raise StandardError, "Integration mode set to an invalid value: #{mode}"
35
+ end
36
+ end
37
+
38
+ def self.notification(post, options = {})
39
+ Notification.new(post, options)
40
+ end
41
+
42
+ def self.return(query_string, options = {})
43
+ Return.new(query_string, options)
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,34 @@
1
+ module ActiveMerchant #:nodoc:
2
+ module Billing #:nodoc:
3
+ module Integrations #:nodoc:
4
+ module EPaymentPlans
5
+ class Helper < ActiveMerchant::Billing::Integrations::Helper
6
+ mapping :account, 'order[account]'
7
+ mapping :amount, 'order[amount]'
8
+
9
+ mapping :order, 'order[num]'
10
+
11
+ mapping :customer, :first_name => 'order[first_name]',
12
+ :last_name => 'order[last_name]',
13
+ :email => 'order[email]',
14
+ :phone => 'order[phone]'
15
+
16
+ mapping :billing_address, :city => 'order[city]',
17
+ :address1 => 'order[address1]',
18
+ :address2 => 'order[address2]',
19
+ :company => 'order[company]',
20
+ :state => 'order[state]',
21
+ :zip => 'order[zip]',
22
+ :country => 'order[country]'
23
+
24
+ mapping :notify_url, 'order[notify_url]'
25
+ mapping :return_url, 'order[return_url]'
26
+ mapping :cancel_return_url, 'order[cancel_return_url]'
27
+ mapping :description, 'order[description]'
28
+ mapping :tax, 'order[tax]'
29
+ mapping :shipping, 'order[shipping]'
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end