@@ -189,7 +189,9 @@ class CRM_Core_Payment_StripeIPN {
returnTRUE;
}
else{
$this->createNextContributionForRecur();
if(!$this->createNextContributionForRecur()){
returnFALSE;
}
}
returnTRUE;
}
...
...
@@ -214,7 +216,9 @@ class CRM_Core_Payment_StripeIPN {
else{
// We have a recurring contribution but have not yet received invoice.finalized so we don't have the next contribution yet.
// invoice.payment_succeeded sometimes comes before invoice.finalized so trigger the same behaviour here to create a new contribution
$this->createNextContributionForRecur();
if(!$this->createNextContributionForRecur()){
returnFALSE;
}
// Now get the contribution we just created.
$this->getContribution();
}
...
...
@@ -391,7 +395,9 @@ class CRM_Core_Payment_StripeIPN {
* Create the next contribution for a recurring contribution
* This happens when Stripe generates a new invoice and notifies us (normally by invoice.finalized but invoice.payment_succeeded sometimes arrives first).
@@ -9,6 +9,13 @@ Releases use the following numbering system:
***[BC]**: Items marked with [BC] indicate a breaking change that will require updates to your code if you are using that code in your extension.
## Release 6.5.5 (not yet released 2020-11-17)
**Requires mjwshared (Payment Shared) 0.9.9**
* Catch and log error if Stripe tries to process a duplicate IPN at the same time. This should resolve issues with "Contribution already completed" exceptions in the logs.
* The attempted processing of a duplicate does not seem to cause any data issues but does trigger an exception which is logged. This doesn't fix that underlying issue but
does write a more user-friendly error with context to the CiviCRM logs.
## Release 6.5.4
**This release REQUIRES that you upgrade mjwshared to 0.9.7**.