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