Principal/WordPress Fullstack/Blueprints/WooCommerce/Sistema de puntos de fidelidad y canje en el checkout (Cart Fee API)
Volver a tarjetas «WooCommerce»
WooCommerce(ТЗ 43 из 54)
Especificación: Sistema de puntos de fidelidad y canje en el checkout (Cart Fee API)
WooCommerce5 шагов • +25 XP

Especificación: Sistema de puntos de fidelidad y canje en el checkout (Cart Fee API)

Desarrollo de un sistema interno de recompensas: tabla de movimientos en base de datos, asignación automática de porcentaje por compras realizadas, canje de puntos como descuento en el checkout y gestión de devoluciones.

~12 ч работыУровень: MiddleWC Cart Fee API ($cart->add_fee)User Meta Balance Storagewoocommerce_calculate_totalsOrder Status HooksAJAX Points Redemption UIAtomicity & Race Condition Guards
+5 XP за шаг
Выполнено 0 из 5 шагов (0%)
Трудозатраты~12 рабочих часов
Фриланс вилка~$540 – $900 (€480 – €840)
Оценка веб-студии~$1,140 – $1,920 (€1080 – €1800)

ТЗ заказчика (исходный бриф):

Queremos nuestro propio programa de fidelización por puntos. El cliente debe acumular el 5% de sus compras en puntos, consultar su saldo en su cuenta y descontarlos al comprar sin recurrir a plataformas externas de pago mensual.
Ключевые требования:
  • •Tabla de base de datos dedicada wp_loyalty_points para auditar todas las operaciones (asignaciones, canjes y caducidad)
  • •Asignación automática de puntos cuando el pedido pase al estado 'Completado'
  • •Módulo de canje en el checkout permitiendo elegir el importe a descontar
  • •Aplicación del descuento mediante la Cart Fee API nativa de WooCommerce ($cart->add_fee)
  • •Devolución o anulación automática de puntos ante cancelaciones o reembolsos
Ограничения проекта:
  • •Sin servicios SaaS externos con cuotas mensuales recurrentes
  • •El canje de puntos no puede superar el subtotal de artículos del carrito
Критерии приёмки (KPI):
  • Incremento del 22% en la tasa de compras recurrentes
  • Cero desajustes de saldo en más de 10.000 cuentas de clientes
  • Visualización inmediata del saldo actualizado en el panel de usuario

Конфигурация блупринта под условия проекта

Выберите архитектуру и стек — шаги роадмапа, структура файлов и примеры кода переключатся автоматически:

Пошаговое практическое руководство по ТЗ

Подробный разбор архитектуры, код реализации и советы эксперта по каждому этапу:

1
Этап 1 из 5

Paso 1: Creación de la tabla de movimientos y funciones auxiliares

~45 минСредний

Практическое руководство:

Cree la tabla {$wpdb->prefix}loyalty_points (id, user_id, order_id, points, type, date). Defina las funciones get_user_points_balance() y record_points_transaction().

План и контрольные точки реализации:
1Создать методы get_user_points и update_user_points
2Сохранять историю операций (дата, заказ, сумма, тип)
3Отображать текущий баланс в личном кабинете WooCommerce
Важные технические нюансы и подводные камни:

Utilice un libro de movimientos inmutable con trazabilidad en lugar de guardar únicamente una cifra en user_meta.

Совет эксперта (Best Practice):

История последних 50 транзакций: Хранение array_slice($log, -50) защищает таблицу wp_usermeta от неконтролируемого разрастания при частых покупках. (Важно: Для масштабных систем со 100 000+ покупателей выносите логирование транзакций в отдельную кастомную таблицу БД.)

Ожидаемый артефакт этапа:

Надежный сервис управления балансом с полной историей начислений и списаний.

PHP
<?php
declare(strict_types=1);

class AgenticLab_Points_Manager {
    private const META_KEY = '_agenticlab_loyalty_points';

    public static function get_balance(int $user_id): int {
        return (int) get_user_meta($user_id, self::META_KEY, true);
    }

    public static function add_points(int $user_id, int $points, int $order_id = 0, string $reason = ''): bool {
        if ($points <= 0) return false;

        $current = self::get_balance($user_id);
        $new_balance = $current + $points;
        update_user_meta($user_id, self::META_KEY, $new_balance);

        self::log_transaction($user_id, $points, 'credit', $order_id, $reason);
        return true;
    }

    public static function debit_points(int $user_id, int $points, int $order_id = 0, string $reason = ''): bool {
        $current = self::get_balance($user_id);
        if ($points <= 0 || $current < $points) return false;

        $new_balance = $current - $points;
        update_user_meta($user_id, self::META_KEY, $new_balance);

        self::log_transaction($user_id, -$points, 'debit', $order_id, $reason);
        return true;
    }

    private static function log_transaction(int $user_id, int $points, string $type, int $order_id, string $reason): void {
        $log = get_user_meta($user_id, '_agenticlab_points_history', true) ?: [];
        $log[] = [
            'timestamp' => time(),
            'points'    => $points,
            'type'      => $type,
            'order_id'  => $order_id,
            'reason'    => $reason,
        ];
        update_user_meta($user_id, '_agenticlab_points_history', array_slice($log, -50)); // Храним последние 50 записей
    }
}
2
Этап 2 из 5

Paso 2: Asignación automática de puntos tras completar el pedido

~40 минСредний
3
Этап 3 из 5

Paso 3: Interfaz de canje de puntos en el carrito y checkout

~45 минСредний
4
Этап 4 из 5

Paso 4: Aplicación del descuento con la Cart Fee API

~50 минСложный
5
Этап 5 из 5

Paso 5: Descuento definitivo de puntos y gestión de reembolsos

~30 минЛегкий

Типичные грабли на этом ТЗ

2 антипаттерна

Инструменты экосистемы Fullstack AI Lab для этого ТЗ

Интеграция