You’d just need an extended public key that gives unique addresses to buyers and a price API to provide rate conversions. Your private key can be offline or on a hard wallet. Also see btcpayserver for an open source bitpay clone that does what you are thinking and more