LLMS_Order::maybe_schedule_retry()
Handles scheduling recurring payment retries when the gateway supports them
Return Return
(null|boolean) Returns null
if the order cannot be retried, false
when all retry rules have been tried (or none exist), and true
when a retry is scheduled.
Source Source
File: includes/models/model.llms.order.php
public function maybe_schedule_retry() { if ( ! $this->can_be_retried() ) { return null; } // Get the index of the rule to use for this retry. $current_rule_index = $this->get( 'last_retry_rule' ); if ( '' === $current_rule_index ) { $current_rule_index = 0; } else { ++$current_rule_index; } $rules = $this->get_retry_rules(); $current_rule = $rules[ $current_rule_index ] ?? false; // No rule to run. if ( ! $current_rule ) { $this->set_status( 'failed' ); $this->set( 'last_retry_rule', '' ); $this->add_note( esc_html__( 'Maximum retry attempts reached.', 'lifterlms' ) ); /** * Action triggered when there are not more recurring payment retry rules. * * @since 3.10.0 * * @param LLMS_Order $order The order object. */ do_action( 'llms_automatic_payment_maximum_retries_reached', $this ); return false; } $timestamp = current_time( 'timestamp' ) + $current_rule['delay']; $this->set_date( 'next_payment', date_i18n( 'Y-m-d H:i:s', $timestamp ) ); $this->set_status( $current_rule['status'] ); $this->set( 'last_retry_rule', $current_rule_index ); $this->add_note( sprintf( // Translators: %s = next attempt date. esc_html__( 'Automatic retry attempt scheduled for %s', 'lifterlms' ), date( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), $timestamp ) ) ); // If notifications should be sent, trigger them. if ( $current_rule['notifications'] ) { /** * Triggers the "Payment Retry Scheduled" notification. * * @since 3.10.0 * * @param LLMS_Order $order The order object. */ do_action( 'llms_send_automatic_payment_retry_notification', $this ); } /** * Action triggered after a recurring payment retry is successfully scheduled. * * @since 3.10.0 * * @param LLMS_Order $order The order object. */ do_action( 'llms_automatic_payment_retry_scheduled', $this ); return true; }
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
Version | Description |
---|---|
7.0.0 | Added return value. |
3.10.0 | Introduced. |