public function GetValidPaymentMethodsSelectableByTheUser()
    {
        $oPaymentMethods = clone $this->GetValidPaymentMethods(true);
        $aInvalidMethods = array();
        $oPaymentMethods->GoToStart();
        while ($oPaymentMethod = $oPaymentMethods->Next()) {
            $oHandler = $oPaymentMethod->GetFieldShopPaymentHandler();
            if ($oHandler && $oHandler->isBlockForUserSelection()) {
                $aInvalidMethods[] = MySqlLegacySupport::getInstance()->real_escape_string($oPaymentMethod->id);
            }
        }
        if (count($aInvalidMethods) > 0) {
            $oPaymentMethods->AddFilterString("`shop_payment_method`.`id` NOT IN ('".implode("','", $aInvalidMethods)."')");
        }
        $oPaymentMethods->GoToStart();

        return $oPaymentMethods;
    }