donations->getByGatewayTransactionId($gatewayTransactionId); if (! $donation && ! empty($gatewaySubscriptionId) && $subscription = give()->subscriptions->getByGatewaySubscriptionId($gatewaySubscriptionId)) { $donation = $subscription->initialDonation(); $donation->gatewayTransactionId = $gatewayTransactionId; $donation->save(); } if ( ! $donation || ! $donation->type->isSubscription() || $donation->id !== $donation->subscription->initialDonation()->id) { 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, ] ); } } }