[Verizon Samsung Galaxy S 4] k1mu:
So I had some really odd experience this weekend with attempts on soda machines.

Machine 1, 4th floor. Two attempts to purchase failed. This machine has failed for me in the past with 2.0 but worked with 1.0.

Machine 1, 5th floor. Reader looks identical. Purchase worked great.

I went back to the 4th floor. Started logcat running in a terminal emulator window output to a file. Tried a purchase. It failed, but the log doesn't have any Wallet messages. This didn't make much sense to me.

Tried it again, first 'su', then logcat. The "wallet" lines are pretty uninteresting:

I/LSS-II: ( 787): proc in:com.google.android.apps.walletnfcrel,adj=9LRU num=89,i=39
I/LSS-II: ( 787): proc out:com.google.android.apps.walletnfcrel,adj=0,i=79
V/SmartFaceService - 3rd party pause( 787): onReceive [android.intent.action.ACTIVITY_STATE/com.google.android.apps.walletnfcrel/resume]
D/LocationManagerService( 787): request 4594acb8 gps Request[ACCURACY_FINE gps requested=0 fastest=0] from com.google.android.apps.walletnfcrel(10277)
D/LocationManagerService( 787): request 4594acb8 network Request[POWER_LOW network requested=0 fastest=0] from com.google.android.apps.walletnfcrel(10277)
I/AppStartTimeLogger(25940): Wallet app warm start time = 101 millseconds
V/SmartFaceService - 3rd party pause( 787): onReceive [android.intent.action.ACTIVITY_STATE/com.google.android.apps.walletnfcrel/pause]
D/ActivityManager( 787): Trying to launch com.google.android.apps.walletnfcrel/
com.google.android.apps.wallet.purchaserecord.PurchaseRecordDetailActivity
V/SmartFaceService - 3rd party pause( 787): onReceive [android.intent.action.ACTIVITY_STATE/com.google.android.apps.walletnfcrel/create]
D/ActionBarSherlock(25940): [<ctor>] activity: com.google.android.apps.wallet.purchaserecord.PurchaseRecordDetailActivity@42f23da0, flags: 1
V/SmartFaceService - 3rd party pause( 787): onReceive [android.intent.action.ACTIVITY_STATE/com.google.android.apps.walletnfcrel/pause]
V/SmartFaceService - 3rd party pause( 787): onReceive [android.intent.action.ACTIVITY_STATE/com.google.android.apps.walletnfcrel/resume]
I/AppStartTimeLogger(25940): Wallet app warm start time = 53 millseconds
V/SmartFaceService - 3rd party pause( 787): onReceive [android.intent.action.ACTIVITY_STATE/com.google.android.apps.walletnfcrel/pause]
I/LSS-II: ( 787): proc wait in:com.google.android.apps.walletnfcrel,adj=9LRU num=86,i=53
I/LSS-II: ( 787): proc cancel wait in:com.google.android.apps.walletnfcrel,adj=0LRU num=87,i=76
V/SmartFaceService - 3rd party pause( 787): onReceive [android.intent.action.ACTIVITY_STATE/com.google.android.apps.walletnfcrel/resume]
I/AppStartTimeLogger(25940): Wallet app warm start time = 41 millseconds
V/SmartFaceService - 3rd party pause( 787): onReceive [android.intent.action.ACTIVITY_STATE/com.google.android.apps.walletnfcrel/pause]
D/ActivityManager( 787): Trying to launch com.google.android.apps.walletnfcrel/
com.google.android.apps.wallet.ui.paymentnotification.TapActivity
V/SmartFaceService - 3rd party pause( 787): onReceive [android.intent.action.ACTIVITY_STATE/com.google.android.apps.walletnfcrel/create]
W/GTalkService( 1389): [DataMsgMgr] broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE pkg=com.google.android.apps.walletnfcrel (has extras) }
I/TapProcessorService(25940): Stopping service, action=com.google.android.apps.wallet.nfcevent.TAP_FINISHED startId=2
V/SmartFaceService - 3rd party pause( 787): onReceive [android.intent.action.ACTIVITY_STATE/com.google.android.apps.walletnfcrel/pause]
D/ActivityManager( 787): Trying to launch com.google.android.apps.walletnfcrel/
com.google.android.apps.wallet.ui.paymentnotification.TapCompletedActivity
V/SmartFaceService - 3rd party pause( 787): onReceive [android.intent.action.ACTIVITY_STATE/com.google.android.apps.walletnfcrel/create]
D/ActionBarSherlock(25940): [<ctor>] activity: com.google.android.apps.wallet.ui.paymentnotification.TapCompletedActivity@42dd2550, flags: 1
W/GTalkService( 1389): [DataMsgMgr] broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE pkg=com.google.android.apps.walletnfcrel (has extras) }
V/SmartFaceService - 3rd party pause( 787): onReceive [android.intent.action.ACTIVITY_STATE/com.google.android.apps.walletnfcrel/pause]
I/LSS-II: ( 787): proc wait in:com.google.android.apps.walletnfcrel,adj=9LRU num=87,i=71

So, then I tried "dmesg" first, hoping to perhaps see something extra after an attempt.

The purchase worked! Then, tried it again. Also worked. Nothing interesting in the logs there, either.

I'm becoming convinced that this is a defect in Wallet 2.0 - it doesn't work reliably. It can't be the updated NFC driver and libraries, since those work reliably with Wallet 1.0.