You are here

class PaymentOffsiteForm in Commerce Core 8.2

Same name in this branch
  1. 8.2 modules/payment/src/PluginForm/PaymentOffsiteForm.php \Drupal\commerce_payment\PluginForm\PaymentOffsiteForm
  2. 8.2 modules/payment_example/src/PluginForm/OffsiteRedirect/PaymentOffsiteForm.php \Drupal\commerce_payment_example\PluginForm\OffsiteRedirect\PaymentOffsiteForm

Hierarchy

Expanded class hierarchy of PaymentOffsiteForm

File

modules/payment_example/src/PluginForm/OffsiteRedirect/PaymentOffsiteForm.php, line 10

Namespace

Drupal\commerce_payment_example\PluginForm\OffsiteRedirect
View source
class PaymentOffsiteForm extends BasePaymentOffsiteForm {

  /**
   * {@inheritdoc}
   */
  public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
    $form = parent::buildConfigurationForm($form, $form_state);

    /** @var \Drupal\commerce_payment\Entity\PaymentInterface $payment */
    $payment = $this->entity;

    /** @var \Drupal\commerce_payment\Plugin\Commerce\PaymentGateway\OffsitePaymentGatewayInterface $payment_gateway_plugin */
    $payment_gateway_plugin = $payment
      ->getPaymentGateway()
      ->getPlugin();
    $redirect_method = $payment_gateway_plugin
      ->getConfiguration()['redirect_method'];
    $remove_js = $redirect_method == 'post_manual';
    if (in_array($redirect_method, [
      'post',
      'post_manual',
    ])) {
      $redirect_url = Url::fromRoute('commerce_payment_example.dummy_redirect_post')
        ->toString();
      $redirect_method = 'post';
    }
    else {

      // Gateways that use the GET redirect method usually perform an API call
      // that prepares the remote payment and provides the actual url to
      // redirect to. Any params received from that API call that need to be
      // persisted until later payment creation can be saved in $order->data.
      // Example: $order->setData('my_gateway', ['test' => '123']), followed
      // by an $order->save().
      $order = $payment
        ->getOrder();

      // Simulate an API call failing and throwing an exception, for test purposes.
      // See PaymentCheckoutTest::testFailedCheckoutWithOffsiteRedirectGet().
      if ($order
        ->getBillingProfile()
        ->get('address')->family_name == 'FAIL') {
        throw new PaymentGatewayException('Could not get the redirect URL.');
      }
      $redirect_url = Url::fromRoute('commerce_payment_example.dummy_redirect_302', [], [
        'absolute' => TRUE,
      ])
        ->toString();
    }
    $data = [
      'return' => $form['#return_url'],
      'cancel' => $form['#cancel_url'],
      'total' => $payment
        ->getAmount()
        ->getNumber(),
    ];
    $form = $this
      ->buildRedirectForm($form, $form_state, $redirect_url, $data, $redirect_method);
    if ($remove_js) {

      // Disable the javascript that auto-clicks the Submit button.
      unset($form['#attached']['library']);
    }
    return $form;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
PaymentGatewayFormBase::$entity protected property The form entity.
PaymentGatewayFormBase::getEntity public function Gets the form entity. Overrides PaymentGatewayFormInterface::getEntity
PaymentGatewayFormBase::getErrorElement public function Gets the form element to which errors should be assigned. Overrides PaymentGatewayFormInterface::getErrorElement 1
PaymentGatewayFormBase::setEntity public function Sets the form entity. Overrides PaymentGatewayFormInterface::setEntity
PaymentOffsiteForm::buildConfigurationForm public function Form constructor. Overrides PaymentOffsiteForm::buildConfigurationForm
PaymentOffsiteForm::buildRedirectForm protected function Builds the redirect form.
PaymentOffsiteForm::processRedirectForm public static function Prepares the complete form for a POST redirect.
PaymentOffsiteForm::REDIRECT_GET constant
PaymentOffsiteForm::REDIRECT_POST constant
PaymentOffsiteForm::submitConfigurationForm public function Form submission handler. Overrides PluginFormInterface::submitConfigurationForm
PluginFormBase::$plugin protected property The plugin this form is for. 3
PluginFormBase::setPlugin public function Sets the plugin for this object. Overrides PluginAwareInterface::setPlugin 1
PluginFormBase::validateConfigurationForm public function Form validation handler. Overrides PluginFormInterface::validateConfigurationForm 2
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.