Is it correct to say "buy for" or "buy at" if we are not talking about location?
Both prepositions are equally valid, and in practice mean exactly the same thing when connecting the verb to buy to an acceptable price.
At is usually called a Preposition of Location, but in OP's context it's being used metaphorically to specify some particular point on a "range" of prices.
For is a bit more "generic", so I don't know if it falls into any particular sub-classification. It's often used with verbs like call, hope, look, wait, watch, wish, where it has some sense of purposely selected. Similarly, in OP's usage it has something of the sense of focussing on some specific value.
The only context I can think of where you might need to think about it is in, for example,...
...where the only reason would be that stylistically you'd want to avoid two instances of the same preposition being used in different ways in the same sentence. In the first case you could change the first one to for and/or the second one to from. Something similar in the second case, except I can't think of any suitable alternatives having the required "purpose" sense (concerning, regarding, per are all close, but don't quite work with Christmas dinner).