I do like the idea of having the university in a separate property. How about we have payment:campus_card with possible values of yes/no/only/interval (just like all other payment:*), and then a supplementary property campus_card with a semicolon-delimited list of the campus cards they accept (e.g. campus_card=Bearcat Card;HPU Passport). I prefer campus_card to university for the property name, as it’s possible that this kind of card might exist somewhere that isn’t a university (i.e. perhaps a large employer or a high school).
This approach has the advantage of making it really easy for a client to support this property the same as any other payment:* property. Most of the time, it would probably be obvious to the user which campus card a place accepts; they’re usually only accepted at businesses on/near campus. Thus, if a client decided to just indicate “campus card accepted here” without doing the extra work of showing the campus_card value, it would still be providing useful information.
We could also have the subproperties that @Kovoschiz described. Perhaps something like:
payment:campus_card=yescampus_card=Bearcat Cardcampus_card:for=University of Cincinnaticampus_card:for:wikidata=Q153265
That’s a bit much though; perhaps it would make sense to have campus_card:for OR campus_card:for:wikidata, but not both. It’d be more ideal if the card itself had a Wikidata item, but we’d have to go create such Wikidata items.