? .svn
? example.patch
Index: webform_pay.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/webform_pay/webform_pay.inc,v
retrieving revision 1.1
diff -u -p -r1.1 webform_pay.inc
--- webform_pay.inc	20 Oct 2010 01:22:13 -0000	1.1
+++ webform_pay.inc	27 Dec 2010 18:38:30 -0000
@@ -11,6 +11,7 @@ class webform_pay extends pay_form {
   function form(&$form, &$form_state) {
     // Call form_setup because we won't be calling parent::form.
     $this->form_setup($form, $form_state);
+    $this->pay_method_form($form, $form_state);
 
     $group = $this->handler();
 
@@ -51,6 +52,17 @@ class webform_pay extends pay_form {
       $pay_method = pay_method_load($method_values);
       $pay_method->pay_method_validate($form, $form_state, $method_element);
     }
+
+    $form_state['webform_pay']['values'][] = $values;
+  }
+
+  /**
+   * Override of pay_form::form_submit().
+   */
+  function form_submit($form, &$form_state) {
+    if ($form['details']['page_num']['#value'] == $form['details']['page_count']['#value']) {
+      parent::form_submit($form, &$form_state);
+    }
   }
 }
 
Index: webform_pay.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/webform_pay/webform_pay.module,v
retrieving revision 1.3
diff -u -p -r1.3 webform_pay.module
--- webform_pay.module	20 Oct 2010 03:04:47 -0000	1.3
+++ webform_pay.module	27 Dec 2010 18:38:31 -0000
@@ -186,7 +186,7 @@ function webform_pay_prerender($form) {
 
   // Pre-render functions may get called twice if theming the form, prevent
   // attempts to move the pay form twice.
-  if (!isset($element['#webform_pay_moved'])) {
+  if ($element && !isset($element['#webform_pay_moved'])) {
     // Get the pay form information.
     $pay_form = pay_form_load($component['extra']['pfid']);
     $pay_handler = $pay_form->handler();
@@ -218,6 +218,30 @@ function webform_pay_prerender($form) {
   return $form;
 }
 
+
+/**
+ *  Merge any stored submission data for multistep forms.
+ *  @see webform_client_form_pages().
+ */
+function webform_pay_merge_multistep(&$form, &$form_state) {
+  if (isset($form_state['storage']['submitted'])) {
+
+    $original_values = is_array($form_state['values']['submitted']) ? $form_state['values']['submitted'] : array();
+    unset($form_state['values']['submitted']);
+
+    foreach ($form_state['storage']['submitted'] as $key => $val) {
+      $form_state['values']['submitted'][$key] = $val;
+    }
+    foreach ($original_values as $key => $val) {
+      $form_state['values']['submitted'][$key] = $val;
+    }
+
+    // Remove the variable so it doesn't show up in the additional processing.
+    unset($original_values);
+  }
+}
+
+
 /**
  * Validation function for webforms that accept payment information.
  *
@@ -226,6 +250,9 @@ function webform_pay_prerender($form) {
  * be used for prices.
  */
 function webform_pay_validate(&$form, &$form_state) {
+
+  webform_pay_merge_multistep(&$form, &$form_state);
+
   $node = $form['#node'];
   $pay_cid = $node->webform_pay_cid;
   $component = $node->webform['components'][$pay_cid];
@@ -290,7 +317,7 @@ function webform_pay_validate(&$form, &$
   }
 
   // Set the component value so that it gets saved into the Webform table.
-  form_set_value($element, $form_state['values'][$pay_handler]['pay_method'][$pay_method->pmid], $form_state);
+  if ($element) form_set_value($element, $form_state['values'][$pay_handler]['pay_method'][$pay_method->pmid], $form_state);
 }
 
 function _webform_pay_component_value($node, $component, $values) {
