Script DB Level Permission Before Refresh to Non Prod Environment
You should obviously try using native SSMS functionality.
To scripts database users and their permissions use 'Generate script' context menu option of the database (right click db - tasks - generate scripts).
to restore database from Production to non-Production, again, use Script the action task and then modify it to suit your specific needs (right-click 'Databases' node - restore database - Script button on the upleft of the General tab).