Um...the last time I wrote clearinghouse code, a "hard reject" is usually bad card, report stolen, wrong number (fat fingered), wrong exp, wrong CVC2/CVV. A "soft reject" is mismatched zip code, mismatched phone, good ZIP, but wrong address, etc. It is up to the developer and the company policy to determine what types of soft rejects are acceptable and which ones aren't. However, if they choose to allow any types of soft rejects through, the clearing house holds them responsible for bad transactions, so many don't allow any exceptions to rejects of any kind.
I think the OP's claim is BS - every piece of code I've ever done doesn't let the transaction go through if "hard rejected". We tell the user right there that "something is wrong with your payment info, please check and try again". It's then flagged in the system that the order never completed and that the RETURN CODE FROM THE PROCESSOR is "hard rejected" (usually without too much further info from the processor, btw). Usually it's a two-digit code that is the result (no details or miniscule details)
For a soft reject, we let it go through, but flag it for human verification the next business day before final processing and shipping. Once a person has looked at the transaction, they will contact the customer (if necessary to verify info), approve the trans, or decline it on the spot if it's obviously suspicious. If declined, our system automatically sends an email to the address listed on the sale attempt with a notice of decline and to contact our CS team for further assistance.
Now, most times, that email makes it through. However, with the newer automated spam filters that look at the content of a message, those messages get stripped out because they look suspicous (contains certain words like 'declined' or 'your transaction #') or if the admins have the sensitivty turned up too high (look at 'Spam Scoring'). And, with those systems, the customer doesn't have a chance - they don't even know that the message got dropped. It happened at their email provider BEFORE it made it into the system. Next thing your know, the customer is calling to complain that they didn't get their order, etc,... blah, blah, blah. Of course they didn't get their email about the decline. They don't even know how to use their email let alone think that their (free, public, heavily spammed) email filters messages for them without their knowledge! But, you can't explain that to them and it *MUST* be the fault of the company at that point.
For the company, some of those places (Canon included) can process hundreds or thousands of transactions per day via their accounting dept - remember that Canon also has a parts dept, service dept, wholesale, dealer network, etc. There is no way to call everybody that gets flagged as odd or suspicous. It's much more effective to send out that email first. Usually, the customer looks at their info and realizes that their card is registered to their office instead of home, so they re-order with the other address and all is good. For the other ones that DO call in, the reps now have the time (instead of making calls to everybody) to work in detail with that customer to get things resolved.
It's the state of internet business, nigerian scammers, and high CC theft nowadays. From the sounds of it, the OP got hard rejected because of other reasons - which is the clearinghouse/processor/banks fault. Canon's system kicked it out and flagged it. The OP ignored the message that it didn't go through, then called to complain they didn't get their order. Or, it wasn't hard rejected - but soft rejected and they didn't check/respond/get their email of such.
That's why it's important to get the account and card info for your CC's accurate and be sure that if you have more than card (or different cards at different addresses), you don't mix up the data. And, always white list locations you'll be traveling to - I've had a card declined because it was used "outside the normal area" - it was 63 miles from my home area and I was on vacation. And, they weren't planning on calling me until the next "business day". That was on a Sat evening at 9pm, luckily their CS was open 24/7 or I would have been unable to use that card until Mon 7am! (always travel with at least a $100 bill physically with you nowadays!)
Now, Paypal is another story, they'll screw the merchant without thought or consideration - they are 90% for the customer. We've had unscrupulous customers call PP about a "problems with their order" and get refunded. We've also had PP refund a customer (of course reversing charges so we lost money) because the customer said they never got the package - even though it was shipped UPS to them with tracking showing delivery. PP's response? It wasn't shipped adult signature required - so since it wasn't signed for, they can't show it made it there even though UPS showed it dropped off. Two or more of these and they lock your account for review. After review, they like to stick you with a reserve (holding your money for 180 days and then 10% or so). You can argue with them, but no matter how much proof you have, you (as a merchant) lose. They did good with the company for 3 years before this started, all because a customer ordered a product (~$300) that wasn't what they wanted, but waited over 45 days to try returning it and got refused by the company (duh!). They called PP and that's when the fiasco started.