First off, thanks to everyone for the feedback! I think you are confirming what I was expecting, but let me clarify to be sure.
The reason I'm going into such detail here is that I haven't yet set up Credit Card or PayPal processing. I need to start coding, but I can't really test this stuff until I set up those payment options.
I haven't made any changes that affect the payment modules.
As DrZen says: "I won't get a Credit Card/PayPal order if the payment transaction to those entities hasn't transpired."
As Frank18 says: "Depending on what your orders_status_id is set to for a completed payment, you will need to test for that id." I haven't done anything to change what that value should be.
Looking at this statement, "the order is paid via PayPal and PayPal automatically sets the order status to 'Processing'", I read that as (for CC/PP payments), the orders_status field is set to "2" after the payment has been processed, correct?
So, here's the scenario I envision...
Customer downloads and installs my software on their PC. (Note: I don't support Macs or Androids.) My software keeps track of the 30-day expiration date and stops working after that, unless they pay.
They make the purchase on my Zencart. My custom code generates a unique Product Activation Key (PAK) and keeps it in the orders_products table.
A. If they pay by cash, the orders_products record is created with a value of "1" in the orders_status field. When I receive payment, I bump the orders_status field to a "2" and I email the PAK to the customer.
B. If they pay by CC/PP, the orders_products record is created with a value of "2" in the orders_status field and the PAK is sent to the customer as part of their order confirmation.
So from my point of view, I am using "Actiavte" where Zencart calls it "Delivered". I don't think there's any conflict there.
The customer uses screens in my software to activate their order. This changes the orders_status field to a "3" (via my gateway process). During that processing, it also collects the MAC address of the Network Interface Card (NIC)on the customer's computer and keeps that in the orders_products table. As I read on other websites, this seems to be the only unique property of a PC I can reliably get ahold of.
My software on the customer's computer sets up some things that tells it it is OK. But, it does check my gateway each time my software is invoked.
A. If the internet or my website is unavailable, it believes the settings on the comupter.
B. If the website is available, it double-checks the status against the NIC. If it sees their Email and PAK on a different NIC, it will suspend the software by setting the orders_status field to a new value I added, called "5".
To allow the customer to move my software to another computer, I have screens that allow them to "Unactivate" their copy. Doing so sets the orders_status to "4". It can then be activated on a different machine using the same email/PAK.
I am re-using the value of "4" on the orders_status field, which originally meant "Update". Should I have done this? What does the generic "Update" status really mean to Zencart. Maybe I should have made this a "6"?
The other thing to keep in mind is that my software is very special purpose, so I'm not worried about Joe Public hacking it. If he does, then I haven't really lost any revenue. My clients are, in general, not very computer-savy. If I was selling to "the world", I would probably want more security, but for now this approach should work for me.
Any thoughts? Thanks again!