Just to verify, it appears that you are describing the StoreKit flow scenario, where the addPayment method results in both a failed, then a successful transaction result because of the interruption in the payment process to handle the credit card update / confirm purchase process. As this situation is not one that is reproducible in the sandbox, an application can only demonstrate this case in the production environment. If you are finding that the SKPayment.applicationUsername field is not being maintained at the transaction.payment when the updatedTransactions delegate method is called for the successful transaction, this would seem to be a bug report.
Does your application currently log the applicationUsername field? It would be helpful to include the console log for your app taken when this issue occurs. One way to replicate the StoreKit flow scenario is to install the app, then delete the credit card info associated with the user account. Then run the app and attempt the in app purchase. You can submit the bug report using the Apple Developer Bug Report web page - http://bugreport.apple.com. After submitting the bug report, please send the bug report number to my personal account as listed in my signature, and I'll make sure to forward it to the StoreKit engineers for their review.
rich kubota - rkubota@apple.com
developer technical support CoreOS/Hardware/MFI