public function PaymentOptionsBuilder::selectDefaultOption in Commerce Core 8.2
Selects the default payment option for the given order.
Priority: 1) The order's payment method 2) The order's payment gateway (if it does not support payment methods) 3) First defined option.
Parameters
\Drupal\commerce_order\Entity\OrderInterface $order: The order.
array $options: The options.
Return value
\Drupal\commerce_payment\PaymentOption The selected option.
Overrides PaymentOptionsBuilderInterface::selectDefaultOption
File
- modules/
payment/ src/ PaymentOptionsBuilder.php, line 151
Class
Namespace
Drupal\commerce_paymentCode
public function selectDefaultOption(OrderInterface $order, array $options) {
/** @var \Drupal\commerce_payment\Entity\PaymentGatewayInterface $order_payment_gateway */
$order_payment_gateway = $order
->get('payment_gateway')->entity;
/** @var \Drupal\commerce_payment\Entity\PaymentMethodInterface $order_payment_method */
$order_payment_method = $order
->get('payment_method')->entity;
$default_option_id = NULL;
if ($order_payment_method) {
$default_option_id = $order_payment_method
->id();
}
elseif ($order_payment_gateway && !$order_payment_gateway instanceof SupportsStoredPaymentMethodsInterface) {
$default_option_id = $order_payment_gateway
->id();
}
// The order doesn't have a payment method/gateway specified, or it has, but it is no longer available.
if (!$default_option_id || !isset($options[$default_option_id])) {
$option_ids = array_keys($options);
$default_option_id = reset($option_ids);
}
return $options[$default_option_id];
}