I am integrating my site with PayPal and PayPal IPN for recurring subscription payments.
Signing up works well, and I'm all good there.
However, I am trying to understand unsubscribing, and I have a big question.
My site offers different plans with different prices and features. I want to be able to change a user's plan when they decide to upgrade or downgrade. I also want to be able to let a user easily cancel their subscription.
My questions:
How do I allow a subscription to be changed?
Is a subscription change a cancel and then a subscribe?
Can I make the cancel seamless, where they don't have to go through paypal? How do I do this? (I have cancel buttons for each of my services, but I would prefer to have cancel be seamless to the user, just in my site).
You can decrease the profile through UpdateRecurringPaymentsProfile. Keep in mind though, that there's a maximum increase of 20% over 180 days.
In short, if you want to decrease the profile, simply call UpdateRecurringPaymentsProfile and adjust the amount to be billed.
If you want to increase the profile, check whether it exceeds 20% of the original amount. If it does, cancel the existing profile and re-initiate the profile creation process (SetEC, GetEC, (DoEC), CreateRP) to create a new one.
Related
I have looked around SO for this but I can't seem to find anything like it.
On my service, I wish to charge on a per-month basis depending on how many users my clients have.
So this question is split up into two parts.
What I want to know is it possible for a client to use their own paypal account (without entering any CC details) with conjunction with CreateRecurringPaymentsProfile via the NVP, I have looked through the documentation and can not discern anything. So clearly it is not possible to do it via NPV - From what I've seen so far.
i. If I do an Express-Checkout Subscription, I can do 20% change on total amount every 180 days (I DO NOT want to do this) - I want to be able to get the Profile via the IPN and then modify the monthly amount on as-need basis
ii. There was some mention of Referenced Transactions, but the Documentation is very confusing.
So say there is a way to create a recurring payment subscription via a PayPal Account on the PayPal website, next step is to be able to update the Subscription via UpdateRecurringPaymentsProfile NVP command.
While I am happy to pass on CC details (which already works great), I am just wondering if it is indeed possible create a button, which would create a Subscription - once on success an IPN request is sent back with the ProfileID which I can modify the Billing Amount by NVP.
So TL;DR;
The current flow I have
Register on our website
Enter CC Details
Backend submits the data to PayPal and if passed - continues on.
On any Account modifications, update Profile Monthly Amount Automatically.
The flow I want
Register on website
Click on an Authorize Button Redirected to PayPal
Login to their PayPal Account Create Recurring Profile.
On any Account modifications, update that Profile Monthly Amount Automatically.
edit to add - this is all working now, had to contact and harass PayPal directly for a lonngg time.
I'm a little confused because it sounds like you answered your own question, but then said that's not what you want..??
Express Checkout does exactly what you outlined at the end of your post, and it triggers an IPN just like any other PayPal transaction. You are indeed limited on how much you can adjust the amounts of profiles created with EC, though, just like you mentioned with the 20% every 180 days. If you create profiles with Payments Pro (DoDirectPayment or PayFlow) then you're not limited and you can adjust the amounts however much you need to whenever you need to.
Reference Transactions and Preapprovals may be something to look into as well. I actually wrote an article about what they are and how they differ from each other awhile back that you might be interested in.
what is the proper way to upgrade a member with an ARB subscription.
We currently have members who sign up for monthly subscriptions during our sign up page... but they also are now attempting to upgrade once in the site (the page code does not work) but im trying to understand how to do this? Picture a match dot com type of site.
So i sign up on Jun 1st for $9.99/m (my card get charged on June 1st for $9.999)
Then i sign in on June 10th and try to upgrade for $29.99/m...........
Do i recharge them on the 10th? Or do i wait until July 1st and charge them $29.99/m
Is there a way to pro-rate the charges? We change our 3 tier pricing system often for testing so not sure if thats going to cause issues
The only reason i ask is this is a digital product in which users can abuse this privilege for that in between time then just cancel later. Thank you.
As of right now the only way to modify a subscription after it has begun is to cancel it and create a new one with the new amount. This means asking the customer for their credit card information again as ARB offers no way to store that information.
If you're going to allow users to change their subscriptions at any time you should consider using the CIM API which creates payment profiles so you don't have to ask the user for their credit card information again. Unfortunately CIM doesn't do recurring billing so you will have to manage subscription payments yourself. But it is more flexible then ARB when it comes to anything that isn't a basic subscription.
As far as changing subscription payments mid-cycle, you will need to pro-rate their first payment at the new tier. This can mean using the AIM API to make the difference in payment immediately or adding it to their next subscription payment. If you use ARB you can use a trial payment of one month for the pro-rated amount to make this easy to do).
The service is for a digital option within the app but users are to be billed on a monthly basis, based on the activity they have actually made.
How do I make sure my app isn't rejected?
If you think to bill the user after the monthly usage of the service, you cannot do that. In App Purchase is a form of payment in advance, so you can ask the user to pay initially for a certain amount of service (e.g.: use the service for N hours) and then decrease the number of available amount until it reaches zero, after that the user will be requested to purchase a new amount of such a service to continue to use it and so on.
You can do that using In App Purchase "consumable" in apps. But the user should buy the items before and not after the usage of your service.
Of course nothing prevents you to give some "credit" to the user and then ask the user to pay back this credit using in app purchase. This is closer to what you need but of course nobody can prevent the user to delete and re-install the app to reset his/her credit.
Another possibility is for you to introduce in-app subscriptions: but they are based on time, so you can ask for 1-week or 1-month service, but you cannot control the amount of service used in this month (in theory you could add a monthly cap, but I'm not sure this would be accepted by Apple as the idea behind subscription is that you pay for full usage in the subscription period).
I've read a few responses here regarding the modification of the recurring fee amount but still confused.
We have 5 subscriptions levels per month:
£10
£15
£20
£30
£50
We want to be able to let customers change their subscription package to any of the other options.
It sounds like if they are changing to a package with more than 20% difference from the one they are on - we would have to make them cancel and start a new subscription.
Surely there is a way to have the subscriber confirm they are happy to change the amount?
thanks
User can modify your paypal amount, but some restriction are there.
In Standard account, you can use "modify" html variable to change subscription amount as below.
0 – allows subscribers only to sign up for new subscriptions
1 – allows subscribers to sign up for new subscriptions and modify their current subscriptions
2 – allows subscribers to modify only their current subscriptions
The default value is 0.
Following link will hel you more,
https://cms.paypal.com/uk/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_html_subscribe_buttons#id08ADF500NXK
you can not modify often your amount, you can only increase the subscription amount by 20% for 180 days.
but if you move to paypal payflow($30/month), paypal itself provide API to communicate with paypal service. its very flexible to modify, cancel subscription.
paypal standard - user cannot cancel subscription their self if they dont have paypal login.
paypal payflow - user can able to cancel their subscription.
I'm trying to integrate a payment mechanism to my site. The scenario that I need is not trivial and can be explained by the following example:
User pays upfront for a subscription program (i.e. receiving Netflix). User is able to make changes to the subscription (i.e. change number of movies checked out each time from 4 to 2)
User is able to buy additional one time purchases via the provider's site (Netflix) supplied by 3rd parties. These items (i.e. popcorn, snacks) get billed to the same credit card as the subscription without having to go through the process of resubmitting the credit card information.
Of course, my site takes also a small fee for the transactions :-)
I was wondering if this is supported by PayPal, Google Checkout or someone else.
Thanks.
The Paypal api can handle all of those processes.
I seem to have dropped the ball on what kind of answer you wanted so I'll leave it at that.
If you have some feedback, more direct questions I will try to answer as much as I can
--
The money would best go through you first, unless somehow you can convince your customers its normal to bill them per item. Also if they pay by credit card you should only bill them once as you would incur fees on every payment. I don't know of anyway to bill once but distribute the payments.
As for the paypal docs..
Very good resource, there is also some sample code for most major web languages
Also this will get you started if you don't have a developer login
Their developer support is also pretty good. One thing a lot of people seem to screw up when starting out with the paypal api is not setting the latest version in the configs so don't forget to update that to the latest release. :)
Disclaimer..
Yea I know there is a lot of bad press about paypal and crazy stuff happening, but they do get the job done most of the time, its not my fault the customers love to use it.