Connecting LimeLM with FastSpring SubscriptionsAnswered

After a few emails, I am posting this on the forum in the hopes that it will help others clarify the process (if it is even possible) for using LimeLM with a subscription desktop software – AND – I would very much appreciate responses from Sam/Wyatt that each item is the best way to handle things or a recommendation if there is not a better/easier path. 

As far as I can tell, automating subscription renewals with FastSpring is actually not possible.

  1. I can make a custom field and within my fulfillment script fill it with an expiration date…. Then in my code, test this date and take appropriate action. This is pretty well documented on many forum posts.
    1. BUT, if a user enters an “expired” code into TurboActivate it will first come back as valid, then the software would have to intercept again and invalidate. This is certainly not ideal.  Am I misunderstanding something here?
  2. Updating subscriptions upon renewals (and other hooks) does not seem possible.
    1. First, if you try to do it via fullfillment script, per FastSpring support $company, $email, $name and $quantity are the only values available. So, I would have to first limelm.pkey.find by email, of which there could be more than 1, so there is no way to actually be sure we are adjusting the right subscription, right?
    2. WebHooks.  I see a lot of posts insinuating this would be possible. 
      1. First, they never mention that you would need a separate webserver executing scripts in-between FastSpring and LimeLM.  And if you do that, then you need at least a ‘BASIC’ account so that 2 different IP’s are capable of using the web api.  Please confirm I understand this correctly.
      2. If we get over those 2 humps, still the only way to get an absolute pkey_id is to have the license key.  According to FastSpring support, “The license will not be part of the webhook. The constant would be the subscription id.”  Am I missing a way to Store the FastSpring LicenseID on LimeLM and Get the pkey_ID with that?

I sure do hope I am misunderstanding something and there are better answers.  Thanks much!
-kt

Answer

BUT, if a user enters an “expired” code into TurboActivate it will first come back as valid, then the software would have to intercept again and invalidate. This is certainly not ideal.  Am I misunderstanding something here?

Yes. The customer has to activate before you can read custom license fields. This is by design.

However, this isn't really a limitation. Because as soon as they activate you check if the "subscription" has expired, and if so, prompt them to purchase a renewal (which is what you want – customers buying products).

Updating subscriptions upon renewals (and other hooks) does not seem possible.

It is. But because this type of work is company-specific, we just haven't pre-written them for you. View the FastSpring docs and they should have examples.

First, they never mention that you would need a separate webserver executing scripts in-between FastSpring and LimeLM.  And if you do that, then you need at least a ‘BASIC’ account so that 2 different IP’s are capable of using the web api.  Please confirm I understand this correctly.

No, you could use a Solo plan. Not sure where you read otherwise.

If we get over those 2 humps, still the only way to get an absolute pkey_id is to have the license key.  According to FastSpring support, “The license will not be part of the webhook. The constant would be the subscription id.”  Am I missing a way to Store the FastSpring LicenseID on LimeLM and Get the pkey_ID with that?

Yes, `pkey_id` is how you reference the pkey in the web API. But you can store either in FastSpring's or your backend. What data they let you store is up to them. We don't keep track of that, you'll have to contact them.

Long story short, yes, all of this is possible with FastSpring. We recommend Authorize.net, but choose whatever you think is best.

Updating subscriptions upon renewals (and other hooks) does not seem possible.

It is. But because this type of work is company-specific, we just haven't pre-written them for you. View the FastSpring docs and they should have examples.

I am not asking your to write it for us, but perhaps a roadmap of what happens where and what example code to start from would help the many users I see on your forum looking for this.

First, they never mention that you would need a separate webserver executing scripts in-between FastSpring and LimeLM.  And if you do that, then you need at least a ‘BASIC’ account so that 2 different IP’s are capable of using the web api.  Please confirm I understand this correctly.

No, you could use a Solo plan. Not sure where you read otherwise.

I am testing.  Fastspring uses PHP fullfillment script.  This works.  If I now have to create my own ASP.net application for webhooks, then those posts to LimeLM come from a different IP.  Doesn’t that mean “2 users”?  To test my APS.net app, I had to remove the FastSpring IP.  Could you please give an overview of how best to set this up such that FastSpring and my ASP.net app could both use the webAPI or explain why I misunderstood.

Long story short, yes, all of this is possible with FastSpring. We recommend Authorize.net, but choose whatever you think is best.

OK.  Well perhaps an explanation or link to your docs that actually explains how would help.

I am not asking your to write it for us, but perhaps a roadmap of what happens where and what example code to start from would help the many users I see on your forum looking for this.

It really depends on what you want to do. In general, you want to use their webhooks:

https://developer.fastspring.com/reference/webhooks-overview

https://developer.fastspring.com/reference/subscriptions-1

And using those hooks, call scripts on your servers to manage the licenses however you want.

https://wyday.com/limelm/help/api/

Again, the specifics depend on what you actually need to do. What language you use is up to you (we provide examples in PHP, C#, VB.NET, and a basic example in Python). But you can do whatever you want. People have used those languages, NodeJS, Go, etc., etc.

Really. It's up to you.

 Doesn’t that mean “2 users”?  To test my APS.net app, I had to remove the FastSpring IP.  Could you please give an overview of how best to set this up such that FastSpring and my ASP.net app could both use the webAPI or explain why I misunderstood.

In your settings you can set how many IP addresses are allowed for an API key (up to a maximum of 3).

OK.  Well perhaps an explanation or link to your docs that actually explains how would help.

Again, it depends on what you're doing. How you organize your information, how you want to query things. Our web API provides multiple ways to access your data: https://wyday.com/limelm/help/api/

You need to be a bit more specific about what you want to do.

In your settings you can set how many IP addresses are allowed for an API key (up to a maximum of 3).

Ah!  I did misunderstand.  Thank you.