If you don't have the exact card you used for the transaction available, you will be given store credit only if you furnish a receipt with said item. If you furnish nothing, you will be given nothing.
And at most places, employees and managers don't have access to CC#'s. The only thing they see are a bunch of stars and the last 4 digits.
That's not a technical limitation, it's a policy limitation.
Each CC company (Visa, MC, Discover, AMEX, etc) each have different rates for processing charges and refunds. Charging one company and then issuing the refund to another company ends up with a disparity in fees that usually results in the company losing money.
If the transaction has not been batched, the company could void it, which wouldn't require the CC#. If the transaction has already been batched (typically at the end of the day), or is processed in real time (certain online companies do this), the only way to handle it is to issue a refund. When you go to a store like Walmart, their software takes care of the difference for you, but they will still ask for your card usually to confirm.
Smaller shops, though, will usually not store credit card numbers. This is a PCI compliance issue. Easier to just not store them. If that's the case, and the transaction has already been processed, they cannot void it and must issue a refund. In order to do that, they will either need to physically run your card again or they will need the number to run it manually.
There is nothing fishy about this.