easy-testmode-activemerchant 1.5.1

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 (131) hide show
  1. data/CHANGELOG +508 -0
  2. data/CONTRIBUTORS +134 -0
  3. data/MIT-LICENSE +20 -0
  4. data/README.rdoc +136 -0
  5. data/gem-public_cert.pem +20 -0
  6. data/lib/active_merchant.rb +46 -0
  7. data/lib/active_merchant/billing.rb +9 -0
  8. data/lib/active_merchant/billing/avs_result.rb +98 -0
  9. data/lib/active_merchant/billing/base.rb +57 -0
  10. data/lib/active_merchant/billing/check.rb +68 -0
  11. data/lib/active_merchant/billing/credit_card.rb +159 -0
  12. data/lib/active_merchant/billing/credit_card_formatting.rb +21 -0
  13. data/lib/active_merchant/billing/credit_card_methods.rb +125 -0
  14. data/lib/active_merchant/billing/cvv_result.rb +38 -0
  15. data/lib/active_merchant/billing/expiry_date.rb +34 -0
  16. data/lib/active_merchant/billing/gateway.rb +164 -0
  17. data/lib/active_merchant/billing/gateways.rb +18 -0
  18. data/lib/active_merchant/billing/gateways/authorize_net.rb +654 -0
  19. data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +736 -0
  20. data/lib/active_merchant/billing/gateways/beanstream.rb +102 -0
  21. data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +244 -0
  22. data/lib/active_merchant/billing/gateways/beanstream_interac.rb +54 -0
  23. data/lib/active_merchant/billing/gateways/bogus.rb +98 -0
  24. data/lib/active_merchant/billing/gateways/braintree.rb +17 -0
  25. data/lib/active_merchant/billing/gateways/card_stream.rb +230 -0
  26. data/lib/active_merchant/billing/gateways/cyber_source.rb +406 -0
  27. data/lib/active_merchant/billing/gateways/data_cash.rb +593 -0
  28. data/lib/active_merchant/billing/gateways/efsnet.rb +229 -0
  29. data/lib/active_merchant/billing/gateways/elavon.rb +134 -0
  30. data/lib/active_merchant/billing/gateways/eway.rb +277 -0
  31. data/lib/active_merchant/billing/gateways/exact.rb +222 -0
  32. data/lib/active_merchant/billing/gateways/first_pay.rb +172 -0
  33. data/lib/active_merchant/billing/gateways/instapay.rb +164 -0
  34. data/lib/active_merchant/billing/gateways/jetpay.rb +270 -0
  35. data/lib/active_merchant/billing/gateways/linkpoint.rb +449 -0
  36. data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +154 -0
  37. data/lib/active_merchant/billing/gateways/merchant_ware.rb +283 -0
  38. data/lib/active_merchant/billing/gateways/modern_payments.rb +36 -0
  39. data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +220 -0
  40. data/lib/active_merchant/billing/gateways/moneris.rb +205 -0
  41. data/lib/active_merchant/billing/gateways/net_registry.rb +189 -0
  42. data/lib/active_merchant/billing/gateways/netbilling.rb +168 -0
  43. data/lib/active_merchant/billing/gateways/ogone.rb +279 -0
  44. data/lib/active_merchant/billing/gateways/pay_junction.rb +392 -0
  45. data/lib/active_merchant/billing/gateways/pay_secure.rb +120 -0
  46. data/lib/active_merchant/billing/gateways/payflow.rb +236 -0
  47. data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +207 -0
  48. data/lib/active_merchant/billing/gateways/payflow/payflow_express_response.rb +39 -0
  49. data/lib/active_merchant/billing/gateways/payflow/payflow_response.rb +13 -0
  50. data/lib/active_merchant/billing/gateways/payflow_express.rb +138 -0
  51. data/lib/active_merchant/billing/gateways/payflow_express_uk.rb +15 -0
  52. data/lib/active_merchant/billing/gateways/payflow_uk.rb +21 -0
  53. data/lib/active_merchant/billing/gateways/payment_express.rb +230 -0
  54. data/lib/active_merchant/billing/gateways/paypal.rb +121 -0
  55. data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +326 -0
  56. data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +38 -0
  57. data/lib/active_merchant/billing/gateways/paypal_ca.rb +13 -0
  58. data/lib/active_merchant/billing/gateways/paypal_express.rb +130 -0
  59. data/lib/active_merchant/billing/gateways/paypal_express_common.rb +20 -0
  60. data/lib/active_merchant/billing/gateways/plugnpay.rb +292 -0
  61. data/lib/active_merchant/billing/gateways/psigate.rb +214 -0
  62. data/lib/active_merchant/billing/gateways/psl_card.rb +304 -0
  63. data/lib/active_merchant/billing/gateways/quickpay.rb +213 -0
  64. data/lib/active_merchant/billing/gateways/realex.rb +200 -0
  65. data/lib/active_merchant/billing/gateways/sage.rb +146 -0
  66. data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +88 -0
  67. data/lib/active_merchant/billing/gateways/sage/sage_core.rb +116 -0
  68. data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +97 -0
  69. data/lib/active_merchant/billing/gateways/sage_pay.rb +309 -0
  70. data/lib/active_merchant/billing/gateways/sallie_mae.rb +144 -0
  71. data/lib/active_merchant/billing/gateways/secure_pay.rb +31 -0
  72. data/lib/active_merchant/billing/gateways/secure_pay_au.rb +157 -0
  73. data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +113 -0
  74. data/lib/active_merchant/billing/gateways/skip_jack.rb +453 -0
  75. data/lib/active_merchant/billing/gateways/smart_ps.rb +265 -0
  76. data/lib/active_merchant/billing/gateways/trans_first.rb +127 -0
  77. data/lib/active_merchant/billing/gateways/transax.rb +25 -0
  78. data/lib/active_merchant/billing/gateways/trust_commerce.rb +418 -0
  79. data/lib/active_merchant/billing/gateways/usa_epay.rb +194 -0
  80. data/lib/active_merchant/billing/gateways/verifi.rb +228 -0
  81. data/lib/active_merchant/billing/gateways/viaklix.rb +189 -0
  82. data/lib/active_merchant/billing/gateways/wirecard.rb +318 -0
  83. data/lib/active_merchant/billing/integrations.rb +29 -0
  84. data/lib/active_merchant/billing/integrations/action_view_helper.rb +79 -0
  85. data/lib/active_merchant/billing/integrations/bogus.rb +23 -0
  86. data/lib/active_merchant/billing/integrations/bogus/helper.rb +17 -0
  87. data/lib/active_merchant/billing/integrations/bogus/notification.rb +11 -0
  88. data/lib/active_merchant/billing/integrations/bogus/return.rb +10 -0
  89. data/lib/active_merchant/billing/integrations/chronopay.rb +23 -0
  90. data/lib/active_merchant/billing/integrations/chronopay/helper.rb +120 -0
  91. data/lib/active_merchant/billing/integrations/chronopay/notification.rb +158 -0
  92. data/lib/active_merchant/billing/integrations/chronopay/return.rb +10 -0
  93. data/lib/active_merchant/billing/integrations/gestpay.rb +25 -0
  94. data/lib/active_merchant/billing/integrations/gestpay/common.rb +42 -0
  95. data/lib/active_merchant/billing/integrations/gestpay/helper.rb +70 -0
  96. data/lib/active_merchant/billing/integrations/gestpay/notification.rb +85 -0
  97. data/lib/active_merchant/billing/integrations/gestpay/return.rb +10 -0
  98. data/lib/active_merchant/billing/integrations/helper.rb +93 -0
  99. data/lib/active_merchant/billing/integrations/hi_trust.rb +27 -0
  100. data/lib/active_merchant/billing/integrations/hi_trust/helper.rb +58 -0
  101. data/lib/active_merchant/billing/integrations/hi_trust/notification.rb +59 -0
  102. data/lib/active_merchant/billing/integrations/hi_trust/return.rb +67 -0
  103. data/lib/active_merchant/billing/integrations/nochex.rb +88 -0
  104. data/lib/active_merchant/billing/integrations/nochex/helper.rb +68 -0
  105. data/lib/active_merchant/billing/integrations/nochex/notification.rb +94 -0
  106. data/lib/active_merchant/billing/integrations/nochex/return.rb +10 -0
  107. data/lib/active_merchant/billing/integrations/notification.rb +62 -0
  108. data/lib/active_merchant/billing/integrations/paypal.rb +39 -0
  109. data/lib/active_merchant/billing/integrations/paypal/helper.rb +119 -0
  110. data/lib/active_merchant/billing/integrations/paypal/notification.rb +154 -0
  111. data/lib/active_merchant/billing/integrations/paypal/return.rb +10 -0
  112. data/lib/active_merchant/billing/integrations/quickpay.rb +17 -0
  113. data/lib/active_merchant/billing/integrations/quickpay/helper.rb +72 -0
  114. data/lib/active_merchant/billing/integrations/quickpay/notification.rb +74 -0
  115. data/lib/active_merchant/billing/integrations/return.rb +35 -0
  116. data/lib/active_merchant/billing/integrations/two_checkout.rb +23 -0
  117. data/lib/active_merchant/billing/integrations/two_checkout/helper.rb +59 -0
  118. data/lib/active_merchant/billing/integrations/two_checkout/notification.rb +114 -0
  119. data/lib/active_merchant/billing/integrations/two_checkout/return.rb +17 -0
  120. data/lib/active_merchant/billing/response.rb +32 -0
  121. data/lib/active_merchant/lib/connection.rb +170 -0
  122. data/lib/active_merchant/lib/country.rb +319 -0
  123. data/lib/active_merchant/lib/error.rb +4 -0
  124. data/lib/active_merchant/lib/post_data.rb +22 -0
  125. data/lib/active_merchant/lib/posts_data.rb +47 -0
  126. data/lib/active_merchant/lib/requires_parameters.rb +16 -0
  127. data/lib/active_merchant/lib/utils.rb +18 -0
  128. data/lib/active_merchant/lib/validateable.rb +76 -0
  129. data/lib/certs/cacert.pem +7815 -0
  130. data/lib/support/gateway_support.rb +58 -0
  131. metadata +218 -0
@@ -0,0 +1,17 @@
1
+ module ActiveMerchant #:nodoc:
2
+ module Billing #:nodoc:
3
+ module Integrations #:nodoc:
4
+ module Bogus
5
+ class Helper < ActiveMerchant::Billing::Integrations::Helper
6
+ mapping :account, 'account'
7
+ mapping :order, 'order'
8
+ mapping :amount, 'amount'
9
+ mapping :currency, 'currency'
10
+ mapping :customer, :first_name => 'first_name',
11
+ :last_name => 'last_name'
12
+
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,11 @@
1
+ module ActiveMerchant #:nodoc:
2
+ module Billing #:nodoc:
3
+ module Integrations #:nodoc:
4
+ module Bogus
5
+ class Notification < ActiveMerchant::Billing::Integrations::Notification
6
+
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,10 @@
1
+ module ActiveMerchant #:nodoc:
2
+ module Billing #:nodoc:
3
+ module Integrations #:nodoc:
4
+ module Bogus
5
+ class Return < ActiveMerchant::Billing::Integrations::Return
6
+ end
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,23 @@
1
+
2
+ module ActiveMerchant #:nodoc:
3
+ module Billing #:nodoc:
4
+ module Integrations #:nodoc:
5
+ module Chronopay
6
+ autoload :Return, 'active_merchant/billing/integrations/chronopay/return.rb'
7
+ autoload :Helper, 'active_merchant/billing/integrations/chronopay/helper.rb'
8
+ autoload :Notification, 'active_merchant/billing/integrations/chronopay/notification.rb'
9
+
10
+ mattr_accessor :service_url
11
+ self.service_url = 'https://secure.chronopay.com/index_shop.cgi'
12
+
13
+ def self.notification(post)
14
+ Notification.new(post)
15
+ end
16
+
17
+ def self.return(query_string)
18
+ Return.new(query_string)
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,120 @@
1
+ module ActiveMerchant #:nodoc:
2
+ module Billing #:nodoc:
3
+ module Integrations #:nodoc:
4
+ module Chronopay
5
+ class Helper < ActiveMerchant::Billing::Integrations::Helper
6
+ # All currently supported checkout languages:
7
+ # es (Spanish)
8
+ # en (English)
9
+ # de (German)
10
+ # pt (Portuguese)
11
+ # lv (Latvian)
12
+ # cn1 (Chinese Version 1)
13
+ # cn2 (Chinese version 2)
14
+ # nl (Dutch)
15
+ # ru (Russian)
16
+ COUNTRIES_FOR_LANG = {
17
+ 'ES' => %w( AR BO CL CO CR CU DO EC SV GQ GT HN MX NI PA PY PE ES UY VE),
18
+ 'DE' => %w( DE AT CH LI ),
19
+ 'PT' => %w( AO BR CV GW MZ PT ST TL),
20
+ 'RU' => %w( BY KG KZ RU ),
21
+ 'LV' => 'LV',
22
+ 'CN1' => 'CN',
23
+ 'NL' => 'NL'
24
+ }
25
+
26
+ LANG_FOR_COUNTRY = COUNTRIES_FOR_LANG.inject(Hash.new("EN")) do |memo, (lang, countries)|
27
+ countries.each do |code|
28
+ memo[code] = lang
29
+ end
30
+ memo
31
+ end
32
+
33
+
34
+ self.country_format = :alpha3
35
+
36
+ def initialize(order, account, options = {})
37
+ super
38
+ add_field('cb_type', 'p')
39
+ end
40
+
41
+ # product_id
42
+ mapping :account, 'product_id'
43
+ # product_name
44
+ mapping :invoice, 'product_name'
45
+ # product_price
46
+ mapping :amount, 'product_price'
47
+ # product_price_currency
48
+ mapping :currency, 'product_price_currency'
49
+
50
+ # f_name
51
+ # s_name
52
+ # email
53
+ mapping :customer, :first_name => 'f_name',
54
+ :last_name => 's_name',
55
+ :phone => 'phone',
56
+ :email => 'email'
57
+
58
+ # city
59
+ # street
60
+ # state
61
+ # zip
62
+ # country - The country must be a 3 digit country code
63
+ # phone
64
+
65
+ mapping :billing_address, :city => 'city',
66
+ :address1 => 'street',
67
+ :state => 'state',
68
+ :zip => 'zip',
69
+ :country => 'country'
70
+
71
+ def billing_address(mapping = {})
72
+ # Gets the country code in the appropriate format or returns what we were given
73
+ # The appropriate format for Chronopay is the alpha 3 country code
74
+ country_code = lookup_country_code(mapping.delete(:country))
75
+ add_field(mappings[:billing_address][:country], country_code)
76
+
77
+ countries_with_supported_states = ['USA', 'CAN']
78
+ if !countries_with_supported_states.include?(country_code)
79
+ mapping.delete(:state)
80
+ add_field(mappings[:billing_address][:state], 'XX')
81
+ end
82
+ mapping.each do |k, v|
83
+ field = mappings[:billing_address][k]
84
+ add_field(field, v) unless field.nil?
85
+ end
86
+ add_field('language', checkout_language_from_country(country_code))
87
+ end
88
+
89
+ # card_no
90
+ # exp_month
91
+ # exp_year
92
+ mapping :credit_card, :number => 'card_no',
93
+ :expiry_month => 'exp_month',
94
+ :expiry_year => 'exp_year'
95
+
96
+ # cb_url
97
+ mapping :notify_url, 'cb_url'
98
+
99
+ # cs1
100
+ mapping :order, 'cs1'
101
+
102
+ # cs2
103
+ # cs3
104
+ # decline_url
105
+
106
+
107
+ private
108
+
109
+ def checkout_language_from_country(country_code)
110
+ country = Country.find(country_code)
111
+ short_code = country.code(:alpha2).to_s
112
+ LANG_FOR_COUNTRY[short_code]
113
+ rescue InvalidCountryCodeError
114
+ 'EN'
115
+ end
116
+ end
117
+ end
118
+ end
119
+ end
120
+ end
@@ -0,0 +1,158 @@
1
+ module ActiveMerchant #:nodoc:
2
+ module Billing #:nodoc:
3
+ module Integrations #:nodoc:
4
+ module Chronopay
5
+ class Notification < ActiveMerchant::Billing::Integrations::Notification
6
+ def complete?
7
+ status == 'Completed'
8
+ end
9
+
10
+ # Status of transaction. List of possible values:
11
+ # <tt>onetime – one time payment has been made, no repayment required;</tt>::
12
+ # <tt>initial – first payment has been made, repayment required in corresponding period;</tt>::
13
+ # <tt>decline – charge request has been rejected;</tt>::
14
+ # <tt>rebill – repayment has been made together with initial transaction;</ttt>::
15
+ # <tt>cancel – repayments has been disabled;</tt>::
16
+ # <tt>expire – customer’s access to restricted zone membership has been expired;</tt>::
17
+ # <tt>refund – request to refund has been received;</tt>::
18
+ # <tt>chargeback – request to chargeback has been received.</tt>::
19
+ #
20
+ # This implementation of Chronopay does not support subscriptions.
21
+ # The status codes used are matched to the status codes that Paypal
22
+ # sends. See Paypal::Notification#status for more details
23
+ def status
24
+ case params['transaction_type']
25
+ when 'onetime'
26
+ 'Completed'
27
+ when 'refund'
28
+ 'Refunded'
29
+ when 'chargeback'
30
+ 'Reversed'
31
+ else
32
+ 'Failed'
33
+ end
34
+ end
35
+
36
+ # Unique ID of transaction
37
+ def transaction_id
38
+ params['transaction_id']
39
+ end
40
+
41
+ # Unique ID of customer
42
+ def customer_id
43
+ params['customer_id']
44
+ end
45
+
46
+ # Unique ID of Merchant’s web-site
47
+ def site_id
48
+ params['site_id']
49
+ end
50
+
51
+ # ID of a product that was purchased
52
+ def product_id
53
+ params['product_id']
54
+ end
55
+
56
+ # Language
57
+ def language
58
+ params['language']
59
+ end
60
+
61
+ def received_at
62
+ # Date should be formatted "dd-mm-yy" to be parsed by 1.8 and 1.9 the same way
63
+ formatted_date = Date.strptime(date, "%m/%d/%Y").strftime("%d-%m-%Y")
64
+ Time.parse("#{formatted_date} #{time}") unless date.blank? || time.blank?
65
+ end
66
+
67
+ # Date of transaction in MM/DD/YYYY format
68
+ def date
69
+ params['date']
70
+ end
71
+
72
+ # Time of transaction in HH:MM:SS format
73
+ def time
74
+ params['time']
75
+ end
76
+
77
+ # The customer's full name
78
+ def name
79
+ params['name']
80
+ end
81
+
82
+ # The customer's email address
83
+ def email
84
+ params['email']
85
+ end
86
+
87
+ # The customer's street address
88
+ def street
89
+ params['street']
90
+ end
91
+
92
+ # The customer's country - 3 digit country code
93
+ def country
94
+ params['country']
95
+ end
96
+
97
+ # The customer's city
98
+ def city
99
+ params['city']
100
+ end
101
+
102
+ # The customer's zip
103
+ def zip
104
+ params['zip']
105
+ end
106
+
107
+ # The customer's state. Only useful for US Customers
108
+ def state
109
+ params['state']
110
+ end
111
+
112
+ # Customer’s login for restricted access zone of Merchant’s Web-site
113
+ def username
114
+ params['username']
115
+ end
116
+
117
+ # Customer's password for restricted access zone of Merchant’s Web-site, as chosen
118
+ def password
119
+ params['password']
120
+ end
121
+
122
+ # The item id passed in the first custom parameter
123
+ def item_id
124
+ params['cs1']
125
+ end
126
+
127
+ # Additional parameter
128
+ def custom2
129
+ params['cs2']
130
+ end
131
+
132
+ # Additional parameter
133
+ def custom3
134
+ params['cs3']
135
+ end
136
+
137
+ # The currency the purchase was made in
138
+ def currency
139
+ params['currency']
140
+ end
141
+
142
+ # the money amount we received in X.2 decimal.
143
+ def gross
144
+ params['total']
145
+ end
146
+
147
+ def test?
148
+ date.blank? && time.blank? && transaction_id.blank?
149
+ end
150
+
151
+ def acknowledge
152
+ true
153
+ end
154
+ end
155
+ end
156
+ end
157
+ end
158
+ end
@@ -0,0 +1,10 @@
1
+ module ActiveMerchant #:nodoc:
2
+ module Billing #:nodoc:
3
+ module Integrations #:nodoc:
4
+ module Chronopay
5
+ class Return < ActiveMerchant::Billing::Integrations::Return
6
+ end
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,25 @@
1
+ # With help from Giovanni Intini and his code for RGestPay - http://medlar.it/it/progetti/rgestpay
2
+
3
+ module ActiveMerchant #:nodoc:
4
+ module Billing #:nodoc:
5
+ module Integrations #:nodoc:
6
+ module Gestpay
7
+ autoload :Return, File.dirname(__FILE__) + '/gestpay/return.rb'
8
+ autoload :Common, File.dirname(__FILE__) + '/gestpay/common.rb'
9
+ autoload :Helper, File.dirname(__FILE__) + '/gestpay/helper.rb'
10
+ autoload :Notification, File.dirname(__FILE__) + '/gestpay/notification.rb'
11
+
12
+ mattr_accessor :service_url
13
+ self.service_url = 'https://ecomm.sella.it/gestpay/pagam.asp'
14
+
15
+ def self.notification(post)
16
+ Notification.new(post)
17
+ end
18
+
19
+ def self.return(query_string)
20
+ Return.new(query_string)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,42 @@
1
+ module ActiveMerchant #:nodoc:
2
+ module Billing #:nodoc:
3
+ module Integrations #:nodoc:
4
+ module Gestpay
5
+ module Common
6
+ VERSION = "2.0"
7
+ ENCRYPTION_PATH = "/CryptHTTPS/Encrypt.asp"
8
+ DECRYPTION_PATH = "/CryptHTTPS/Decrypt.asp"
9
+ DELIMITER = '*P1*'
10
+
11
+ CURRENCY_MAPPING = {
12
+ 'EUR' => '242',
13
+ 'ITL' => '18',
14
+ 'BRL' => '234',
15
+ 'USD' => '1',
16
+ 'JPY' => '71',
17
+ 'HKD' => '103'
18
+ }
19
+
20
+ def parse_response(response)
21
+ case response
22
+ when /#cryptstring#(.*)#\/cryptstring#/, /#decryptstring#(.*)#\/decryptstring#/
23
+ $1
24
+ when /#error#(.*)#\/error#/
25
+ raise StandardError, "An error occurred retrieving the encrypted string from GestPay: #{$1}"
26
+ else
27
+ raise StandardError, "No response was received by GestPay"
28
+ end
29
+ end
30
+
31
+ def ssl_get(url, path)
32
+ uri = URI.parse(url)
33
+ site = Net::HTTP.new(uri.host, uri.port)
34
+ site.use_ssl = true
35
+ site.verify_mode = OpenSSL::SSL::VERIFY_NONE
36
+ site.get(path).body
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,70 @@
1
+ module ActiveMerchant #:nodoc:
2
+ module Billing #:nodoc:
3
+ module Integrations #:nodoc:
4
+ module Gestpay
5
+ class Helper < ActiveMerchant::Billing::Integrations::Helper
6
+ include Common
7
+ # Valid language codes
8
+ # Italian => 1
9
+ # English => 2
10
+ # Spanish => 3
11
+ # French => 4
12
+ # Tedesco => 5
13
+ def initialize(order, account, options = {})
14
+ super
15
+ add_field('PAY1_IDLANGUAGE', 2)
16
+ end
17
+
18
+ mapping :account, 'ShopLogin'
19
+
20
+ mapping :amount, 'PAY1_AMOUNT'
21
+ mapping :currency, 'PAY1_UICCODE'
22
+
23
+ mapping :order, 'PAY1_SHOPTRANSACTIONID'
24
+
25
+ # Buyer name PAY1_CHNAME
26
+ mapping :customer, :email => 'PAY1_CHEMAIL'
27
+
28
+ mapping :credit_card, :number => 'PAY1_CARDNUMBER',
29
+ :expiry_month => 'PAY1_EXPMONTH',
30
+ :expiry_year => 'PAY1_EXPYEAR',
31
+ :verification_value => 'PAY1_CVV'
32
+
33
+ def customer(params = {})
34
+ add_field(mappings[:customer][:email], params[:email])
35
+ add_field('PAY1_CHNAME', "#{params[:first_name]} #{params[:last_name]}")
36
+ end
37
+
38
+ def currency=(currency_code)
39
+ code = CURRENCY_MAPPING[currency_code]
40
+ raise StandardError, "Invalid currency code #{currency_code} specified" if code.nil?
41
+
42
+ add_field(mappings[:currency], code)
43
+ end
44
+
45
+ def form_fields
46
+ @encrypted_data ||= get_encrypted_string
47
+
48
+ {
49
+ 'a' => @fields['ShopLogin'],
50
+ 'b' => @encrypted_data
51
+ }
52
+ end
53
+
54
+ def get_encrypted_string
55
+ response = ssl_get(Gestpay.service_url, encryption_query_string)
56
+ parse_response(response)
57
+ end
58
+
59
+ def encryption_query_string
60
+ fields = ['PAY1_AMOUNT', 'PAY1_SHOPTRANSACTIONID', 'PAY1_UICCODE']
61
+
62
+ encoded_params = fields.collect{ |field| "#{field}=#{CGI.escape(@fields[field])}" }.join(DELIMITER)
63
+
64
+ "#{ENCRYPTION_PATH}?a=" + CGI.escape(@fields['ShopLogin']) + "&b=" + encoded_params + "&c=" + CGI.escape(VERSION)
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end