This works (goes to Paypal etc) but the PKeys routine does not create a new Prodict Code or send an email to the customer. Is there something extra I need to do to allow payment to made outside of the app itself on a regular web page?
Yes, you need to make sure you set all the correct values in the PaymentSettings.cs file. LimeLM_ApiKey, LimeLM_VersionID, CheckScript. So fix those values. If it's still not working then attach a debugger to your server and add breakpoints to the SendPKeys() function in the PaymentSettings.cs file to see what's going wrong.