I'm sure there are packages available for apache, maybe nginx. You can probably use the lighttpd that runs the webgui and captive portal interfaces.
I've never done it. I only described how I would do it.
I mistakenly implied the server has to be local. It doesn't have to be. All that has to happen is all port 80 requests get redirected and there's no captive portal or anything blocking their access to the target site. Maintaining one external web server for all the sites probably makes sense. My post forwarded to localhost but that's just what I chose as an example.
You can NAT the destination address to your deadbeat page (happens on LAN in) then outbound NAT can translate the source address (happens on WAN out). All you would lose is the ability to see what source address hit your web server but who really cares. You're just trying to make them call you, pay you, and get you to turn it back on.