Hi Jim
1. I'm afraid not. There is an Availability rule for payment methods, but it currently does not expose the selected shipping method. It can however make decisions based on the types of products purchased. We would need to enhance the software to allow checking by shipping method. If you like to sponsor this feature, please let us know.
2. It depends on what form of payment you offer. Here are a few ways you can experiment with:
a) Generally, you would want to set the Credit card payment type to Authorize instead of Purchase under Configuration > Payments settings. This works like a credit card at the gas pump where the real dollar amount is known only after you are done filling up. You will then Capture only the amount you need (note, you can only capture a smaller value than the amount authorized).
You can create a shipping method e.g "Shipping (price TBD)" and set a fair amount slightly more than your shipping price. You might want to put a message that the total price will be finalized once the shipping price is known. Once the shipping price is known, you can edit the order and prices and capture only the amount you need.
b) The other way is to enable the None payment method. The problem is this becomes available for all users. You can limit this payment type by types of products but not by shipping method as mentioned in #1 above. Suppose you go with this option, the customer checks out without paying. Once your shipping amount is known. You can simply make sure the order status stays as Ordered and payment status as Incomplete and send an invoice email to the customer. In the email, there's instruction for the customer to get to the Manage Ordermodule where they can resume payment for the order.
3. Yes you can either create a custom template for your Checkout module and rename it in the file or you can edit the language file to rename the "Cash" to something else. If you're editing the language file, the translation is located near this node:
Local Resources
DesktopModules
Revindex.Dnn.RevindexStorefront
Portals
<_default>
Display
Checkout
<StandardSingleStep>
App_LocalResources
Display.cshtml