From ba2fb5afa3aa403467ae4934731684cc51bc830d Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Tue, 26 Jul 2022 15:39:04 +0100 Subject: [PATCH] Fix PaypalPro IPN to refer to correct option group --- CRM/Core/Payment/PayPalProIPN.php | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/CRM/Core/Payment/PayPalProIPN.php b/CRM/Core/Payment/PayPalProIPN.php index 5ff6e0d317..e78b4bdbad 100644 --- a/CRM/Core/Payment/PayPalProIPN.php +++ b/CRM/Core/Payment/PayPalProIPN.php @@ -267,20 +267,18 @@ class CRM_Core_Payment_PayPalProIPN extends CRM_Core_Payment_BaseIPN { //set transaction type $txnType = $this->retrieve('txn_type', 'String'); //Changes for paypal pro recurring payment - $contributionStatuses = array_flip(CRM_Contribute_BAO_Contribution::buildOptions('contribution_status_id', 'validate')); switch ($txnType) { case 'recurring_payment_profile_created': - if (in_array($recur->contribution_status_id, [ - $contributionStatuses['Pending'], - $contributionStatuses['In Progress'], - ]) + if (in_array(CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_ContributionRecur', 'contribution_status_id', $recur->contribution_status_id), [ + 'Pending', 'In Progress', + ], TRUE) && !empty($recur->processor_id) ) { - echo "already handled"; + echo 'already handled'; return; } $recur->create_date = $now; - $recur->contribution_status_id = $contributionStatuses['Pending']; + $recur->contribution_status_id = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_ContributionRecur', 'contribution_status_id', 'Pending'); $recur->processor_id = $this->retrieve('recurring_payment_id', 'String'); $recur->trxn_id = $recur->processor_id; $subscriptionPaymentStatus = CRM_Core_Payment::RECURRING_PAYMENT_START; @@ -290,12 +288,12 @@ class CRM_Core_Payment_PayPalProIPN extends CRM_Core_Payment_BaseIPN { case 'recurring_payment': if (!$first) { if ($input['paymentStatus'] !== 'Completed') { - throw new CRM_Core_Exception("Ignore all IPN payments that are not completed"); + throw new CRM_Core_Exception('Ignore all IPN payments that are not completed'); } // In future moving to create pending & then complete, but this OK for now. // Also consider accepting 'Failed' like other processors. - $input['contribution_status_id'] = $contributionStatuses['Completed']; + $input['contribution_status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_ContributionRecur', 'contribution_status_id', 'Completed'); $input['invoice_id'] = md5(uniqid(rand(), TRUE)); $input['original_contribution_id'] = $this->getContributionID(); $input['contribution_recur_id'] = $this->getContributionRecurID(); @@ -305,12 +303,12 @@ class CRM_Core_Payment_PayPalProIPN extends CRM_Core_Payment_BaseIPN { } //contribution installment is completed - if ($this->retrieve('profile_status', 'String') == 'Expired') { + if ($this->retrieve('profile_status', 'String') === 'Expired') { if (!empty($recur->end_date)) { - echo "already handled"; + echo 'already handled'; return; } - $recur->contribution_status_id = $contributionStatuses['Completed']; + $recur->contribution_status_id = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_ContributionRecur', 'contribution_status_id', 'Completed'); $recur->end_date = $now; $sendNotification = TRUE; $subscriptionPaymentStatus = CRM_Core_Payment::RECURRING_PAYMENT_END; -- 2.25.1