Home / eCommerce / Notify if Stripe is put in Test Mode
Duplicate Snippet

Embed Snippet on Your Site

Notify if Stripe is put in Test Mode

Notification for Test mode on Update

Ilana Borsje PRO
<10
Code Preview
php
<?php
add_action('update_option_woocommerce_stripe_settings', function($old_value, $value, $option) {
    if (!isset($old_value['testmode']) || !isset($value['testmode'])) {
        return;
    }
    if ($old_value['testmode'] === $value['testmode']) {
        return;
    }
    $optionName = 'woocommerce_stripe_testmode_log';
    $entry = [
        'time'   => current_time('mysql'),
        'uri'    => $_SERVER['REQUEST_URI'] ?? '',
        'hook'   => current_filter(),
        'old'    => $old_value['testmode'],
        'new'    => $value['testmode'],
        'user'   => get_current_user_id(),
        'ip'     => $_SERVER['REMOTE_ADDR'] ?? '',
        'full'   => $value, // entire new option value
        'context' => [
            'is_admin' => is_admin(),
            'is_ajax'  => wp_doing_ajax(),
            'is_cron'  => defined('DOING_CRON') && DOING_CRON,
        ],
        'trace'  => array_slice(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS), 0, 5),
    ];
    // Send notification email about testmode change
    $sendTo = [
        '[email protected]',
        '[email protected]',
        '[email protected]',
    ];
    $subject = 'WooCommerce Stripe Testmode Changed';
    $body = sprintf(
        "Testmode changed from '%s' to '%s' by user ID %d on %s\nRequest URI: %s",
        $old_value['testmode'],
        $value['testmode'],
        get_current_user_id(),
        current_time('mysql'),
        $_SERVER['REQUEST_URI'] ?? ''
    );
    $headers = ['Content-Type: text/plain; charset=UTF-8'];
    $emailResults = [];
    foreach ($sendTo as $email) {
        $result = [
            'email' => $email,
            'sent' => false,
            'error' => null,
        ];
        try {
            $mailSent = wp_mail($email, $subject, $body, $headers);
            $result['sent'] = (bool)$mailSent;
        } catch (\Exception $e) {
            $result['error'] = $e->getMessage();
            if (function_exists('error_log')) {
                error_log('Stripe testmode email error: ' . $e->getMessage());
            }
        }
        $emailResults[] = $result;
    }
    $entry['email_results'] = $emailResults;
    $log = get_option($optionName, []);
    if (!is_array($log)) {
        $log = [];
    }
    $log[] = $entry;
    $maxLogEntries = 10;
    if (count($log) > $maxLogEntries) {
        $log = array_slice($log, -$maxLogEntries, $maxLogEntries, true);
    }
    // recursion protection
    remove_action('update_option_woocommerce_stripe_settings', __FUNCTION__, 10);
    update_option($optionName, $log, false);
    add_action('update_option_woocommerce_stripe_settings', __FUNCTION__, 10, 3);
}, 10, 3);

Comments

Add a Comment