in reply to Storing credit card numbers temporarily (OT)
This may be seen as a bit much but in a post way back when I noted that you can find secrets by dumping the memory device to a file and grepping it. I was able to eliminate this danger by writing junk characters to the secret string to fill its entire previous length before destroying it.
When I have been in similar situations to yours I would overwrite the string after using it, and if it had to remain across states, then would encrypt it and store it as a hidden form field in the html returned to the user. Otherwise you can store a hash or just the last 4 digits if you wish. I believe the crypt function is one-way too; if you are using mysql you can store it in a password field. But you should do periodic cleaning, I would always clean old sessions after finishing a user's transaction.