I plan on using Paypal for a monthly subscription service and would like to know how to handle the Upgrade/Downgrade/Cancellation from users:
How do I handle these use cases? Thanks!
Worth mentioning PayPal have lots of options:
PayPal Standard Payments, which is what most people consider "PayPal" has a very basic subscription system, where either party can cancel the subscription but neither party can modify it. Also it is quite complicated to programmatically cancel the Subscription.
PayPal Express checkout is similar to above but has some basic API allowing software to automatically cancel payments for example.
PayPal Adaptive Payments which is a newer set of APIs allows PreApproval billing this is probably PayPal most flexible system, it will allow you to specify dates/periods to bill and users can be asked to accept new billing agreements etc.
Finally their is PayPal pro which is much more akin to a normal payment gateway.
Which one you choose to use has a massive difference to what you can and can't do, obviously the more flexibility of Adaptive for example comes at the cost of requiring a developer to help implement it correctly. For more information (especially if you are a developer check out x.com its PayPal developer network) as it's not just a case of listening to an IPN as has been suggested, at least not if you want to trigger the IPN in the first place.
The answer to this question is almost the same as my answer to the "How to let customers download software automatically after payment through a website?" question. Namely, you should use PayPal IPN . Specifically, see the "subscr_cancel", "subscr_modify", and "subscr_eot" "txn_type" values coming from IPN.
For cancellation, is it recommended to develop the site such that the cancellation is forwarded to an admin who manually cancels the service?If a user cancels they should be immediately downgraded or removed by your system (or however you handle cancellation). You could always do this manually, but why would you? If you receive a "subscr_cancel" from PayPal's IPN you can use a bit of code to cancel their account.
For upgrades, I'd think that the user will be happier if the upgrade happens instantaneously instead of waiting for an approval from an admin.Yep. In this case use the "subscr_modify" transaction type from PayPal IPN.