public function dopayment($data, $form)
{
if (self::config()->allow_paying && $this->order && $this->order->canPay()) {
// Save payment data from form and process payment
$data = $form->getData();
$gateway = !empty($data['PaymentMethod']) ? $data['PaymentMethod'] : null;
if (!GatewayInfo::isManual($gateway)) {
/** @var OrderProcessor $processor */
$processor = OrderProcessor::create($this->order);
$response = $processor->makePayment($gateway, $data, $processor->getReturnUrl());
if ($response && !$response->isError()) {
return $response->redirectOrRespond();
} else {
$form->sessionMessage($processor->getError(), 'bad');
}
} else {
$form->sessionMessage(_t('OrderActionsForm.ManualNotAllowed', "Manual payment not allowed"), 'bad');
}
return $this->controller->redirectBack();
}
$form->sessionMessage(_t('OrderForm.CouldNotProcessPayment', 'Payment could not be processed.'), 'bad');
$this->controller->redirectBack();
}