workarea-payware_connect 2.1.2

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 (130) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +20 -0
  3. data/.github/ISSUE_TEMPLATE/bug_report.md +37 -0
  4. data/.github/ISSUE_TEMPLATE/documentation-request.md +17 -0
  5. data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  6. data/.github/workflows/ci.yml +54 -0
  7. data/.gitignore +13 -0
  8. data/.rubocop.yml +2 -0
  9. data/CHANGELOG.md +63 -0
  10. data/CODE_OF_CONDUCT.md +3 -0
  11. data/CONTRIBUTING.md +3 -0
  12. data/Gemfile +9 -0
  13. data/LICENSE.md +3 -0
  14. data/README.md +53 -0
  15. data/Rakefile +54 -0
  16. data/app/models/workarea/payment/authorize/credit_card.decorator +37 -0
  17. data/app/models/workarea/payment/capture/credit_card.decorator +14 -0
  18. data/app/models/workarea/payment/payware_credit_card.decorator +24 -0
  19. data/app/models/workarea/payment/purchase/credit_card.decorator +37 -0
  20. data/app/models/workarea/payment/refund/credit_card.decorator +14 -0
  21. data/app/models/workarea/payment/store_credit_card.decorator +13 -0
  22. data/app/workers/workarea/save_user_order_details.decorator +33 -0
  23. data/bin/rails +18 -0
  24. data/config/initializers/00_defaults.rb +1 -0
  25. data/doc/PWCTestAccount_WorldPay ecom.pages +0 -0
  26. data/doc/validation/(Completed v2)PAYware Connect Validation Worksheet 2015 V2 .doc +0 -0
  27. data/doc/validation/(Completed v3)PAYware Connect Validation Worksheet 2015 V2 .doc +0 -0
  28. data/doc/validation/PAYware Connect Validation Letter Weblinc 09-11-2015.pdf +0 -0
  29. data/doc/validation/PAYware Connect Validation Letter Weblinc 10-21-2015.pdf +0 -0
  30. data/lib/active_merchant/billing/bogus_payware_connect_gateway.rb +130 -0
  31. data/lib/active_merchant/billing/payware_connect_gateway.rb +137 -0
  32. data/lib/active_merchant/billing/payware_connect_gateway/actions/authorize.rb +63 -0
  33. data/lib/active_merchant/billing/payware_connect_gateway/actions/capture.rb +26 -0
  34. data/lib/active_merchant/billing/payware_connect_gateway/actions/purchase.rb +59 -0
  35. data/lib/active_merchant/billing/payware_connect_gateway/actions/refund.rb +29 -0
  36. data/lib/active_merchant/billing/payware_connect_gateway/actions/void.rb +20 -0
  37. data/lib/active_merchant/billing/payware_connect_gateway/admin_actions/add_contract.rb +9 -0
  38. data/lib/active_merchant/billing/payware_connect_gateway/admin_actions/add_customer.rb +9 -0
  39. data/lib/active_merchant/billing/payware_connect_gateway/admin_actions/add_customer_and_contract.rb +10 -0
  40. data/lib/active_merchant/billing/payware_connect_gateway/admin_actions/update_contract.rb +9 -0
  41. data/lib/active_merchant/billing/payware_connect_gateway/admin_actions/update_customer.rb +9 -0
  42. data/lib/active_merchant/billing/payware_connect_gateway/admin_xml_builder.rb +105 -0
  43. data/lib/active_merchant/billing/payware_connect_gateway/xml_builder.rb +35 -0
  44. data/lib/active_merchant/billing/payware_response.rb +9 -0
  45. data/lib/validation.rb +25 -0
  46. data/lib/workarea/payware_connect.rb +43 -0
  47. data/lib/workarea/payware_connect/engine.rb +8 -0
  48. data/lib/workarea/payware_connect/version.rb +5 -0
  49. data/test/dummy/Rakefile +6 -0
  50. data/test/dummy/app/assets/config/manifest.js +4 -0
  51. data/test/dummy/app/assets/images/.keep +0 -0
  52. data/test/dummy/app/assets/javascripts/application.js +13 -0
  53. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  54. data/test/dummy/app/controllers/application_controller.rb +3 -0
  55. data/test/dummy/app/controllers/concerns/.keep +0 -0
  56. data/test/dummy/app/helpers/application_helper.rb +2 -0
  57. data/test/dummy/app/jobs/application_job.rb +2 -0
  58. data/test/dummy/app/mailers/application_mailer.rb +4 -0
  59. data/test/dummy/app/models/concerns/.keep +0 -0
  60. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  61. data/test/dummy/app/views/layouts/mailer.html.erb +13 -0
  62. data/test/dummy/app/views/layouts/mailer.text.erb +1 -0
  63. data/test/dummy/bin/bundle +3 -0
  64. data/test/dummy/bin/rails +4 -0
  65. data/test/dummy/bin/rake +4 -0
  66. data/test/dummy/bin/setup +34 -0
  67. data/test/dummy/bin/update +29 -0
  68. data/test/dummy/config.ru +5 -0
  69. data/test/dummy/config/application.rb +24 -0
  70. data/test/dummy/config/boot.rb +5 -0
  71. data/test/dummy/config/cable.yml +9 -0
  72. data/test/dummy/config/environment.rb +5 -0
  73. data/test/dummy/config/environments/development.rb +56 -0
  74. data/test/dummy/config/environments/production.rb +86 -0
  75. data/test/dummy/config/environments/test.rb +44 -0
  76. data/test/dummy/config/initializers/application_controller_renderer.rb +6 -0
  77. data/test/dummy/config/initializers/assets.rb +11 -0
  78. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  79. data/test/dummy/config/initializers/cookies_serializer.rb +5 -0
  80. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  81. data/test/dummy/config/initializers/inflections.rb +16 -0
  82. data/test/dummy/config/initializers/mime_types.rb +4 -0
  83. data/test/dummy/config/initializers/new_framework_defaults.rb +23 -0
  84. data/test/dummy/config/initializers/workarea.rb +3 -0
  85. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  86. data/test/dummy/config/locales/en.yml +23 -0
  87. data/test/dummy/config/puma.rb +47 -0
  88. data/test/dummy/config/routes.rb +5 -0
  89. data/test/dummy/config/secrets.yml +22 -0
  90. data/test/dummy/config/spring.rb +6 -0
  91. data/test/dummy/db/seeds.rb +3 -0
  92. data/test/dummy/lib/assets/.keep +0 -0
  93. data/test/dummy/log/.keep +0 -0
  94. data/test/dummy/public/404.html +67 -0
  95. data/test/dummy/public/422.html +67 -0
  96. data/test/dummy/public/500.html +66 -0
  97. data/test/dummy/public/apple-touch-icon-precomposed.png +0 -0
  98. data/test/dummy/public/apple-touch-icon.png +0 -0
  99. data/test/dummy/public/favicon.ico +0 -0
  100. data/test/integration/workarea/storefront/checkout_side_effects_integration_test.decorator +44 -0
  101. data/test/lib/active_merchant/billing/payware_connect_gateway_test.rb +280 -0
  102. data/test/models/workarea/payment/authorize/credit_card_test.decorator +47 -0
  103. data/test/models/workarea/payment/capture/credit_card_test.decorator +33 -0
  104. data/test/models/workarea/payment/credit_card_integration_test.decorator +25 -0
  105. data/test/models/workarea/payment/payware_credit_card_test.rb +44 -0
  106. data/test/models/workarea/payment/purchase/credit_card_test.decorator +54 -0
  107. data/test/models/workarea/payment/refund/credit_card_test.decorator +33 -0
  108. data/test/models/workarea/payment/store_credit_card_test.decorator +10 -0
  109. data/test/support/workarea/payware_connect_gateway_vcr_config.rb +24 -0
  110. data/test/system/workarea/admin/payment_transactions_system_test.decorator +37 -0
  111. data/test/test_helper.rb +12 -0
  112. data/test/vcr_cassettes/credit_card/auth_capture.yml +127 -0
  113. data/test/vcr_cassettes/credit_card/auth_void.yml +126 -0
  114. data/test/vcr_cassettes/credit_card/purchase_void.yml +126 -0
  115. data/test/vcr_cassettes/credit_card/store_auth.yml +67 -0
  116. data/test/vcr_cassettes/credit_card/store_purchase.yml +67 -0
  117. data/test/vcr_cassettes/payware/add_contract.yml +99 -0
  118. data/test/vcr_cassettes/payware/add_customer.yml +52 -0
  119. data/test/vcr_cassettes/payware/authorize_credit_card.yml +67 -0
  120. data/test/vcr_cassettes/payware/authorize_customer_and_contract.yml +161 -0
  121. data/test/vcr_cassettes/payware/authorize_for_0_credit_card.yml +67 -0
  122. data/test/vcr_cassettes/payware/authorize_for_0_troutd.yml +130 -0
  123. data/test/vcr_cassettes/payware/authorize_troutd.yml +130 -0
  124. data/test/vcr_cassettes/payware/capture.yml +127 -0
  125. data/test/vcr_cassettes/payware/refund.yml +223 -0
  126. data/test/vcr_cassettes/payware/refund_troutd.yml +128 -0
  127. data/test/vcr_cassettes/payware/void_authorization.yml +126 -0
  128. data/test/workers/workarea/save_user_order_details_test.decorator +56 -0
  129. data/workarea-payware_connect.gemspec +18 -0
  130. metadata +190 -0
@@ -0,0 +1,26 @@
1
+ module ActiveMerchant
2
+ module Billing
3
+ class PaywareConnectGateway < ActiveMerchant::Billing::Gateway
4
+ module Actions
5
+ class Capture < PaywareConnectGateway::XMLBuilder
6
+ attr_reader :cents, :authorization
7
+
8
+ def initialize(cents, authorization, merged_options)
9
+ @cents = cents
10
+ @authorization = authorization
11
+
12
+ super(merged_options)
13
+ end
14
+
15
+ def build
16
+ build_credit_request do |xml|
17
+ xml.COMMAND "COMPLETION"
18
+ xml.TROUTD authorization
19
+ xml.TRANS_AMOUNT "%.2f" % (cents.to_f / 100.0)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,59 @@
1
+ module ActiveMerchant
2
+ module Billing
3
+ class PaywareConnectGateway::Actions::Purchase < PaywareConnectGateway::XMLBuilder
4
+ attr_reader :cents
5
+
6
+ def initialize(cents, merged_options)
7
+ @cents = cents
8
+
9
+ super(merged_options)
10
+ end
11
+
12
+ def build
13
+ build_credit_request do |xml|
14
+ xml.COMMAND "SALE"
15
+ xml.TRANS_AMOUNT "%.2f" % (cents.to_f / 100.0)
16
+ xml.PRESENT_FLAG "1"
17
+
18
+ if options[:invoice_number]
19
+ xml.INVOICE options[:invoice_number]
20
+ end
21
+
22
+ if options[:force]
23
+ xml.FORCE_FLAG "true"
24
+ end
25
+
26
+ if options[:billing_address]
27
+ address = options[:billing_address]
28
+ xml.CARDHOLDER "#{address.first_name} #{address.last_name}"
29
+ xml.CUSTOMER_STREET address.street[0..19] # max length of this field is 20 characters
30
+ xml.CUSTOMER_CITY address.city
31
+ xml.CUSTOMER_STATE address.region
32
+ xml.CUSTOMER_ZIP address.postal_code
33
+ end
34
+
35
+ if options[:customer_id] && options[:contract_id]
36
+ xml.RBCUSTOMER_ID options[:customer_id]
37
+ xml.RBCONTRACT_ID options[:contract_id]
38
+
39
+ elsif options[:credit_card]
40
+ credit_card = options[:credit_card]
41
+ xml.ACCT_NUM credit_card.number
42
+ xml.CVV2 credit_card.verification_value
43
+
44
+ month = credit_card.month
45
+ month = month.to_s.rjust(2, "0")
46
+ xml.EXP_MONTH month
47
+ xml.EXP_YEAR credit_card.year.to_s[-2, 2] # last two digits of year
48
+
49
+ elsif options[:troutd]
50
+ xml.REF_TROUTD options[:troutd]
51
+
52
+ else
53
+ raise "Purchase requires either 1) customer and contract ids, 2) credit card, 3) troutd from previous authorization"
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,29 @@
1
+ module ActiveMerchant
2
+ module Billing
3
+ class PaywareConnectGateway::Actions::Refund < PaywareConnectGateway::XMLBuilder
4
+ attr_reader :cents
5
+
6
+ def initialize(cents, merged_options)
7
+ @cents = cents
8
+
9
+ super(merged_options)
10
+ end
11
+
12
+ def build
13
+ build_credit_request do |xml|
14
+ xml.COMMAND "CREDIT"
15
+ xml.TRANS_AMOUNT "%.2f" % (cents.to_f / 100.0)
16
+
17
+ if options[:customer_id] && options[:contract_id]
18
+ xml.RBCUSTOMER_ID options[:customer_id]
19
+ xml.RBCONTRACT_ID options[:contract_id]
20
+ elsif options[:troutd]
21
+ xml.TROUTD options[:troutd]
22
+ else
23
+ raise "Refund require either 1) customer and contract ids or 2) troutd"
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,20 @@
1
+ module ActiveMerchant
2
+ module Billing
3
+ class PaywareConnectGateway::Actions::Void < PaywareConnectGateway::XMLBuilder
4
+ attr_reader :authorization
5
+
6
+ def initialize(authorization, merged_options)
7
+ @authorization = authorization
8
+
9
+ super(merged_options)
10
+ end
11
+
12
+ def build
13
+ build_credit_request do |xml|
14
+ xml.COMMAND "VOID"
15
+ xml.TROUTD authorization
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,9 @@
1
+ module ActiveMerchant::Billing::PaywareConnectGateway::AdminActions
2
+ class AddContract < ActiveMerchant::Billing::PaywareConnectGateway::AdminXMLBuilder
3
+ def build
4
+ build_admin_request("ADDON_NEW_CONTRACT") do |xml|
5
+ build_contract(xml, options[:customer_id], options[:contract_id], options)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module ActiveMerchant::Billing::PaywareConnectGateway::AdminActions
2
+ class AddCustomer < ActiveMerchant::Billing::PaywareConnectGateway::AdminXMLBuilder
3
+ def build
4
+ build_admin_request("ADDON_NEW_CUSTOMER") do |xml|
5
+ build_customer(xml, options[:customer_id], options)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,10 @@
1
+ module ActiveMerchant::Billing::PaywareConnectGateway::AdminActions
2
+ class AddCustomerAndContract < ActiveMerchant::Billing::PaywareConnectGateway::AdminXMLBuilder
3
+ def build
4
+ build_admin_request("ADDON_NEW_CUSTOMER_CONTRACT") do |xml|
5
+ build_customer(xml, options[:customer_id], options)
6
+ build_contract(xml, nil, options[:contract_id], options)
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,9 @@
1
+ module ActiveMerchant::Billing::PaywareConnectGateway::AdminActions
2
+ class UpdateContract < ActiveMerchant::Billing::PaywareConnectGateway::AdminXMLBuilder
3
+ def build
4
+ build_admin_request("ADDON_UPDATE_CONTRACT") do |xml|
5
+ build_contract(xml, options[:customer_id], options[:contract_id], options)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module ActiveMerchant::Billing::PaywareConnectGateway::AdminActions
2
+ class UpdateCustomer < ActiveMerchant::Billing::PaywareConnectGateway::AdminXMLBuilder
3
+ def build
4
+ build_admin_request("ADDON_UPDATE_CUSTOMER") do |xml|
5
+ build_customer(xml, options[:customer_id], options)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,105 @@
1
+ class ActiveMerchant::Billing::PaywareConnectGateway::AdminXMLBuilder
2
+ def initialize(merged_options)
3
+ @client_id = merged_options[:client_id]
4
+ @merchant_key = merged_options[:merchant_key]
5
+ @login = merged_options[:login]
6
+ @password = merged_options[:password]
7
+ @options = merged_options
8
+ end
9
+
10
+ def build
11
+ raise NotImplemented
12
+ end
13
+
14
+ def build_customer(xml, customer_id, options)
15
+ xml.CUSTOMER("Merchant_Customer_ID" => customer_id) do
16
+ if options[:billing_address]
17
+ build_address(xml, options)
18
+ else
19
+ xml.First_Name options[:first_name]
20
+ xml.Last_Name options[:last_name]
21
+ end
22
+ end
23
+ end
24
+
25
+ def build_address(xml, options)
26
+ address = options[:billing_address]
27
+ xml.Company_Name address.company
28
+ xml.First_Name address.first_name
29
+ xml.Last_Name address.last_name
30
+ xml.Address_1 address.street
31
+ xml.Address_2 address.street_2
32
+ xml.City address.city
33
+ xml.Zip address.postal_code
34
+ xml.Pri_Phone address.phone_number
35
+ xml.Pri_Email options[:email]
36
+ end
37
+
38
+ def build_contract(xml, customer_id, contract_id, options)
39
+ xml.CONTRACT do
40
+ xml.Merchant_Customer_ID(customer_id) if customer_id
41
+ xml.Merchant_Contract_ID(contract_id)
42
+
43
+ credit_card = options[:credit_card]
44
+ build_credit_card(xml, credit_card)
45
+ end
46
+ end
47
+
48
+ def build_credit_card(xml, credit_card)
49
+ brand = credit_card.brand.try(:upcase)
50
+ brand =
51
+ if brand == "MASTER"
52
+ "MC"
53
+ else
54
+ brand
55
+ end
56
+
57
+ month = credit_card.month
58
+ month = month.to_s.rjust(2, "0")
59
+
60
+ xml.Card_Type brand if brand
61
+ xml.Pri_Account_Number credit_card.number if credit_card.number.present?
62
+ xml.Pri_Exp_Month month
63
+ xml.Pri_Exp_Year credit_card.year.to_s[-2, 2] # last two digits of year
64
+ xml.fAlt_Payment(false) # "This signals the system to use the alternate card until such time that it is switched to the primary card. This value must be included and defaulted to false"
65
+ end
66
+
67
+ private
68
+
69
+ attr_reader :options, :client_id, :merchant_key, :login, :password
70
+
71
+ def build_admin_request(command_type)
72
+ xml = Builder::XmlMarkup.new
73
+ xml.AdminRequest do
74
+ build_admin_header(xml, command_type)
75
+
76
+ xml.AdminBody do
77
+ xml.HEADER do
78
+ build_header(xml)
79
+ end
80
+
81
+ xml.DETAIL do
82
+ xml.RECORD do
83
+ yield xml
84
+ end
85
+ end
86
+ end
87
+ end
88
+ xml.target!
89
+ end
90
+
91
+ def build_admin_header(xml, command_type)
92
+ xml.AdminHeader do
93
+ xml.RequestType("IPCRB_ADMIN")
94
+ xml.FunctionType("ADDON")
95
+ xml.CommandType(command_type)
96
+ end
97
+ end
98
+
99
+ def build_header(xml)
100
+ xml.Client_ID(client_id)
101
+ xml.MERCHANTKEY(merchant_key)
102
+ xml.USERID(login)
103
+ xml.USERPWD(password)
104
+ end
105
+ end
@@ -0,0 +1,35 @@
1
+ module ActiveMerchant
2
+ module Billing
3
+ class PaywareConnectGateway::XMLBuilder
4
+ def initialize(merged_options)
5
+ @client_id = merged_options[:client_id]
6
+ @merchant_key = merged_options[:merchant_key]
7
+ @login = merged_options[:login]
8
+ @password = merged_options[:password]
9
+ @options = merged_options
10
+ end
11
+
12
+ def build
13
+ raise NotImplemented
14
+ end
15
+
16
+ private
17
+
18
+ attr_reader :options, :client_id, :merchant_key, :login, :password
19
+
20
+ def build_credit_request
21
+ xml = Builder::XmlMarkup.new
22
+ xml.TRANSACTION do
23
+ xml.FUNCTION_TYPE "PAYMENT"
24
+ xml.PAYMENT_TYPE "CREDIT"
25
+ xml.CLIENT_ID(client_id)
26
+ xml.MERCHANTKEY(merchant_key)
27
+ xml.USER_ID(login)
28
+ xml.USER_PW(password)
29
+ yield xml
30
+ end
31
+ xml.target!
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,9 @@
1
+ module ActiveMerchant
2
+ module Billing
3
+ class Response
4
+ def troutd
5
+ params.fetch("RESPONSE", {})["TROUTD"]
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,25 @@
1
+ # Use these commands in the console to log all of the requests and responses for validation
2
+
3
+ gateway = Workarea.config.gateways.credit_card
4
+
5
+ card = OpenStruct.new(number: "4111111111111111", verification_value: "900", month: "12", year: "2018")
6
+ billing_address = OpenStruct.new(first_name: "Mark", last_name: "Platt", street: "916 Bartram Ave.", city: "Collingdale", region: "PA", postal_code: "19023")
7
+
8
+ Rails.logger.debug("***Authorize(Void)***")
9
+ response = gateway.authorize(100.to_m, credit_card: card, billing_address: billing_address)
10
+
11
+ Rails.logger.debug("***Void***")
12
+ gateway.void(response.params["RESPONSE"]["TROUTD"])
13
+
14
+ Rails.logger.debug("***Authorize(Capture)***")
15
+ response = gateway.authorize(101.to_m, credit_card: card, billing_address: billing_address)
16
+
17
+ Rails.logger.debug("***Capture***")
18
+ gateway.capture(101.to_m, response.params["RESPONSE"]["TROUTD"])
19
+
20
+ Rails.logger.debug("***Authorize(First)***")
21
+ gateway.authorize(104.to_m, credit_card: card, billing_address: billing_address, invoice_number: "123")
22
+ Rails.logger.debug("***Authorize(Dupe)***")
23
+ gateway.authorize(104.to_m, credit_card: card, billing_address: billing_address, invoice_number: "123")
24
+ Rails.logger.debug("***Authorize(Force)***")
25
+ gateway.authorize(104.to_m, credit_card: card, billing_address: billing_address, force: "true", invoice_number: "123")
@@ -0,0 +1,43 @@
1
+ require "workarea"
2
+
3
+ require "workarea/payware_connect/engine"
4
+ require "workarea/payware_connect/version"
5
+
6
+ require "active_merchant/billing/payware_connect_gateway"
7
+ require "active_merchant/billing/bogus_payware_connect_gateway"
8
+
9
+ module Workarea
10
+ module PaywareConnect
11
+ def self.auto_configure_gateway
12
+ secrets = Rails.application.secrets.payware_connect
13
+
14
+ if secrets.present?
15
+ secrets = secrets.deep_symbolize_keys
16
+
17
+ self.gateway = ActiveMerchant::Billing::PaywareConnectGateway.new(
18
+ client_id: secrets[:client_id],
19
+ login: secrets[:login],
20
+ password: secrets[:password],
21
+ merchant_key: secrets[:merchant_key],
22
+ test: secrets.fetch(:test, true)
23
+ )
24
+ else
25
+ self.gateway = ActiveMerchant::Billing::BogusPaywareConnectGateway.new
26
+ end
27
+
28
+ if ENV["HTTP_PROXY"].present? && gateway.present?
29
+ parsed = URI.parse(ENV["HTTP_PROXY"])
30
+ ActiveMerchant::Billing::PaywareConnectGateway.proxy_address = parsed.host
31
+ ActiveMerchant::Billing::PaywareConnectGateway.proxy_port = parsed.port
32
+ end
33
+ end
34
+
35
+ def self.gateway=(gateway)
36
+ Workarea.config.gateways.credit_card = gateway
37
+ end
38
+
39
+ def self.gateway
40
+ Workarea.config.gateways.credit_card
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,8 @@
1
+ module Workarea
2
+ module PaywareConnect
3
+ class Engine < ::Rails::Engine
4
+ include Workarea::Plugin
5
+ isolate_namespace Workarea::PaywareConnect
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,5 @@
1
+ module Workarea
2
+ module PaywareConnect
3
+ VERSION = "2.1.2"
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
2
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
+
4
+ require_relative "config/application"
5
+
6
+ Rails.application.load_tasks
@@ -0,0 +1,4 @@
1
+
2
+ //= link_tree ../images
3
+ //= link_directory ../javascripts .js
4
+ //= link_directory ../stylesheets .css