caboose-cms 0.5.60 → 0.5.61

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. checksums.yaml +8 -8
  2. data/app/assets/javascripts/caboose/authorize.net.js +187 -0
  3. data/app/assets/javascripts/caboose/cart.js +13 -8
  4. data/app/assets/javascripts/caboose/checkout_step4.js +7 -9
  5. data/app/controllers/caboose/#Untitled-1# +7 -0
  6. data/app/controllers/caboose/application_controller.rb +12 -10
  7. data/app/controllers/caboose/cart_controller.rb +3 -3
  8. data/app/controllers/caboose/checkout_controller.rb +51 -61
  9. data/app/controllers/caboose/orders_controller.rb +1 -0
  10. data/app/mailers/caboose/orders_mailer.rb +4 -2
  11. data/app/models/caboose/authnet.rb +140 -0
  12. data/app/models/caboose/order.rb +6 -0
  13. data/app/models/caboose/payment_processors/authorizenet.rb +18 -23
  14. data/app/models/caboose/schema.rb +3 -1
  15. data/app/models/caboose/site.rb +4 -0
  16. data/app/views/caboose/checkout/#Untitled-2# +41 -0
  17. data/app/views/caboose/checkout/_confirm.html.erb +10 -10
  18. data/app/views/caboose/checkout/authnet_profile_form.html.erb +14 -0
  19. data/app/views/caboose/checkout/authnet_relay.html.erb +16 -0
  20. data/app/views/caboose/checkout/authnet_response.html.erb +12 -0
  21. data/app/views/caboose/checkout/{relay.html.erb → payscape_relay.html.erb} +0 -0
  22. data/app/views/caboose/checkout/step_four.html.erb +36 -35
  23. data/app/views/caboose/checkout/step_four_old.html.erb +63 -0
  24. data/app/views/caboose/checkout/step_two.html.erb +8 -0
  25. data/app/views/caboose/orders/admin_edit.html.erb +14 -6
  26. data/app/views/caboose/orders/admin_index.html.erb +3 -3
  27. data/config/routes.rb +13 -8
  28. data/lib/caboose/version.rb +1 -1
  29. metadata +11 -3
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YmRiOTFhMTRiNDMzMjA1YjBkM2E1NGMyOWQ2ZjE2MTdmNzMzZGQyNg==
4
+ YmNhZDZiODIzMzY5MWNkM2EzN2EyY2E4NWIwOTYyOTE2ZjIxN2VmMA==
5
5
  data.tar.gz: !binary |-
6
- ZDRlNWYwM2Y4NGU3NWJjOWQ1ZjNiODk0ZjhkMTFhMTQ3OTk2MzA1Mg==
6
+ OTZjOWM1NmY0MjFkYTBmOGQzMzY3MTE4NTBkZmFlOTM2MmJhMTI1MQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NjYzZjZlZWE0YWFiNTU4NTI2YmMxYjVkY2NhOTA4ZTg3MWFiMzc0ODcxOWNj
10
- MDgzZjU3NjAxZDBiNjZhZWEzYjQzZTczNmQ1MzQ3MjQ2OWRmZWRhNmU3NDJi
11
- MmNlNTkzYWY5NjRjZjNmNzVmNWQ1ODVmYWI4MWQyNjY4MmVmNjI=
9
+ MTI2ZTliMWYzZDI5NjczZGE1NWQ2YjNmM2FmODZlZTc4OTk0MWQ0NGUxYWRi
10
+ ODFlNWY0MzIyMjc2YTg1NTJkYTJjYzUyYTY2Zjc4NmQ3MTFmNTkxMDU2YTQ2
11
+ YzEwZTMxMTY3YWNiZDE1NDNiNGYxY2E3MDJiZGNmYWZiYmEyY2M=
12
12
  data.tar.gz: !binary |-
13
- ODRhMThlN2Y5ODM0YzQ1NDRiYmY2ZWM0NTNiODdlY2E3Mzk5NjYyNjQ1M2Fk
14
- NzU3ZTAxYmU4MjVlNzI0YmUyNzMyNTNjZTVlYWRiYTkyNzcyYjZkNTBhOTUx
15
- MTVkYmE2YzI3MWUyN2NjZmExOTE4ZTkzN2YzNTI1ZGRiNzFmY2Q=
13
+ Mjk1OWFlYzYzMjEyZDg1MTUwYWUxYjM1ZWM4ZjM1MTFmN2NlNTVhN2IyOWQ0
14
+ MThjM2NmOTc1NTZjYjc5M2E0YThhYWRlMTdhYTgzNWRjMGY3MzFjZWJlMzY0
15
+ MjA0NTVlZWNlOWM0ODQ4ZWQzY2Q5NDM3MjAzM2YzMzMwNjY2MzE=
@@ -0,0 +1,187 @@
1
+ /* Usage:
2
+
3
+ <script type="text/javascript" src="contentx/popup.js"></script>
4
+
5
+ <script type="text/javascript">
6
+ //<![CDATA[
7
+
8
+ // Uncomment this line if eCheck is enabled. This does not affect functionality, only the initial sizing of the popup page for add payment.
9
+ //AuthorizeNetPopup.options.eCheckEnabled = true;
10
+
11
+ // Uncomment these lines to define a function that will be called when the popup is closed.
12
+ // For example, you may want to refresh your page and/or call the GetCustomerProfile API method from your server.
13
+ //AuthorizeNetPopup.options.onPopupClosed = function() {
14
+ // your code here.
15
+ //};
16
+
17
+ // Uncomment this line if you do not have absolutely positioned elements on your page that can obstruct the view of the popup.
18
+ // This can speed up the processing of the page slightly.
19
+ //AuthorizeNetPopup.options.skipZIndexCheck = true;
20
+
21
+ // Uncomment this line to use test.authorize.net instead of secure.authorize.net.
22
+ //AuthorizeNetPopup.options.useTestEnvironment = true;
23
+
24
+ //]]>
25
+ </script>
26
+
27
+ */
28
+
29
+ (function () {
30
+ if (!window.AuthorizeNetPopup) window.AuthorizeNetPopup = {};
31
+ if (!AuthorizeNetPopup.options) AuthorizeNetPopup.options = {
32
+ onPopupClosed: null
33
+ ,eCheckEnabled: false
34
+ ,skipZIndexCheck: false
35
+ ,useTestEnvironment: false
36
+ };
37
+ AuthorizeNetPopup.closePopup = function() {
38
+ document.getElementById("divAuthorizeNetPopupScreen").style.display = "none";
39
+ document.getElementById("divAuthorizeNetPopup").style.display = "none";
40
+ document.getElementById("iframeAuthorizeNet").src = "contentx/empty.html";
41
+ if (AuthorizeNetPopup.options.onPopupClosed) AuthorizeNetPopup.options.onPopupClosed();
42
+ };
43
+ AuthorizeNetPopup.openManagePopup = function() {
44
+ openSpecificPopup({action:"manage"});
45
+ };
46
+ AuthorizeNetPopup.openAddPaymentPopup = function() {
47
+ openSpecificPopup({action:"addPayment", paymentProfileId:"new"});
48
+ };
49
+ AuthorizeNetPopup.openEditPaymentPopup = function(paymentProfileId) {
50
+ openSpecificPopup({action:"editPayment", paymentProfileId:paymentProfileId});
51
+ };
52
+ AuthorizeNetPopup.openAddShippingPopup = function() {
53
+ openSpecificPopup({action:"addShipping", shippingAddressId:"new"});
54
+ };
55
+ AuthorizeNetPopup.openEditShippingPopup = function(shippingAddressId) {
56
+ openSpecificPopup({action:"editShipping", shippingAddressId:shippingAddressId});
57
+ };
58
+ AuthorizeNetPopup.onReceiveCommunication = function (querystr) {
59
+ var params = parseQueryString(querystr);
60
+ switch(params["action"]) {
61
+ case "successfulSave":
62
+ AuthorizeNetPopup.closePopup();
63
+ break;
64
+ case "cancel":
65
+ AuthorizeNetPopup.closePopup();
66
+ break;
67
+ case "resizeWindow":
68
+ var w = parseInt(params["width"]);
69
+ var h = parseInt(params["height"]);
70
+ var ifrm = document.getElementById("iframeAuthorizeNet");
71
+ ifrm.style.width = w.toString() + "px";
72
+ ifrm.style.height = h.toString() + "px";
73
+ centerPopup();
74
+ adjustPopupScreen();
75
+ break;
76
+ }
77
+ };
78
+ function openSpecificPopup(opt) {
79
+ var popup = document.getElementById("divAuthorizeNetPopup");
80
+ var popupScreen = document.getElementById("divAuthorizeNetPopupScreen");
81
+ var ifrm = document.getElementById("iframeAuthorizeNet");
82
+ var form = document.forms["formAuthorizeNetPopup"];
83
+
84
+ switch (opt.action) {
85
+ case "addPayment":
86
+ ifrm.style.width = "435px";
87
+ ifrm.style.height = AuthorizeNetPopup.options.eCheckEnabled ? "508px" : "479px";
88
+ break;
89
+ case "editPayment":
90
+ ifrm.style.width = "435px";
91
+ ifrm.style.height = "479px";
92
+ break;
93
+ case "addShipping":
94
+ ifrm.style.width = "385px";
95
+ ifrm.style.height = "359px";
96
+ break;
97
+ case "editShipping":
98
+ ifrm.style.width = "385px";
99
+ ifrm.style.height = "359px";
100
+ break;
101
+ case "manage":
102
+ ifrm.style.width = "442px";
103
+ ifrm.style.height = "578px";
104
+ break;
105
+ }
106
+
107
+ if (!AuthorizeNetPopup.options.skipZIndexCheck) {
108
+ var zIndexHightest = getHightestZIndex();
109
+ popup.style.zIndex = zIndexHightest + 2;
110
+ popupScreen.style.zIndex = zIndexHightest + 1;
111
+ }
112
+
113
+ if (AuthorizeNetPopup.options.useTestEnvironment) {
114
+ form.action = "https://test.authorize.net/profile/" + opt.action;
115
+ } else {
116
+ form.action = "https://secure.authorize.net/profile/" + opt.action;
117
+ }
118
+ if (form.elements["PaymentProfileId"]) form.elements["PaymentProfileId"].value = opt.paymentProfileId ? opt.paymentProfileId : "";
119
+ if (form.elements["ShippingAddressId"]) form.elements["ShippingAddressId"].value = opt.shippingAddressId ? opt.shippingAddressId : "";
120
+ form.submit();
121
+
122
+ popup.style.display = "";
123
+ popupScreen.style.display = "";
124
+ centerPopup();
125
+ adjustPopupScreen();
126
+ };
127
+ function centerPopup() {
128
+ var d = document.getElementById("divAuthorizeNetPopup");
129
+ d.style.left = "50%";
130
+ d.style.top = "50%";
131
+ var left = -Math.floor(d.clientWidth / 2);
132
+ var top = -Math.floor(d.clientHeight / 2);
133
+ d.style.marginLeft = left.toString() + "px";
134
+ d.style.marginTop = top.toString() + "px";
135
+ if (d.offsetLeft < 16) {
136
+ d.style.left = "16px";
137
+ d.style.marginLeft = "0px";
138
+ }
139
+ if (d.offsetTop < 16) {
140
+ d.style.top = "16px";
141
+ d.style.marginTop = "0px";
142
+ }
143
+ }
144
+ function adjustPopupScreen() { // IE6 fix
145
+ var popupScreen = document.getElementById("divAuthorizeNetPopupScreen");
146
+ if (popupScreen.currentStyle && popupScreen.currentStyle.position == "absolute") {
147
+ if (popupScreen.clientHeight < document.documentElement.scrollHeight) {
148
+ popupScreen.style.height = document.documentElement.scrollHeight.toString() + "px";
149
+ }
150
+ if (popupScreen.clientWidth < document.documentElement.scrollWidth) {
151
+ popupScreen.style.width = document.documentElement.scrollWidth.toString() + "px";
152
+ }
153
+ }
154
+ }
155
+ function getHightestZIndex() {
156
+ var max = 0;
157
+ var z = 0;
158
+ var a = document.getElementsByTagName('*');
159
+ for (var i = 0; i < a.length; i++) {
160
+ z = 0;
161
+ if (a[i].currentStyle) {
162
+ var style = a[i].currentStyle;
163
+ if (style.display != "none") {
164
+ z = parseFloat(style.zIndex);
165
+ }
166
+ } else if (window.getComputedStyle) {
167
+ var style = window.getComputedStyle(a[i], null);
168
+ if (style.getPropertyValue("display") != "none") {
169
+ z = parseFloat(style.getPropertyValue("z-index"));
170
+ }
171
+ }
172
+ if (!isNaN(z) && z > max) max = z;
173
+ }
174
+ return Math.ceil(max);
175
+ }
176
+ function parseQueryString(str) {
177
+ var vars = [];
178
+ var arr = str.split('&');
179
+ var pair;
180
+ for (var i = 0; i < arr.length; i++) {
181
+ pair = arr[i].split('=');
182
+ vars.push(pair[0]);
183
+ vars[pair[0]] = unescape(pair[1]);
184
+ }
185
+ return vars;
186
+ }
187
+ } ());
@@ -56,13 +56,18 @@ Caboose.Store.Modules.Cart = (function() {
56
56
  };
57
57
 
58
58
  self.render_item_count = function(item_count) {
59
- var $link = $('#cart-link, .cart-link');
60
- if (!$link.length) return false;
61
-
62
- function set_count(count) {
63
- if ($link.children('i') && count < 1) { $link.children('i').remove(); }
64
- else if ($link.children('i').length) { $link.children('i').empty().text(count); }
65
- else { $link.append($('<i/>').text(count)); }
59
+ var $link = $('#cart-link, .cart-link');
60
+ //if (!$link.length) return false;
61
+
62
+ function set_count(count) {
63
+ if ($('#cart_item_count').length > 0)
64
+ $('#cart_item_count').html(count);
65
+ else if ($link.length > 0)
66
+ {
67
+ if ($link.children('i') && count < 1) { $link.children('i').remove(); }
68
+ else if ($link.children('i').length) { $link.children('i').empty().text(count); }
69
+ else { $link.append($('<i/>').text(count)); }
70
+ }
66
71
  };
67
72
 
68
73
  if (item_count) {
@@ -94,7 +99,7 @@ Caboose.Store.Modules.Cart = (function() {
94
99
  type: $form.attr('method'),
95
100
  url: $form.attr('action'),
96
101
  data: $form.serialize(),
97
- success: function(response) {
102
+ success: function(response) {
98
103
  if (response.success) {
99
104
  self.render_item_count(response.item_count);
100
105
  if (self.$add_to_cart.length) self.$add_to_cart.trigger('added');
@@ -7,13 +7,13 @@ Caboose.Store.Modules.CheckoutStep4 = (function() {
7
7
 
8
8
  self.initialize = function() {
9
9
  $('#checkout-confirm').hide();
10
- //$('#relay').hide();
10
+ $('#relay').hide();
11
11
  self.bind_event_handlers();
12
12
  self.expiration_change_handler();
13
13
  };
14
14
 
15
15
  self.bind_event_handlers = function() {
16
- $('#checkout-payment form#payment select').change(self.expiration_change_handler);
16
+ $('#payment select').change(self.expiration_change_handler);
17
17
  $('#checkout-continue button').click(self.continue_handler);
18
18
  $('#checkout-confirm #edit_payment').click(self.edit_payment_handler);
19
19
 
@@ -29,8 +29,7 @@ Caboose.Store.Modules.CheckoutStep4 = (function() {
29
29
  $('#expiration').val(month + year);
30
30
  };
31
31
 
32
- self.continue_handler = function(event) {
33
- alert('Testing');
32
+ self.continue_handler = function(event) {
34
33
  if (!self.is_confirm)
35
34
  {
36
35
  var cc = $('#billing-cc-number').val();
@@ -40,9 +39,7 @@ Caboose.Store.Modules.CheckoutStep4 = (function() {
40
39
  {
41
40
  $('#message').empty();
42
41
  $('#checkout-payment').hide();
43
- $('#checkout-confirm').show();
44
- $('#checkout_nav4 a').removeClass('current').addClass('done');
45
- $('#checkout_nav5 a').removeClass('not_done').addClass('current');
42
+ $('#checkout-confirm').show();
46
43
  $('#confirm_card_number').html("Card ending in " + cc.substr(-4));
47
44
  $('#checkout-continue button').html("Confirm order");
48
45
  self.is_confirm = true;
@@ -89,10 +86,11 @@ Caboose.Store.Modules.CheckoutStep4 = (function() {
89
86
  function relay_handler(resp)
90
87
  {
91
88
  console.log('RELAY');
89
+ console.log(resp);
92
90
  if (resp.success == true)
93
91
  window.location = '/checkout/thanks';
94
- else if (resp.message)
95
- $('#message').html("<p class='note error'>" + resp.message + "</p>");
92
+ else if (resp.error)
93
+ $('#message').html("<p class='note error'>" + resp.error + "</p>");
96
94
  else
97
95
  $('#message').html("<p class='note error'>There was an error processing your payment.</p>");
98
96
  }
@@ -0,0 +1,7 @@
1
+ Repconnex
2
+ api_login_id: 3a79FjaHV
3
+ api_transaction_key: 3K4v7n423KvA5R9P
4
+
5
+ Locker Room
6
+ 47G9Y5vvQt
7
+ 4U6zLSj9u5V4Cq8B
@@ -55,10 +55,16 @@ module Caboose
55
55
  # Initialize the cart in the session
56
56
  def init_cart
57
57
  # Check if the cart ID is defined and that it exists in the database
58
- if !session[:cart_id] || !Caboose::Order.exists?(session[:cart_id])
58
+ create_new_order = false
59
+ if session[:cart_id]
60
+ @order = Caboose::Order.where(:id => session[:cart_id]).first
61
+ create_new_order = true if @order.nil? || @order.status != 'cart'
62
+ else
63
+ create_new_order = true
64
+ end
59
65
 
60
- # Create an order to associate with the session
61
- order = Caboose::Order.create(
66
+ if create_new_order # Create an order to associate with the session
67
+ @order = Caboose::Order.create(
62
68
  :site_id => @site.id,
63
69
  :status => Caboose::Order::STATUS_CART,
64
70
  :financial_status => Caboose::Order::STATUS_PENDING,
@@ -67,13 +73,9 @@ module Caboose
67
73
  :landing_page => request.fullpath,
68
74
  :landing_page_ref => params[:ref] || nil
69
75
  )
70
-
71
- # Define the cart ID
72
- session[:cart_id] = order.id
73
- end
74
-
75
- # Log the order and set an instance variable up
76
- @order = Caboose::Order.find(session[:cart_id])
76
+ # Save the cart ID in the session
77
+ session[:cart_id] = @order.id
78
+ end
77
79
  end
78
80
 
79
81
  # Parses any parameters in the URL and adds them to the params
@@ -12,7 +12,7 @@ module Caboose
12
12
 
13
13
  # GET /cart/item-count
14
14
  def item_count
15
- render :json => { :item_count => @order.line_items.count }
15
+ render :json => { :item_count => @order.item_count }
16
16
  end
17
17
 
18
18
  # POST /cart
@@ -30,11 +30,11 @@ module Caboose
30
30
  :quantity => qty,
31
31
  :status => 'pending'
32
32
  )
33
- end
33
+ end
34
34
  render :json => {
35
35
  :success => li.save,
36
36
  :errors => li.errors.full_messages,
37
- :item_count => @order.line_items.count
37
+ :item_count => @order.item_count
38
38
  }
39
39
  end
40
40
 
@@ -1,35 +1,10 @@
1
- #def calc_shipping_rates(order)
2
- # weight = 0.0
3
- # order.line_items.each do |li|
4
- # w = li.variant.weight ? li.variant.weight : 0.0
5
- # weight = weight + (w * li.quantity)
6
- # end
7
- #
8
- # shipping = 0.0
9
- # shipping = 8.00 if weight >= 0.010 && weight <= 3.000
10
- # shipping = 10.00 if weight >= 3.001 && weight <= 6.000
11
- # shipping = 12.00 if weight >= 6.001 && weight <= 8.000
12
- # shipping = 15.00 if weight >= 8.001 && weight <= 12.000
13
- # shipping = order.total * 0.05 if weight > 12.000
14
- #
15
- # rates = [
16
- # { :carrier => 'UPS' , :service_code => 'GND' , :service_name => 'Ground' , :total_price => shipping + (order.total > 49 ? 0.00 : 7.95) },
17
- # { :carrier => 'UPS' , :service_code => '3DS' , :service_name => 'UPS 3 Day Air' , :total_price => shipping + 12.95 },
18
- # { :carrier => 'UPS' , :service_code => '2DA' , :service_name => 'UPS 2 Day Air' , :total_price => shipping + 19.95 },
19
- # { :carrier => 'UPS' , :service_code => '1DA' , :service_name => 'UPS Next Day Air' , :total_price => shipping + 32.95 },
20
- # { :carrier => 'USPS' , :service_code => 'Priority Mail 3-Day' , :service_name => 'USPS Priority Mail' , :total_price => shipping + 12.95 },
21
- # { :carrier => 'USPS' , :service_code => 'Priority Mail 2-Day' , :service_name => 'USPS Express Mail' , :total_price => shipping + 24.95 }
22
- # ]
23
- #
24
- # return [rates]
25
- #end
26
1
 
27
2
  module Caboose
28
3
  class CheckoutController < Caboose::ApplicationController
29
4
 
30
5
  helper :authorize_net
31
6
  before_filter :ensure_line_items, :only => [:step_one, :step_two]
32
- protect_from_forgery :except => :relay
7
+ protect_from_forgery :except => :authnet_relay
33
8
 
34
9
  def ensure_line_items
35
10
  redirect_to '/checkout/empty' if @order.line_items.empty?
@@ -94,14 +69,20 @@ module Caboose
94
69
  store_config = @site.store_config
95
70
  case store_config.pp_name
96
71
  when 'authorize.net'
72
+
73
+ sc = @site.store_config
97
74
  @sim_transaction = AuthorizeNet::SIM::Transaction.new(
98
- store_config.pp_username,
99
- store_config.pp_password,
100
- @order.total,
101
- :relay_url => "#{Caboose::store_url}/checkout/relay/#{@order.id}",
102
- :transaction_type => 'AUTH_ONLY',
75
+ sc.pp_username,
76
+ sc.pp_password,
77
+ @order.total,
78
+ #:relay_url => "#{request.protocol}#{request.host_with_port}/checkout/authnet-relay/#{@order.id}",
79
+ :relay_response => 'TRUE',
80
+ :relay_url => "#{request.protocol}#{request.host_with_port}/checkout/authnet-relay",
81
+ :transaction_type => 'AUTH_ONLY',
103
82
  :test => true
104
83
  )
84
+ @request = request
85
+
105
86
  when 'payscape'
106
87
  @form_url = Caboose::PaymentProcessor.form_url(@order)
107
88
  end
@@ -250,45 +231,54 @@ module Caboose
250
231
  # end
251
232
  # render :layout => false
252
233
  #end
253
-
254
- # POST /checkout/relay/:order_id
255
- def relay
256
- ap '--HOOK RELAY'
257
- @order = Caboose::Order.find(params[:order_id])
258
- @success = Caboose::PaymentProcessor.authorize(@order, params)
259
- @message = @success ? 'Payment processed successfully' : 'There was a problem processing your payment'
234
+
235
+ # POST /checkout/authnet-relay
236
+ def authnet_relay
237
+ Caboose.log("Authorize.net relay, order #{params[:x_invoice_id]}")
260
238
 
261
- #case Caboose::payment_processor
262
- # when 'authorize.net'
263
- # @success = params[:x_response_code] == '1'
264
- # @message = jarams[:x_response_reason_text]
265
- # @order.transaction_id = params[:x_trans_id] if params[:x_trans_id]
266
- # when 'payscape'
267
- # @success = Caboose::PaymentProcessor.authorize(@order, params)
268
- # @message = @success ? 'Payment processed successfully' : 'There was a problem processing your payment'
269
- # @order.transaction_id = params['transaction-id'] if params['transaction-id']
270
- #end
239
+ order = Caboose::Order.find(params[:x_invoice_num])
240
+ order.transaction_id = params[:x_trans_id] if params[:x_trans_id]
241
+ success = params[:x_response_code] && params[:x_response_code] == '1'
271
242
 
272
- if @success
273
- @order.financial_status = 'authorized'
274
- @order.status = 'pending'
275
- @order.date_authorized = DateTime.now
276
- @order.auth_amount = @order.total
277
-
278
- # Clear cart
279
- session[:cart_id] = nil
243
+ if success
244
+ order.financial_status = 'authorized'
245
+ order.status = 'pending'
246
+ order.date_authorized = DateTime.now
247
+ order.auth_amount = order.total
280
248
 
281
249
  # Send out emails
282
- OrdersMailer.customer_new_order(@order).deliver
283
- OrdersMailer.fulfillment_new_order(@order).deliver
250
+ OrdersMailer.customer_new_order(order).deliver
251
+ OrdersMailer.fulfillment_new_order(order).deliver
284
252
 
285
253
  # Emit order event
286
- Caboose.plugin_hook('order_authorized', @order)
254
+ Caboose.plugin_hook('order_authorized', order)
287
255
  else
288
- @order.financial_status = 'unauthorized'
256
+ order.financial_status = 'unauthorized'
257
+ error = "There was a problem processing your payment."
258
+ end
259
+
260
+ order.save
261
+
262
+ @url = params[:x_after_relay]
263
+ @url << (success ? "?success=1" : "?error=#{error}")
264
+
265
+ render :layout => false
266
+ end
267
+
268
+ # GET /checkout/authnet-response/:order_id
269
+ # POST /checkout/authnet-response/:order_id
270
+ def authnet_response
271
+ Caboose.log("Authorize.net response, order #{params[:order_id]}")
272
+
273
+ @resp = Caboose::StdClass.new
274
+ @resp.success = true if params[:success]
275
+ @resp.error = params[:error] if params[:error]
276
+
277
+ if @resp.success
278
+ session[:cart_id] = nil
279
+ init_cart
289
280
  end
290
281
 
291
- @order.save
292
282
  render :layout => false
293
283
  end
294
284