I think if you change your association to a one to one between PaymentType and ProviderType that you will be able to accomplish what you want to do. This would require you to create an administration screen where you manage all payment types and make sure that a payment type has an association to a provider type. Once you do that, when your user selects a payment type, you can easily constrain the list of provider names through the associations between payment type and provider type.
Edit: You can also keep the same structure that you have, but would need to create an administration screen that sets the association between PaymentType and ProviderType. If you do this, then a Provider Type can be associated to multiple Payment Types. If you go the route with a one to one association, then a Provider type can only be associated to one Payment Type. Just depends on your use case.
Once you do that, just add a dataview that displays provider type over an association, and then in the dataview use a reference selector with a constraint to show Provider Name