/** * {@inheritdoc} */ public function buildForm(OrderInterface $order, array $form, FormStateInterface $form_state) { $options = array(); $methods = PaymentMethod::loadMultiple(); uasort($methods, 'Drupal\\uc_payment\\Entity\\PaymentMethod::sort'); foreach ($methods as $method) { $options[$method->id()] = $method->label(); } $form['payment_method'] = array('#type' => 'select', '#title' => $this->t('Payment method'), '#default_value' => $order->getPaymentMethodId(), '#options' => $options, '#ajax' => array('callback' => array($this, 'ajaxCallback'), 'progress' => array('type' => 'throbber'), 'wrapper' => 'payment-details')); $form['payment_details'] = array('#tree' => TRUE, '#prefix' => '<div id="payment-details">', '#suffix' => '</div>'); $method = $form_state->getValue('payment_method') ?: $order->getPaymentMethodId(); if ($method && ($details = PaymentMethod::load($method)->getPlugin()->orderEditDetails($order))) { if (is_array($details)) { $form['payment_details'] += $details; } else { $form['payment_details']['#markup'] = $details; } } return $form; }
/** * Returns an instance of the payment method plugin for a specific order. * * @param \Drupal\uc_order\OrderInterface $order * The order from which the plugin should be instantiated. * * @return \Drupal\uc_payment\PaymentMethodPluginInterface * A fully configured plugin instance. */ public function createFromOrder(OrderInterface $order) { return PaymentMethod::load($order->getPaymentMethodId())->getPlugin(); }
public function getPaymentPluginId($uc_payment_methodId) { return PaymentMethod::load($uc_payment_methodId)->getPlugin()->getPluginId(); }