You are here

function commerce_payment_order_transaction_add_form_submit in Commerce Core 7

Submit callback for commerce_payment_order_transaction_add_form().

File

modules/payment/includes/commerce_payment.forms.inc, line 213
Defines forms for creating and administering payment transactions.

Code

function commerce_payment_order_transaction_add_form_submit($form, &$form_state) {

  // If the "Add payment" button was clicked...
  if (end($form_state['triggering_element']['#array_parents']) == 'add_payment') {

    // Store the payment method in the form state and rebuild the form.
    $form_state['payment_method'] = commerce_payment_method_instance_load($form_state['values']['payment_method']);
    $form_state['rebuild'] = TRUE;
  }
  else {
    $payment_method = $form_state['payment_method'];
    $order = $form_state['order'];

    // Delegate submit to the payment method callback.
    if ($callback = commerce_payment_method_callback($payment_method, 'submit_form_submit')) {
      $charge = array(
        'amount' => $form_state['values']['amount'],
        'currency_code' => $form_state['values']['currency_code'],
      );
      $details_form = !empty($form['payment_terminal']['payment_details']) ? $form['payment_terminal']['payment_details'] : array();
      $details_values = !empty($form_state['values']['payment_details']) ? $form_state['values']['payment_details'] : array();
      $result = $callback($payment_method, $details_form, $details_values, $order, $charge);
      if ($result === FALSE) {
        $form_state['rebuild'] = TRUE;
      }
      else {
        drupal_set_message(t('Payment transaction created.'));
      }
    }
  }
}