PayPal payment processor uses deprecated methods, breaking functionality
Symptoms per issues #760 (closed), #1195 and #1007 (closed)
When a payment is processed via PayPal standard, inappropriate "Cancel Subscription" and "Update Billing Details" links are shown in the confirmation emails and front-end contact dashboard. These links either do not work or present a form that does nothing.
I can see that in https://github.com/civicrm/civicrm-core/blob/master/CRM/Core/Payment/PayPalImpl.php various fixes have been made for this (e.g. line 651 in cancelSubscriptionURL() and line 669 in isSupported(), and subsequent callback methods themselves) however these appear to have been deprecated in the base class https://github.com/civicrm/civicrm-core/blob/1ff2405992ac45df88425ff400a2c37f6056d938/CRM/Core/Payment.php:
- isSupported() replaced by supports() (line 306)
- cancelSubscriptionURL() replaced by subscriptionURL(... $action) (line 1693)
- Similar for other actions e.g. change billing details
These methods are now used in other areas of the application such as email and form generation, but PayPalImpl.php appears to have not been updated, which causes the broken behaviour.
Side issues observed while testing this (for a new installation of 5.29.0 on Joomla 3.9.8):
- Link to instalments for recurring contributions in front-end user dashboard (if present) is broken - gives permissions / access error
- Instalments text has spurious trailing slash (?)
- Formatting errors when displaying recurrence frequency for recurring contributions in front-end user dashboard
(Perhaps these are separate issue(s)).