Option 1: Hook Form Alter
Rules are event-based conditional actions. For "showing" or "hiding" payments, that event it almost always going to be simply showing the form on checkout. So, technically, you could just use hook_form_alter() and locate the checkout pane that has the payment details and modify from there.
A video where I walk you through how to do hook_form_alter: https://youtu.be/xYMd6WDqxKY?t=1m3s (admittedly, this is for a different use case, but I do show you how to locate the form_id and customize the form_alter for whatever situation you're in).
Option 2: Custom Rules Condition
Another option would be to create a rule condition that you can add to your payment gateways. I think this would be more in spirit with how Drupal Commerce works.
Over here, I have shown you how to create a custom Rules action and condition:
Different vat rate per commerce shipping service
There is also a clear example here:
How do I add a new condition in Rules 2?
How to do option 2
As I said above, this is how Drupal Commerce is supposed to work. If you create a custom rule condition (perhaps there's a business server that returns a REST true/false for an A/B comparison) then that condition is exposed in the user interface and keeps the logic in code where it can be maintained separate from being implemented.
- Create the custom rule condition in your custom module with your custom logic
- Add that condition to your payment method: /admin/commerce/config/payment-methods
- Know that every time that payment method might appear (both in checkout and on the order editing payment screen) that rule condition will be run