Skip to content

Contributions held for fraud then approved don't send receipts

JonGold requested to merge JonGold/mjwshared:receipts-on-non-recurring into master

When a contribution is made that's held by the Authorize.net Fraud Detection Suite, it doesn't send a receipt to the donor when the payment is approved.

net.authorize.payment.fraud.approved events call CRM_Core_Payment_MJWIPNTrait::updateContributionCompleted() just like recurring payment events. But that method determines whether to send a receipt based on getSendEmailReceipt(), which assumes a recurring payment.

This MR teaches getSendEmailReceipt() to calculate whether to send a receipt based on the contribution page ID (for non-recurring contributions).

The edge case I'm not sure about is a contribution entered through the back-end that gets held for fraud. To my knowledge, the determination to send the receipt in that case is made at the form layer. That probably needs to change in core, but is out of scope here.

Merge request reports