acquia_commercemanager-8.x-1.122/modules/acm_payment/src/Plugin/PaymentMethod/PaymentMethodBase.php

modules/acm_payment/src/Plugin/PaymentMethod/PaymentMethodBase.php
<?php

namespace Drupal\acm_payment\Plugin\PaymentMethod;

use Drupal\acm_cart\CartInterface;
use Drupal\Component\Utility\NestedArray;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Plugin\PluginBase;

/**
 * Base class for ACM Payment Method plugins.
 */
abstract class PaymentMethodBase extends PluginBase implements PaymentMethodInterface {

  /**
   * The shopping cart.
   *
   * @var \Drupal\acm_cart\Cart
   */
  protected $cart;

  /**
   * Constructs a new PaymentMethodBase object.
   *
   * @param array $configuration
   *   A configuration array containing information about the plugin instance.
   * @param string $plugin_id
   *   The plugin_id for the plugin instance.
   * @param mixed $plugin_definition
   *   The plugin implementation definition.
   * @param \Drupal\acm_cart\CartInterface $cart
   *   The shopping cart.
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, CartInterface $cart) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);

    $this->cart = $cart;
    $this->setConfiguration($configuration);
  }

  /**
   * {@inheritdoc}
   */
  public function getCart() {
    return $this->cart;
  }

  /**
   * {@inheritdoc}
   */
  public function calculateDependencies() {
    return [
      'module' => [$this->pluginDefinition['provider']],
    ];
  }

  /**
   * {@inheritdoc}
   */
  public function getConfiguration() {
    return $this->configuration;
  }

  /**
   * {@inheritdoc}
   */
  public function setConfiguration(array $configuration) {
    $this->configuration = NestedArray::mergeDeep($this->defaultConfiguration(), $configuration);
  }

  /**
   * {@inheritdoc}
   */
  public function defaultConfiguration() {
    return [
      'weight' => 0,
    ];
  }

  /**
   * {@inheritdoc}
   */
  public function getId() {
    return $this->pluginId;
  }

  /**
   * {@inheritdoc}
   */
  public function getLabel() {
    return $this->pluginDefinition['label'];
  }

  /**
   * {@inheritdoc}
   */
  public function getWeight() {
    return $this->configuration['weight'];
  }

  /**
   * {@inheritdoc}
   */
  public function setWeight($weight) {
    $this->configuration['weight'] = $weight;
  }

  /**
   * {@inheritdoc}
   */
  public function isVisible() {
    return TRUE;
  }

  /**
   * {@inheritdoc}
   */
  public function buildPaymentSummary() {
    return 'Credit Cart Details here';
  }

  /**
   * {@inheritdoc}
   */
  public function buildPaneForm(array $pane_form, FormStateInterface $form_state, array &$complete_form) {
    $pane_form['payment_details'] = [
      '#type' => 'container',
      '#attributes' => [
        'id' => ['payment_details'],
      ],
    ];

    $pane_form['payment_details'] += $this->buildPaymentForm($pane_form['payment_details'], $form_state, $complete_form);
    return $pane_form;
  }

  /**
   * {@inheritdoc}
   */
  public function buildPaymentForm(array $pane_form, FormStateInterface $form_state, array &$complete_form) {
    $pane_form['cc_number'] = [
      '#type' => 'tel',
      '#title' => $this->t('Credit Card Number'),
      '#default_value' => '',
      '#required' => TRUE,
      '#placeholder' => $this->t('1111 1111 1111 1111'),
    ];
    $pane_form['cc_exp_month'] = [
      '#type' => 'select',
      '#title' => $this->t('Expiration Month'),
      '#options' => [
        '01' => '01',
        '02' => '02',
        '03' => '03',
        '04' => '04',
        '05' => '05',
        '06' => '06',
        '07' => '07',
        '08' => '08',
        '09' => '09',
        '10' => '10',
        '11' => '11',
        '12' => '12',
      ],
      '#default_value' => '',
      '#required' => TRUE,
    ];
    $year_options = [];
    $years_out = 10;
    for ($i = 0; $i <= $years_out; $i++) {
      $year = date('Y', strtotime("+{$i} year"));
      $year_options[$year] = $year;
    }
    $pane_form['cc_exp_year'] = [
      '#type' => 'select',
      '#title' => $this->t('Expiration Year'),
      '#options' => $year_options,
      '#default_value' => '',
      '#required' => TRUE,
    ];
    $pane_form['cc_cvv'] = [
      '#type' => 'textfield',
      '#title' => $this->t('CVV'),
      '#default_value' => '',
      '#required' => TRUE,
      '#placeholder' => $this->t('123'),
    ];

    return $pane_form;
  }

  /**
   * {@inheritdoc}
   */
  public function validatePaymentForm(array &$pane_form, FormStateInterface $form_state, array &$complete_form) {
  }

  /**
   * {@inheritdoc}
   */
  public function submitPaymentForm(array &$pane_form, FormStateInterface $form_state, array &$complete_form) {
    $values = $form_state->getValue($pane_form['#parents']);
    $payment_details = $values['payment_details'];

    $cart = $this->getCart();
    $cart->setPaymentMethodData([
      'cc_type' => '',
      'cc_exp_month' => $payment_details['cc_exp_month'],
      'cc_exp_year' => $payment_details['cc_exp_year'],
      'cc_number' => $payment_details['cc_number'],
      'cc_cvv' => $payment_details['cc_cvv'],
    ]);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc