Did you really mean the first constraint to read 'x1=14'? Because, if that is the case, it's not necessary to include x1 in the objective function; you could simply replace it with 14 and do the resulting contrained optimization in R^2 (over x2 and x3).
Also, I do not see any of the contraints you've outlined in the original problem appearing anywhere in the constraint specification in your code. Mind you, I've never used the package ROI.
Yes, well there's another problem which didn't occur to me earlier. The objective function you've given has neither a maximum nor a minimum on the region described by the constraints.
To wit: Let x1=20 and let x2 go to positive infinity. Then p likewise grows without bound. On the other hand, with y=5000, as x1 goes to negative infinity p also goes to negative infinity. So it would be pointless to employ any method to try to optimize. In general you need a closed and bounded (compact) region and an objective function continuous on that region to be sure that both absolute extrema exist.
As to your other question, I am not familiar with any R pachages for numerical optimization but doubtless there are many.