Unfortunately Authorize.net allows the same invoice ID to be submitted twice. This means that the user can accidentally submit the form twice and thus be billed twice. This patch adds a check for a completed transaction with this invoice ID before submitting to Authorize.net. If one exists an error is thrown.
Also I made the existing "No CURL" error more descriptive (there are a couple of forum posts from confused admins that don't have CURL installed).