vendor/shopware/core/Checkout/Payment/PaymentMethodCollection.php line 13

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Shopware\Core\Checkout\Payment;
  3. use Shopware\Core\Framework\DataAbstractionLayer\EntityCollection;
  4. use Shopware\Core\Framework\Log\Package;
  5. use Shopware\Core\System\SalesChannel\SalesChannelContext;
  6. /**
  7.  * @extends EntityCollection<PaymentMethodEntity>
  8.  */
  9. #[Package('checkout')]
  10. class PaymentMethodCollection extends EntityCollection
  11. {
  12.     public function filterByActiveRules(SalesChannelContext $salesChannelContext): PaymentMethodCollection
  13.     {
  14.         return $this->filter(
  15.             function (PaymentMethodEntity $paymentMethod) use ($salesChannelContext) {
  16.                 if ($paymentMethod->getAvailabilityRuleId() === null) {
  17.                     return true;
  18.                 }
  19.                 return \in_array($paymentMethod->getAvailabilityRuleId(), $salesChannelContext->getRuleIds(), true);
  20.             }
  21.         );
  22.     }
  23.     /**
  24.      * @return list<string>
  25.      */
  26.     public function getPluginIds(): array
  27.     {
  28.         return $this->fmap(function (PaymentMethodEntity $paymentMethod) {
  29.             return $paymentMethod->getPluginId();
  30.         });
  31.     }
  32.     public function filterByPluginId(string $id): self
  33.     {
  34.         return $this->filter(function (PaymentMethodEntity $paymentMethod) use ($id) {
  35.             return $paymentMethod->getPluginId() === $id;
  36.         });
  37.     }
  38.     /**
  39.      * Sorts the selected payment method first
  40.      * If a different default payment method is defined, it will be sorted second
  41.      * All other payment methods keep their respective sorting
  42.      */
  43.     public function sortPaymentMethodsByPreference(SalesChannelContext $context): void
  44.     {
  45.         $ids array_merge(
  46.             [$context->getPaymentMethod()->getId(), $context->getSalesChannel()->getPaymentMethodId()],
  47.             $this->getIds()
  48.         );
  49.         $this->sortByIdArray($ids);
  50.     }
  51.     public function getApiAlias(): string
  52.     {
  53.         return 'payment_method_collection';
  54.     }
  55.     protected function getExpectedClass(): string
  56.     {
  57.         return PaymentMethodEntity::class;
  58.     }
  59. }