Here is my solution ;)
(1) In \NopCommerceStore\Modules\CheckoutPaymentMethod.ascx.cs (~ Line 162)
(2) Search for :
bool hasButtonMethods = false;
var boundPaymentMethods = new List<PaymentMethod>();
var paymentMethods = PaymentMethodManager.GetAllPaymentMethods(filterByCountryId);
(3) Add your filter conditions (something like)
var filterPm = PaymentMethodManager.GetPaymentMethodById(25); // Filtred Payment method ID
if (!Page.User.IsInRole("User role to filter")) // Name of the role to filter
{
paymentMethods.Remove(filterPm);
}
(4) Compile and Run ;)
I'm working on something like the filter by country in the admin. To be more useful and less hard code ;) comming soon.