REST /track/conversion vrací 401 nebo 429

HTTP 401 Unauthorized

Chyba: affinite_invalid_api_key

Příčina: chybí nebo nesprávný X-Affinite-API-Key header.

Řešení:

  • Verifikujte hodnotu klíče:
wp option get affinite_wp_affiliate_api_key
  • V request klientovi check, že header je X-Affinite-API-Key (case-sensitive ve většině HTTP libraries, ale WP REST je case-insensitive).
  • Pozor na trailing whitespace v klíči — některé tools jej přidávají při copy-paste.
  • Plugin používá hash_equals() pro timing-safe comparison.

Chyba: affinite_api_key_not_configured (503)

Příčina: option affinite_wp_affiliate_api_key v DB neexistuje. Stávalo se po upgrade z verze 1.1, kde aktivace neproběhla.

Řešení:

# Vygenerujte nový klíč
wp eval 'update_option("affinite_wp_affiliate_api_key", wp_generate_password(48, false), false);'

# Nebo deactivate + activate plugin přes admin nebo CLI:
wp plugin deactivate affinite-wp-affiliate
wp plugin activate affinite-wp-affiliate

HTTP 429 Too Many Requests

Chyba: affinite_rate_limit_exceeded

Příčina: per-IP rate limit je 10 requestů / 60 sekund. Vaše integrace pravděpodobně volá endpoint v batch nebo neoptimalizovaně.

Řešení:

  • Throttle na straně klienta — přidejte delay mezi requesty.
  • Retry s exponential backoff — pokud 429, počkejte 5/10/20 sekund a zkuste znovu.
  • Server-side proxy — pokud máte hodně klientů, pošlete je přes vlastní proxy s vyšším limitem.

Chyba: affinite_rate_limit_unknown_ip (400)

Plugin nemohl zjistit IP klienta (REMOTE_ADDR chybí nebo není validní IP). Stává se v některých CLI/cron kontextech.

Řešení: volejte endpoint výhradně z reálných HTTP requestů. Pro internal automation použijte přímý PHP call:

// Bypass REST + rate limit:
$cm = new AffiniteWPAffiliateCommissionCommissionManager();
$cm->create_commission([...]);

HTTP 400 Bad Request

  • invalid_affiliate — affiliate_code neexistuje nebo není active.
  • invalid_amount — amount mimo rozsah (0 < amount ≤ TRACK_CONVERSION_MAX_AMOUNT, default 1 000 000).
  • missing required parameter — chybí affiliate_code nebo amount.

Logging

Pro debug zapněte WP_DEBUG_LOG a sledujte:

tail -f wp-content/debug.log | grep -i affinite