Skip to content

Commit

Permalink
Merge pull request #18020 from eileenmcnaughton/pptrans
Browse files Browse the repository at this point in the history
[REF] Stop instantiating transaction in PaypalIPN
  • Loading branch information
seamuslee001 authored Aug 1, 2020
2 parents 94ec0b7 + 156534c commit eae974d
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 10 deletions.
12 changes: 8 additions & 4 deletions CRM/Core/Payment/BaseIPN.php
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ public function loadObjects($input, &$ids, &$objects, $required, $paymentProcess
* @return bool
* @throws \CiviCRM_API3_Exception
*/
public function failed(&$objects, &$transaction, $input = []) {
public function failed(&$objects, $transaction = NULL, $input = []) {
$contribution = &$objects['contribution'];
$memberships = [];
if (!empty($objects['membership'])) {
Expand Down Expand Up @@ -266,7 +266,9 @@ public function failed(&$objects, &$transaction, $input = []) {
}
}

$transaction->commit();
if ($transaction) {
$transaction->commit();
}
Civi::log()->debug("Setting contribution status to Failed");
return TRUE;
}
Expand Down Expand Up @@ -299,7 +301,7 @@ public function pending(&$objects, &$transaction) {
* @return bool
* @throws \CiviCRM_API3_Exception
*/
public function cancelled(&$objects, &$transaction, $input = []) {
public function cancelled(&$objects, $transaction = NULL, $input = []) {
$contribution = &$objects['contribution'];
$memberships = [];
if (!empty($objects['membership'])) {
Expand Down Expand Up @@ -353,7 +355,9 @@ public function cancelled(&$objects, &$transaction, $input = []) {
$this->cancelParticipant($participant->id);
}
}
$transaction->commit();
if ($transaction) {
$transaction->commit();
}
Civi::log()->debug("Setting contribution status to Cancelled");
return TRUE;
}
Expand Down
11 changes: 5 additions & 6 deletions CRM/Core/Payment/PayPalIPN.php
Original file line number Diff line number Diff line change
Expand Up @@ -256,18 +256,18 @@ public function single(&$input, &$ids, &$objects, $recur = FALSE, $first = FALSE
$contribution->total_amount = $input['amount'];
}

$transaction = new CRM_Core_Transaction();

$status = $input['paymentStatus'];
if ($status == 'Denied' || $status == 'Failed' || $status == 'Voided') {
return $this->failed($objects, $transaction);
$this->failed($objects);
return;
}
if ($status === 'Pending') {
Civi::log()->debug('Returning since contribution status is Pending');
return;
}
elseif ($status == 'Refunded' || $status == 'Reversed') {
return $this->cancelled($objects, $transaction);
$this->cancelled($objects);
return;
}
elseif ($status !== 'Completed') {
Civi::log()->debug('Returning since contribution status is not handled');
Expand All @@ -277,13 +277,12 @@ public function single(&$input, &$ids, &$objects, $recur = FALSE, $first = FALSE
// check if contribution is already completed, if so we ignore this ipn
$completedStatusId = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed');
if ($contribution->contribution_status_id == $completedStatusId) {
$transaction->commit();
Civi::log()->debug('PayPalIPN: Returning since contribution has already been handled. (ID: ' . $contribution->id . ').');
echo 'Success: Contribution has already been handled<p>';
return;
}

$this->completeTransaction($input, $ids, $objects, $transaction, $recur);
$this->completeTransaction($input, $ids, $objects);
}

/**
Expand Down

0 comments on commit eae974d

Please sign in to comment.