Extracting Binary Magnetic-Strip Card Data from raw WAV
This is called biphase mark code, and you have to focus on the zero-crossings instead of the pulse amplitudes.  You have multiple zero crossings per pulse, though, because of the low-cut filters inherent to the pickup and the phone's mic input.  Yours drop farther than this between transitions, and cross zero:



You could restore a more pulsy shape by using a low-boost filter:



and then measure the pulse lengths by how long they spend above some threshold.  Maybe a better idea is to differentiate the input to make the transitions into large spikes, take the absolute value, and detect them when they go above some threshold:



Then measure the time between pulses, and when the time between two pulses is approximately the same as the last two pulses, it's a 0, when it's approximately half of what it was between the last two pulses, it's a 1.

The magnetic degradation you talk about should be easy to remove with a low-pass filter.