I've also spent a lot of time trying to figuring this one out, so in case anyone reads this, this might help.
Following the tutorial here the SAML message has to be wrapped in a SOAP message and then has to be sent to https://login.microsoftonline.com/RST2.srf
https://login.microsoftonline.com/RST2.srf as in step 10. There is also an example of how the full token shall look like.
This endpoint also gave me more useful error messages like "MinorVersion missing"
. However, I could not get this to work as my token was SAML 2.0 and the endpoint at the end gave me the message that it only understands 1.1.
UPDATE:
The previously linked tutorial was not correct. Step 10 was broken. Better tutorial that uses powershell actually has the completely generic steps for getting login cookies for SharePoint Online even if you are using Ping identity.
But as noted above, the thing that was majorly wrong with the op's attempt was the login.microsoft.com endpoint he was using. Must use https://login.microsoftonline.com/RST2.srf instead of login.srf