Solution:
Let P(x,y) denote the assertion that
f(x+f(y+xy))=(y+1)f(x+1)−1.
Claim 1. f is injective.
Proof: If f(a)=f(b) then P(x,x+1a),P(x,x+1b) yields a=b, since f(x+1)∈R+ so in particular is nonzero.
Now P(x,f(x+1)1) yields
f(x+f(f(x+1)x+1))=f(x+1)
hence by injectivity
x+f(f(x+1)x+1)=x+1
so that
f(f(x+1)x+1)=1
By injectivity, this equals some constant c, so that
f(x+1)x+1=c
for all x∈R+.
Now letting x,y>1 in P(x,y) automatically yields
cx+c2y+xy=(y+1)(cx+1)−1
which immediately yields c=1 if we take x,y large.
Finally, we have f(x+1)=x+1 for all x∈R+.
Finally, P(x,x+1y) yields
f(x+f(y))=(x+1y+1)f(x+1)−1=x+y
so that fixing y and letting x>1 yields
x+f(y)=x+y
so that f(y)=y.
This was for arbitrary positive y, so that f(x)=x for all x∈R+, which clearly works.