Upcoming Change to PayPal Subscriptions

MTS_Ciaran
Moderator
Moderator

PayPal is making changes to the way Subscriptions are created, managed, and displayed. For additional information, see our article Why am I seeing changes to how Subscriptions are reflected?

 

Login to Me Too
98 REPLIES 98

not_here
Moderator
Moderator

Hi @btibor

 

The information from that Status update can be found here. With regards to when the change will happen, the teams are updating the existing S- Subscriptions in a batch process. I'm working with the teams to get an updated status on where they are with the project.

 

Thank you for your patience during this transition period.


Christina  

Login to Me Too

getclicky
Contributor
Contributor

What a joke this whole migration is. Everyone involved should be ashamed of themselves and I sincerely hope any "in charge" of it has been or will be fired.

 

Why was no email ever sent to your customers about this change? I'm not talking about the individual emails for each transaction that happen to mention there's a new sub ID. (Do you seriously think any merchants actually read individual transaction emails?)

 

Something this major, which breaks every single integration with the old Paypal subscription system - our integration goes back to 2007 - needs to be properly announced somewhere other than these forums. I received no email about this and only discovered it when in October, the subscription in our local database all started going into "overdue" status. Thankfully for the time you were including the "old_subscr_id" field so it was fairly easy to add in logic for that, but I still had to go back and manually fix hundreds of subscriptions in the meantime which was SUPER IRRITATING.

 

But now today I have discovered that you just removed "old_subscr_id" entirely. So basically for 1 month's time, you included it, and now it's gone? So now I'm just **bleep** because I'll have THOUSANDS of subscriptions that I will have to fix MANUALLY.

 

Are you guys **bleep**ing serious? What the hell is wrong with you?

Login to Me Too

btibor
Contributor
Contributor

Thank you @not_here!

 

>Q: What will happen if the next payment cycle for my old S- Subscription is after December 2018?
>A: We sent an email in October 2018 with the mapping of old Subscription IDs and new Subscription IDs to all merchants who have their next payment cycle after December 2018.

 

We didn't receive this email with mapping report, yet. I also tried to contact your Tech Support and ask for the mentioned subscription mapping report and to resolve the all other related issues (Case Number 04576308), but I didn't get any reply since 5 days ago.

 

 

>Q: How long will I receive the mapping of the old and new Subscription ID?
>A: The mapping is provided in the payment IPN and email until December 2018.

 

I have also seen several IPNs for renewals in the last month without "old_subscr_id", already.

How are we supposed to map these payments/subscriptions without old subscription ID or mentioned mapping report?

 

Thanks! 

Tibor

Login to Me Too

Rob-sortitoutsi
Contributor
Contributor

@not_here I am in the same boat as Tibor above. I have not recieved any emails from paypal regarding this or with mappings. 

 

I am also seen lots of IPN's without old_subscr_id, particurlarly "recurring_payment_suspended_due_to_max_failed_payment" and "subscr_eot".

 

I'm also getting a ridiculous amount of "subscr_modify" notifications that don't seem to contain anything useful?

 

I have 13,500 active subscriptions on the old system dating back to 2011 and this is a peak time, so i'm manually checking hundreds per day at present.

 

I also haven't seen any documentation anywhere for how we should be changing our forms to suit the new format. Is there migration documentation somewhere?

Login to Me Too

not_here
Moderator
Moderator

Hi @Rob-sortitoutsi

 

The information posted can be found here. From what I understand, we posted this information originally via PayPal Status  (if you're not signed up for it, I highly suggest it) and sent emails to those identified as using subscriptions. 

 

If more information is needed that isn't in the FAQ, please let me know. I'm working to gather all of the information needed and deliver as soon as I can.

 

You can also submit a ticket with our Technical Support requesting a mapping for the old vs. new ID's (Note: I have not confirmed how long this process can take) 

 

Christina 

Login to Me Too

Rob-sortitoutsi
Contributor
Contributor

In terms of what's missing from the docs:

 

It doesn't mention the new ipn "recurring_payment_suspended_due_to_max_failed_payment" the fact that it doesn't mention that worries me because it probably means there's other things it's not mentioning as well?

 

If I look on this page there are a whole bunch starting with "recurring_" rather than "subscr_" and other guides I can find online suggest these are common ones to handle, although i've never seen them. Am I going to start getting these ones? I'm concerned that if if i've got "recurring_payment_suspended_due_to_max_failed_payment" suddenly replacing "subscr_eot" without any notice or documentation i'm also going to get "recurring_payment_profile_cancel" instead of "subscr_cancel" and god knows what else. But there's no documentation of anything like that.

 

I can't stress the importance of "recurring_payment_suspended_due_to_max_failed_payment" right now, this is a new type of IPN that we haven't recieved before (so the code in our website didn't know to handle it) and seems to have replcaed "subscr_eot". But it does not include "old_subscr_id" even though i'm getting it for years old subscriptions. We currently have no way of handling those notifications without old_subscr_id or the provided mapping.

Login to Me Too

getclicky
Contributor
Contributor

@Rob-sortitoutsi

 

"recurring_payment_suspended_due_to_max_failed_payment" started in August, I believe. We were also caught off guard as we were given no warning of this change, as we were given no warning with what this current thread is about (new subscription IDs).

 

I can confirm also that the "old_subscr_id" only seems to be missing from this particular transaction type. I made a post here a few days ago panicking that it seemed to be gone entirely but I later confirmed it was just for this transaction type, although there were a few days in early November where there seemed to be some bugginess and there were other txn types with old_Subscr_id missing but only a few.

 

Anyways, our Paypal integration is custom (I wrote it) and here is how I've mapped the new transaction types to the old ones, which we've had running since late August without issue (until the new "old_subscr_id" issue popped up recently, which I've also addressed in my code, which is also part of what's below). sanitize(), sub_get(), and sub_edit() are all internal functions but you can probably imagine what they do.

 

This is PHP:

 

 

# subscr_id - new txn_type value "recurring_payment_suspended_due_to_max_failed_payment", they send this instead of subscr_id, otherwise it's ALWAYS subscr_id. Thanks Paypal!
$subscr_id = sanitize( ( $_POST['recurring_payment_id'] ? $_POST['recurring_payment_id'] : $_POST['subscr_id'] ), 'in' );

# old_subscr_id? Update our local subscr_id if it matches this.
if( $_POST['old_subscr_id'] ) { $old_subscr_id = sanitize( $_POST['old_subscr_id'], 'in' ); $sub = sub_get( array( "ext_subscription_id" => $old_subscr_id, "active" => 1 )); if( $sub['id'] ) {
# update subscription id sub_edit( array( "id" => $sub['id'], 'ext_subscription_id' => $subscr_id )); # update all old transactions with new subscr_id $db['main']->query("update payments set ext_subscription_id='$subscr_id' where ext_subscription_id='$old_subscr_id'"); } }
# Convert new "recurring billing" txn_type to old school subscription txn_type.
$txn_type = sanitize( $_POST['txn_type'], 'in' ); if( in_array( $txn_type, array('recurring_payment_suspended_due_to_max_failed_payment', 'recurring_payment_suspended', 'recurring_payment_expired' ))) { $txn_type = 'subscr_eot'; } else if( $txn_type == 'recurring_payment_failed' ) { $txn_type = 'subscr_failed'; } else if( $txn_type == 'recurring_payment_profile_cancel' ) { $txn_type = 'subscr_cancel'; } else if( $txn_type == 'recurring_payment' ) { $txn_type = 'subscr_payment'; } else if( in_array( $txn_type, array('new_case', 'masspay', 'subscr_modify' ))) { # ignore exit; }

 

Login to Me Too

Rob-sortitoutsi
Contributor
Contributor

Cheers @getclicky that's really helpful. Have you had "recurring_payment" come through yet? All my subscriptions are one year so i'm concerned that i'm going to get a massive headache in 1 years time when new IPN's come through. Will recurring_payment start coming through for any new subscriptions but not old, or both? (I realise you might not actually know)

 

Thanks @S_S_S I guess there must be a way to re-activate the subscription then if it's different to being cancelled. But we haven't had any information on this.

 

(both these things are things that need to be documented @not_here )

Login to Me Too

getclicky
Contributor
Contributor

> Have you had "recurring_payment" come through yet?

 

Not that I know of but I added support for it in anticipation of when Paypal decides to start doing it without notice. Along with many of the others in there that I haven't seen at all. But based on the docs that's how I interpreted what they will do if we start seeing them.

Login to Me Too

freedomsks
Contributor
Contributor

@getclicky

 

Nice code. We upgraded to PayPal express checkout recurring payments earlier in the year, but still have hundreds of active S- type subscriptions out there. A couple other changes you may want to account for (if PayPal decides to upgrade the old S- IPN messages to the new I- type):

 

 

 

if($txn_type=="recurring_payment_profile_created") { $txn_type ='subscr_signup'; }
if($txn_type=="recurring_payment_skipped") { $txn_type ='subscr_skipped'; }

 

We have not seen these used yet or any of the ones you've got in your code in upgraded S to I type, except for: "recurring_payment_suspended_due_to_max_failed_payment".

 

Good luck

 

Login to Me Too

Haven't Found your Answer?

It happens. Hit the "Login to Ask the community" button to create a question for the PayPal community.