For the last week or so I was encountering the same issue when trying to create a subscription utilising the MS graph API.
The following stack overflow thread helped me resolve the issue: https://stackoverflow.com/questions/53857198/notification-endpoint-validation-not-working-with-laravel-endpoint
Basically I was sending back the validation token but my PHP framework was adding a new line character in the response body prior to the validation token being added. This meant MS Graph would always fail to validate my notification endpoint.
Adding ob_clean() before returning the token resolved the issue for me.
Hope it can help someone else out here!