While one can do some custom coding inside the payment module to make it available only when certain products are in the cart, it does get complicated if you have multiple kinds of rules and a customer puts several products in there cart where the rules start conflicting with one another.
Same problem with shipping. Although, you could set a shipping fee for each individual product by setting the weight to be the shipping price and using the per-item shipping module in weight=price mode. But then it gets complicated again if you have multiple items in the cart and the combination of those items might not actually add up to the combined cost, thus overcharging or undercharging. Everyone's shipping needs are unique. You're best to play around with various options.
Bookmarks