0) { $donation = Donation::find($donationId); if ($donation && $donation->subscription) { $donation->gatewayTransactionId = $gatewayTransactionId; $donation->save(); if ( ! empty($gatewaySubscriptionId) && empty($donation->subscription->gatewaySubscriptionId)) { $donation->subscription->gatewaySubscriptionId = $gatewaySubscriptionId; $donation->subscription->save(); } } } else { $donation = give()->donations->getByGatewayTransactionId($gatewayTransactionId); if (! $donation && ! empty($gatewaySubscriptionId) && $subscription = give()->subscriptions->getByGatewaySubscriptionId($gatewaySubscriptionId)) { $donation = $subscription->initialDonation(); if ($donation) { $donation->gatewayTransactionId = $gatewayTransactionId; $donation->save(); } } } if ( ! $donation || ! $donation->subscription || ! $donation->type->isSubscription()) { PaymentGatewayLog::error( sprintf('The first donation was not updated for the gateway transaction ID %s because no valid subscription donation was found to update.', $gatewayTransactionId), [ 'Gateway Subscription ID' => $gatewaySubscriptionId, 'Gateway Transaction ID' => $gatewayTransactionId, 'Donation ID' => $donationId, 'Message' => $message, ] ); return; } try { if ($setDonationComplete && ! $donation->status->isComplete()) { if (empty($message)) { $message = __('Subscription First Donation Completed.', 'give'); } (new UpdateDonationStatus())($donation, DonationStatus::COMPLETE(), $message); } else { if (empty($message)) { $message = __('Subscription First Donation Updated.', 'give'); } DonationNote::create([ 'donationId' => $donation->id, 'content' => $message . ' ' . sprintf(__('%s transaction ID: %s', 'give'), $donation->gateway()->getName(), $donation->gatewayTransactionId ), ]); } if ($setSubscriptionActive && ! $donation->subscription->status->isActive()) { (new UpdateSubscriptionStatus())($donation->subscription, SubscriptionStatus::ACTIVE(), __('Subscription Active After The First Donation Got Completed.', 'give')); } } catch (Exception $e) { PaymentGatewayLog::error( sprintf('Subscription First Donation Failed! Error: %s', $e->getCode() . ' - ' . $e->getMessage()), [ 'Donation Id' => $donation->id, 'Gateway Transaction Id' => $gatewayTransactionId, 'Gateway Subscription Id' => $donation->subscriptionId, 'message' => $message, ] ); } } }