Today I fresh installed a default installation of zc 1.3.9h and tested this issue with no mods nor code edits involved.
I configured it as follows.
Zones: California, Florida
Payment Methods: Check (zone restriction: CA), Charge Card (zone restriction: FL)
I set up a user with a three alternate addresses: CA, FL, and NY.
By testing I have confirmed that the default behavior of zc in the following scenarios with the noted results. I returned to the shopping cart page in each instance to begin checkout again and re-select the shipping and billing addresses.
Billing address CA, Shipping address CA
Payment method: Check (expected behavior)
Billing address CA, Shipping address FL
Payment method: Check (it's basing the restriction on the billing address)
Billing address CA, Shipping address NY
Payment method: Check (it's basing the restriction on the billing address)
Billing address NY, Shipping address NY
Payment method: None (expected behavior)
Billing address NY, Shipping address CA
Payment method: None (it's basing the restriction on the billing address)
So I have to insist that my original assertion in this thread was correct that zc bases the payment method zone restriction on the billing address only.
How can I modify this to have it use the shipping address for the payment zone restriction?