First, thanks to @GerriM for granting me access to her test site so that I could investigate the issues she identified.
There are actually two underlying issues that I've identified and currently opened as issues on the OPC's GitHub repository:
Square payment inputs disappear after shipping-method change
The Square (and possibly other?) payment-method has an external jQuery script that's loaded on a full-page load, so when OPC re-loaded only the payment-selection block, that processing didn't kick in ... resulting in no input fields for the Square credit card information.
My current approach, validated by @GerriM, has its limitations. For the Square module to operate properly when the shipping method changes, it's necessary to
not re-load the payment-choices block. Unfortunately, there are payment methods that
are dependent on the shipping method selected (like enabling a Cash payment only when the shipping-method is store-pickup), so these payment methods absolutely require that the payment-choices' block be updated on a shipping method change.
The approach I plan to take (unless a better solution is proposed) is to add another configuration value to the
One-Page Checkout Configuration, allowing a store-owner to identify payment methods that require no reload of the payment-choices' block; that setting will be initialized to identify the
square method by default. What this means to store-owners utilizing OPC is that you
can't have a combination of payment methods that require the block to be updated and those that require the block not to be updated.
If anyone has a better solution to the issue, I'm open to suggestions!
Taxed order-totals 'lose' their tax on payment method update.
This one was caused by the payment-method update's AJAX not initializing the order's shipping- and payment-classes prior to requesting the order-total modules to perform their calculations.
I'll be updating the OPC's GitHub in the morning with my current changes.