John Mueller from Google has posted a heads up to the websites implementing hreflang for international support, that they should implement rel=canonical properly or it will appear as if none of the markup is there.
Here's what he actually posted:
For those of you using hreflang for international pages: Make sure any rel=canonical you specify matches one of the URLs you use for the hreflang pairs. If the specified canonical URL is not a part of the hreflang pairs, then the hreflang markup will be ignored.
In this case, if you want to use the "?op=1" URLs as canonicals, then the hreflang URLs should refer to those URLs. Alternately, if you want to use just "/page", then the rel=canonical should refer to that too.
Finally, don't use a rel=canonical across languages/countries, only use it on a per-country/language basis (don't specify the "de" page as the canonical for the "en" version, otherwise we won't index the "en" version).
Further, he shared this image to help webmasters understand further.
If your website provides international support with multiple languages, check out this help document.Match Up your rel=canonical & hreflang Pairs: Says John Muller!,