I have encountered a strange behavior, at least it feels strange for me.
I use a payment method for invoices and just wanted to get information about the date of birth , but not from the customer but only in that spot.
I added the standard dob-fields and it is working. The request for checkout/onepage/savePayment has the date information in it.
We use Phoenix-Creditpass http://www.magentocommerce.com/magento-connect/creditpass.html for checking.
My problem is the payment information within the creditpass extension. The check is initiated by an Ajax-Request on (JS) payment.save. The payment Information is loaded with: Mage::getSingleton('checkout/session')->getQuote()->getPayment(). As far as i can see with ->debug() the dob-information is lost.
I tried to track down the problem and i can see that Mage_Checkout_Model_Type_Onepage::savePayment() has the correct data in it after the $quote->save() in it.
It looks like the payment Info is the same in both places, because the ids and the timestamps in it are the same but the method_instance[store] is different and the additionalInformations are also lost and i have no idea where they get lost.
My first idea was a problem due to JS asynchronity, but i added a sleep(10) to the creditpass extension before it gets the payment Infos, but that did not help.
If i add some Mage::log to the process, then i see, that the getPayment in the creditpass check is logged after the order->save() so the timeline should not be an issue, but what can be the problem instead?
Problem was solved by using additional_information of the payment. Somebody on irc toldme, that the payment information table must be updated to store the given attribute. This idea did not cross my mind due to the normal behavior if adding new attributes and linking them by eav mechanics.
After using additional_information my problems was solved.