Step-by-step procedure to report credit card unauthorized tokenized recurring subscription

Unauthorized recurring charges on a tokenized card continue after you lock or replace the card because the charge is authorized against a token (a network token, a merchant card-on-file token, or a device token), not against the visible card number, and the token’s lifecycle is managed separately from the card’s. Root Cause Diagnosis Merchants store … Read more

Linux crontab script running manually via terminal but failing silently on schedule

A script that works in an interactive terminal but fails silently under cron runs in a different execution environment: cron starts jobs with a minimal environment (PATH=/usr/bin:/bin, SHELL=/bin/sh, no login or profile files sourced, no TTY, HOME set but working directory defaulting to $HOME), and it discards stdout and stderr unless a mailer is configured, … Read more

Wi-Fi direct thermal printer losing static IP after router lease time expiration

A Wi-Fi direct thermal printer “loses” its static IP at lease expiration because the static address is usually configured only in the printer’s own network settings, while the router’s DHCP server still considers that address part of its dynamic pool. When the lease timer for the printer’s MAC expires, or the printer renews against DHCP, … Read more

Fixing duplicate slug append (-2) on published WordPress pages with empty trash

WordPress appends -2 to a page slug when wp_unique_post_slug() finds another row in wp_posts with the same post_name, the same post_type, and the same post_parent, and a page in the trash still counts as a match because the check ignores post_status for everything except auto-draft, inherit, and revisions. Root Cause Diagnosis Trashed posts keep their … Read more

Playwright tracing zip file corrupted when terminating worker process prematurely

Playwright writes trace.zip only when the browser context closes cleanly, so a worker killed mid-run (SIGKILL, timeout teardown, OOM) leaves a truncated ZIP with no central directory, and unzip, show-trace, and trace.playwright.dev all report it as corrupted. Root Cause Diagnosis During a test, Playwright streams trace events into a temporary directory (<artifactsDir>/traces/, .trace and .network … Read more

Resolving duplicate debit on POS terminal with transaction failed paper slip

A duplicate debit with a “transaction failed” slip occurs when the issuer host approves and posts the authorization, but the approval response (ISO 8583 message type 0110, response code 00) never reaches the terminal, so the terminal prints a failure and the cardholder is charged for a sale the merchant has no record of. Root … Read more

Fixing iptables rules disappearing after Linux server restart (iptables-persistent)

iptables rules disappear after a reboot because they exist only in the kernel’s in-memory netfilter tables, and nothing reloads them at boot unless a service restores a saved ruleset from disk. Root Cause Diagnosis The iptables command modifies live kernel state. That state is discarded at shutdown, and the kernel boots with empty chains and … Read more

Label printer printing inverted black background with white text: Driver polarity fix

A label printer prints an inverted image (black background, white text) when the driver or the host application sends bitmap data with the opposite polarity from what the printer firmware expects, so every bit that should be “no dot” becomes “burn dot” and vice versa. The mismatch comes from one of three layers: a driver-level … Read more

WooCommerce tax calculation mismatch: Inclusive vs exclusive tax on coupon discounts

WooCommerce applies coupon discounts to line-item amounts as they are stored in the product price, and when prices are entered inclusive of tax, the discount is applied to the tax-inclusive figure and the tax is then backed out of the discounted amount, which can differ by a few cents from the tax computed on an … Read more

Handling sticky dynamic session IDs in Python Scrapy without losing referer headers

Sticky session IDs break Referer propagation in Scrapy because the session token typically lives in the URL (e.g., ;jsessionid=… or ?sid=…) or in a cookie that the server rotates mid-crawl, while RefererMiddleware sets Referer from response.url of the parent. When the server rewrites the URL with a new session ID, the dupefilter treats it as … Read more