SubscriptionId, $message); } /** * @since 4.5.0 */ public function subscriptionExpired(string $gatewaySubscriptionId, string $message = '') { $this->setSubscriptionStatus(SubscriptionStatus::EXPIRED(), $gatewaySubscriptionId, $message); } /** * @since 4.5.0 */ public function subscriptionFailing(string $gatewaySubscriptionId, string $message = '') { $this->setSubscriptionStatus(SubscriptionStatus::FAILING(), $gatewaySubscriptionId, $message); } /** * @since 4.5.0 */ public function subscriptionPaused(string $gatewaySubscriptionId, string $message = '') { $this->setSubscriptionStatus(SubscriptionStatus::PAUSED(), $gatewaySubscriptionId, $message); } /** * @since 4.5.0 */ public function subscriptionPending(string $gatewaySubscriptionId, string $message = '') { $this->setSubscriptionStatus(SubscriptionStatus::PENDING(), $gatewaySubscriptionId, $message); } /** * @since 4.5.0 */ public function subscriptionSuspended(string $gatewaySubscriptionId, string $message = '') { $this->setSubscriptionStatus(SubscriptionStatus::SUSPENDED(), $gatewaySubscriptionId, $message); } /** * @since 4.5.0 * * @return int The webhook event ID. Zero if there was an error setting the event. */ public function subscriptionFirstDonation( string $gatewayTransactionId, string $message = '', bool $setSubscriptionActive = true, bool $setDonationComplete = true, string $gatewaySubscriptionId = '' ): int { $hook = sprintf('givewp_%s_webhook_event_subscription_first_donation', $this->gatewayId); $args = [$gatewayTransactionId, $message, $setSubscriptionActive, $setDonationComplete, $gatewaySubscriptionId]; $group = $this->getGroup(); return AsBackgroundJobs::enqueueAsyncAction($hook, $args, $group); } /** * @since 4.5.0 * * @return int The webhook event ID. Zero if there was an error setting the event. */ public function subscriptionRenewalDonation( string $gatewaySubscriptionId, string $gatewayTransactionId, string $message = '' ): int { $hook = sprintf('givewp_%s_webhook_event_subscription_renewal_donation', $this->gatewayId); $args = [$gatewaySubscriptionId, $gatewayTransactionId, $message]; $group = $this->getGroup(); return AsBackgroundJobs::enqueueAsyncAction($hook, $args, $group); } /** * @since 4.5.0 * * @return int The webhook event ID. Zero if there was an error setting the event. */ protected function setDonationStatus( DonationStatus $status, string $gatewayTransactionId, string $message = '', $skipRecurringDonations = false ): int { $hook = sprintf('givewp_%s_webhook_event_donation_status_%s', $this->gatewayId, $status->getValue()); $args = [$gatewayTransactionId, $message, $skipRecurringDonations]; $group = $this->getGroup(); return AsBackgroundJobs::enqueueAsyncAction($hook, $args, $group); } /** * @since 4.5.0 * * @return int The webhook event ID. Zero if there was an error setting the event. */ protected function setSubscriptionStatus( SubscriptionStatus $status, string $gatewaySubscriptionId, string $message = '', bool $initialDonationShouldBeCompleted = false ): int { $hook = sprintf('givewp_%s_webhook_event_subscription_status_%s', $this->gatewayId, $status->getValue()); $args = [$gatewaySubscriptionId, $message]; if ($initialDonationShouldBeCompleted) { $args[] = $initialDonationShouldBeCompleted; } $group = $this->getGroup(); return AsBackgroundJobs::enqueueAsyncAction($hook, $args, $group); } /** * @since 4.5.0 */ protected function getGroup(): string { return 'givewp-payment-gateway-' . $this->gatewayId; } }