OrderActionsForm::dopayment PHP Method

dopayment() public method

Make payment for a place order, where payment had previously failed.
public dopayment ( array $data, Form $form ) : boolean
$data array
$form Form
return boolean
    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();
    }

Usage Example

コード例 #1
0
 public function testForm()
 {
     $order = $this->objFromFixture("Order", "unpaid");
     OrderManipulation::add_session_order($order);
     $controller = new CheckoutPage_Controller($this->objFromFixture("CheckoutPage", "checkout"));
     $form = new OrderActionsForm($controller, "ActionsForm", $order);
     $form->dopayment(array('OrderID' => $order->ID, 'PaymentMethod' => 'Dummy'), $form);
     $this->assertEquals(1, $order->Payments()->count());
 }