public function PaymentReferenceBase::pay in Payment 8.2
Implements form submit handler.
File
- src/
Element/ PaymentReferenceBase.php, line 456
Class
- PaymentReferenceBase
- Provides a base for payment reference elements.
Namespace
Drupal\payment\ElementCode
public function pay(array $form, FormStateInterface $form_state) {
$triggering_element = $form_state
->getTriggeringElement();
$root_element_parents = array_slice($triggering_element['#array_parents'], 0, -3);
$root_element = NestedArray::getValue($form, $root_element_parents);
$plugin_selector = $this
->getPluginSelector($root_element, $form_state);
$plugin_selector
->submitSelectorForm($root_element['container']['payment_form']['payment_method'], $form_state);
$payment = $this
->getPayment($root_element, $form_state);
$this
->getEntityFormDisplay($root_element, $form_state)
->extractFormValues($payment, $root_element['container']['payment_form'], $form_state);
$payment_method = $plugin_selector
->getSelectedPlugin();
$payment
->setPaymentMethod($payment_method);
$payment
->save();
$result = $payment
->execute();
if (!$result
->isCompleted() && !$this->requestStack
->getCurrentRequest()
->isXmlHttpRequest()) {
$url = $payment
->toUrl('complete');
$url
->setOption('attributes', [
'target' => '_blank',
]);
$link = $this->linkGenerator
->generate($this
->t('Complete payment (opens in a new window).'), $url);
$this
->messenger()
->addMessage($link);
}
$form_state
->setRebuild();
}