Ideally we want to be able to do something like @Inject @Symbol("paypal.api.${paypal.api.endpoint}.username") String userName. However this doesn't work, as only @Value and @InjectService allow Symbol substitution. Thus, we will have to to create a new symbol:

(If anyone knows how to evaluate symbols inside contributeApplicationDefaults, please let me know as I would prefer to just simply create 3 new symbols for username, password and signature and then in inject the symbols into the service implementation and used auto-building.)

And lastly inject the service into our page. Notice how we have to evaluate the PayPalNVPService symbol to get the actual service id: