Fixed PayPal Canceled_Reversal status

digitalpoint

Well-known member
PayPal will sometimes review transactions and send a "Reversed" IPN notification. As intended, XenForo undoes the subscription. Unfortunately, once PayPal is done reviewing the transaction, they send a "Canceled_Reversal" IPN notice letting you know that they canceled the previous reversal and that everything is now okay.

A Canceled_Reversal payment_status is also used when a user files a dispute and then either loses the dispute or cancels the dispute. Because of this, you can't blindly reverse a subscription and then reapply it upon Canceled_Reversal. It would become a bit of a loophole where someone could subscribe, then file a dispute the day before it expires and then cancel their own dispute to have their subscription start new from that point. So it should track the remaining days (or probably seconds since it's a timestamp) on a subscription upon reversal in case the reversal is canceled and then set the subscription expiration date based on that.

As it is now, the system totally ignores Canceled_Reversal, so a user could pay for a subscription and ultimately never get it because PayPal choose to review the transaction and the IPN notification that the reversal was canceled is ignored.
 
This won't be retroactive as we don't actually store enough data in the expired upgrades to handle this in 1.1, but it will be resolved in 1.2 for upgrades purchased after updating. (As well as a potential issue where a subscription renewal came in too late).
 
Top Bottom