How do payment processors like bitpay work? As far as i understood you can only have one address per key pair, so do they generate a whole new pair for every payment? Or can this be done using HDWallets?
They generate a private key and an address corresponding to that private key everytime you see BitPay's payment page (even if you don't pay they keep the private key and that private key is generated only for one payment). When they receive payment to that address, they send your money from that address to their main wallet.
They possibly using a wallet
You first request a payment then the server-side generates a bitcoin address, when it generated, it send back to the client side, they will then the page automatically refresh to see if the coin is sent to the address, if not then wait (until the timer) and if sent, it will continue to refresh until it meets the requirement for the confirmations. When it is meet then depend on your provider, they either choose to save the amount they owned you on a database or immediately send u the coin.
If they choose for the database then they will send u the coin after the requirement is meet with the receive address you provided.
If they choose to send you immediately then as soon as the coin is receive and has the confirmation, an api will be called to send u the coins.