There isn't any such thing as a "BIP70 URI" as I understand it. To use BIP70, the client fetches a payment request from somewhere, typically an ordinary https url (which can also be embedded in a bitcoin: uri, see BIP72). The payment request is passed to their Bitcoin wallet client, which generates the transaction as well as a Payment message which is sent back to the server at a given URL. There is a
memo field in the Payment message which you could use, but filling it in would be up to the user's wallet client. I don't see any way for your payment request to instruct the software how to fill this in.
So you would have to tell the user how to fill in the
memo field of the Payment message using their particular software (assuming their software supports it at all). And if they should fail to do so, too bad - by the time you receive their Payment message the transaction has already been sent. Though you could still refund their payment in that case (using the
refund_to field of the Payment message).
If the user has already given you the address (e.g. entered it in a web form) then you could generate the payment request in such a way that the
payment_url embeds their address (https://my.server.com/[email protected]). Then when they send their Payment message to that url, an appropriate application on your site can record that address as being associated with the transaction.
Note that in all cases the user needs a lot more than just your Bitcoin address; you have to run a publicly available secure web server to negotiate the payment protocol, and the user will need its web address.