View difference between Paste ID: b25iqnPh and Sx20PSCr
SHOW: | | - or go back to the newest paste.
1
<?php
2
function custom_ajax_order_review_refresh_form_commerce_checkout_form_review_alter(&$form, &$form_state) {
3
  // give the form a custom callback
4
  $form['commerce_payment']['payment_method']['#ajax']['callback'] = "custom_ajax_order_review_refresh_custom_callback";
5
  // refresh the current order
6
  commerce_cart_order_refresh($form_state['order']);
7
}
8
9
function custom_ajax_order_review_refresh_custom_callback(&$form, $form_state) {
10
  // load the current order
11
  $order_id = $form_state['order']->order_id;
12
  $order = commerce_order_load($order_id);
13
  // set the newly selected payment option to the order
14
  $order->data['payment_method'] = $form['commerce_payment']['payment_method']['#default_value'];
15
  // refresh the current order (more specific: update it's line items
16
  commerce_cart_order_refresh($order);
17
  // save the refreshed order (more specific: recalculate the order total and save it)
18
  commerce_order_save($order);
19
  // define the ajax commands and refresh the targeted fieldsets
20
  $commands = array();
21
  $commands[] = ajax_command_replace('#payment-details', render($form['commerce_payment']['payment_details']));
22
  $commands[] = ajax_command_replace('.view-commerce-cart-summary', views_embed_view('commerce_cart_summary', 'default', $order_id));
23
  return array('#type' => 'ajax', '#commands' => $commands);
24
}