private function WebformCivicrmPostProcess::createDeferredPayment in Webform CiviCRM Integration 8.5
Create Pending (Pay Later) Contribution
1 call to WebformCivicrmPostProcess::createDeferredPayment()
- WebformCivicrmPostProcess::preSave in src/
WebformCivicrmPostProcess.php - Process webform submission when it is about to be saved. Called by the following hook:
File
- src/
WebformCivicrmPostProcess.php, line 2046 - Front-end form validation and post-processing.
Class
Namespace
Drupal\webform_civicrmCode
private function createDeferredPayment() {
$this->contributionIsIncomplete = TRUE;
$this->contributionIsPayLater = FALSE;
$paymentProcessorID = NestedArray::getValue($this->data, [
'contribution',
'1',
'contribution',
'1',
'payment_processor_id',
]);
if (empty($paymentProcessorID)) {
$this->contributionIsPayLater = TRUE;
}
else {
$paymentProcessorClassName = civicrm_api3('PaymentProcessor', 'getvalue', [
'return' => 'class_name',
'id' => $paymentProcessorID,
]);
if ($paymentProcessorClassName === 'Payment_Manual') {
$this->contributionIsPayLater = TRUE;
}
}
$params = $this
->contributionParams();
$params['contribution_status_id'] = 'Pending';
$params['is_pay_later'] = $this->contributionIsPayLater;
$numInstallments = wf_crm_aval($params, 'installments', NULL, TRUE);
$frequencyInterval = wf_crm_aval($params, 'frequency_unit');
if ($numInstallments != 1 && !empty($frequencyInterval) && $this->contributionIsPayLater) {
$result = $this
->contributionRecur($params, 'deferred');
}
else {
$result = \Drupal::service('webform_civicrm.utils')
->wf_civicrm_api('contribution', 'create', $params);
}
$this->ent['contribution'][1]['id'] = $result['id'];
}