You are here

private function WebformCivicrmPostProcess::submitLivePayment in Webform CiviCRM Integration 8.5

Execute payment processor transaction This happens during form validation and sets a form error if unsuccessful

1 call to WebformCivicrmPostProcess::submitLivePayment()
WebformCivicrmPostProcess::validate in src/WebformCivicrmPostProcess.php
Called after a webform is submitted Or, for a multipage form, called after each page

File

src/WebformCivicrmPostProcess.php, line 1931
Front-end form validation and post-processing.

Class

WebformCivicrmPostProcess

Namespace

Drupal\webform_civicrm

Code

private function submitLivePayment() {
  $contributionParams = $this
    ->contributionParams();
  $utils = \Drupal::service('webform_civicrm.utils');

  // Only if #installments = 1, do we process a single transaction/contribution. #installments = 0 (or not set) in CiviCRM Core means open ended commitment;
  $numInstallments = wf_crm_aval($contributionParams, 'installments', NULL, TRUE);
  $frequencyInterval = wf_crm_aval($contributionParams, 'frequency_unit');
  if ($numInstallments != 1 && !empty($frequencyInterval)) {
    $result = $this
      ->contributionRecur($contributionParams);
  }
  else {
    $result = $utils
      ->wf_civicrm_api('contribution', 'transact', $contributionParams);
  }
  if (empty($result['id'])) {
    if (!empty($result['error_message'])) {
      $this->form_state
        ->setErrorByName('contribution', $result['error_message']);
    }
    else {
      $this->form_state
        ->setErrorByName('contribution', t('Transaction failed. Please verify all billing fields are correct.'));
    }
    return;
  }
  $this->ent['contribution'][1]['id'] = $result['id'];
}