I have done that many ways. Prior to Office 365, there were still easy ways for people to remove the passwords from protected sheets. I'll let others chime in, but I think they have improved the sheet protection. Locking the VBA is important.
More importantly, you need to build in the expiration and a way to renew it. They need to be able to pay for a copy or for an extended license and you need to be able to add that to their version of the workbook. I once created a string of ASCII characters that had an embedded date. I sent that to them. They used the update feature and pasted the string and the macro stored that in a hidden place. Your going to have to create a way to store a unique identifier in their version so that they can't share that with all their friends. In other words, one person could update and then send that to others. So, are you going to check their login names? Are you going to find a way to check the computer ID?
For me, I once created a way to copy all of their personal data over to a new version of the workbook so updates could be easier. I had to check for the expiration.