I've posted this on RailsForum.com and in the ActiveMerchant talk group, and haven't received an answer, so I figure I'll try here.
Hello. I've been searching for information on this for a while, but my google fu is evidently weak--hardly anyone even talks about email receipts re: ActiveMerchant, much less my specific problem. In any case, I have a client whose customers, we had just discovered, had not been receiving email receipts from Authorize.net. All was correct on the Auth.net config--what I discovered was that my app was not sending the customer email. I fixed this problem, but it didn't fix the issue--even though the email was getting sent, using the options hash in AuthorizeNetGateway#purchase, Authorize.net was still not sending receipts. I investigated further, and found this in the ActiveMerchant code:
BEGIN RUBY
module ActiveMerchant #:nodoc: module Billing #:nodoc: class AuthorizeNetGateway < Gateway
...snip...
def add_customer_data(post, options) if options.has_key? :email post[:email] = options[:email] post[:email_customer] = false end
if options.has_key? :customer post[:cust_id] = options[:customer] end
if options.has_key? :ip post[:customer_ip] = options[:ip] end end ...etc...
END RUBY
add_customer_data is called within purchase to process its options hash. My question is in reference to the line that processes the email key: Why on earth does it, after checking to see if the email entry exists, set customer_email explicitly to false? Why is this not based on some sort of configurable option, or just let alone (Authorize.net will check the merchant-set options if no customer_email field is sent)? It's remarkably puzzling, so if any of you fine fellows knows the answer, please let me know.
Cheers, A. Wilson