For all parts, assume that $y \le U$ for some constant $U$.
i) For $x_i=1 \implies y>0$, introduce a small positive constant tolerance $\epsilon$ and enforce $x_i=1 \implies y\ge \epsilon$, either as an indicator constraint or via linear big-M constraint $\epsilon - y \le M(1-x_i)$, where $M$ is a constant upper bound on the LHS when $x_i=0$. Because you also have $x_i=0 \implies y_i=0$, you can take $M=\epsilon-0=\epsilon$, yielding $\epsilon - y \le \epsilon(1-x_i)$, which simplifies to $$\epsilon x_i \le y. \tag1\label1$$ To enforce $x_i=0 \implies y=0$, the nonnegativity of $y$ means that it suffices to enforce $x_i=0 \implies y \le 0$ either as an indicator constraint or via linear big-M constraint $$y \le U x_i.\tag2\label2$$
ii) For $y>0 \implies x_i=1$, rewrite as its equivalent contrapositive $x_i=0 \implies y \le 0$ and either use an indicator constraint or impose linear big-M constraint \eqref{2}. For $y=0 \implies x_i=0$, rewrite as its equivalent contrapositive $x_i=1 \implies y > 0$ and either use an indicator constraint or impose linear big-M constraint \eqref{1}.
iii) Notice that the first $\iff$ is equivalent to the second $\iff$. Furthermore, each $\iff$ is equivalent to i) and equivalent to ii).
If $y$ is an integer variable, you can take $\epsilon=1$ throughout.