CiviCRM is not updating recurring transactions from Authorize.net
I have this extension installed and credit card payment processor configured and have been running tests with it. What I have found is that while one-off transactions are completing and updating in CiviCRM, recurring transactions, while completing on the Authorize.net side, are not fetching and updating transactions with a 'Completed' status.
I was getting the following error:
Oct 01 06:39:14 [info]
$Fatal Error Details = array(3) {
["message"]=>
string(48) "You have not configured your signature properly."
["code"]=>
NULL
["exception"]=>
object(JohnConde\Authnet\AuthnetInvalidCredentialsException)#280 (7) {
["message":protected]=>
string(48) "You have not configured your signature properly."
["string":"Exception":private]=>
string(0) ""
["code":protected]=>
int(0)
["file":protected]=>
string(105) "/var/www/website/public/civi/extensions/authnet/vendor/stymiee/authnetjson/src/authnet/AuthnetWebhook.php"
["line":protected]=>
int(64)
["trace":"Exception":private]=>
array(19) {
[0]=>
array(6) {
["file"]=>
string(79) "/var/www/website/public/civi/extensions/authnet/CRM/Core/Payment/AuthNetIPN.php"
["line"]=>
int(44)
["function"]=>
string(11) "__construct"
["class"]=>
string(32) "JohnConde\Authnet\AuthnetWebhook"
["type"]=>
string(2) "->"
["args"]=>
array(3) {
[0]=>
string(0) ""
[1]=>
string(901) "x_response_code=1&x_response_reason_code=1&x_response_reason_text=This+transaction+has+been+approved%2E&x_avs_code=Y&x_auth_code=231172&x_trans_id=41615289918&x_method=CC&x_card_type=Visa&x_account_number=XXXX0301&x_first_name=Jasper&x_last_name=Lauderdale&x_company=&x_address=1460+Bedford+Ave+Apt+3A&x_city=Brooklyn&x_state=NY&x_zip=11216&x_country=US&x_phone=&x_fax=&x_email=jasperlauderdale%40gmail%2Ecom&x_invoice_num=10457&x_description=Online+Contribution%3A+Grassroots+Fundraising&x_type=auth%5Fcapture&x_cust_id=17108&x_ship_to_first_name=&x_ship_to_last_name=&x_ship_to_company=&x_ship_to_address=&x_ship_to_city=&x_ship_to_state=&x_ship_to_zip=&x_ship_to_country=&x_amount=10%2E00&x_tax=0%2E00&x_duty=0%2E00&x_freight=0%2E00&x_tax_exempt=FALSE&x_po_num=&x_MD5_Hash=&x_SHA2_Hash=&x_cvv2_resp_code=&x_cavv_response=&x_test_request=false&x_subscription_id=32409024&x_subscription_paynum=33"
[...]
The error goes on for a while but did not want to flood the issue with it. The notable message is "You have not configured your signature properly", though for the Authorize.net processor native to CiviCRM not having this key was not an issue for fetching the correct contribution status.
I corrected this, so now the signature key API key and transaction key are all in place, cleared the caches, but civicrm does not seem to be fetching the correct status of the transactions. Might be good to make these three fields required, if possible.
I am running an additional test to see if a new recurring transaction completes in CiviCRM, but presently the existing recurring transactions that have completed in Authorize have not updated in Civi.
I am seeing the following in the logs now that the previous error has been resolved:
Oct 03 13:44:01 [info]
$Fatal Error Details = array(3) {
["message"]=>
string(45) "Invalid JSON sent in the Webhook notification"
["code"]=>
NULL
["exception"]=>
object(JohnConde\Authnet\AuthnetInvalidJsonException)#280 (7) {
["message":protected]=>
string(45) "Invalid JSON sent in the Webhook notification"
["string":"Exception":private]=>
string(0) ""
["code":protected]=>
int(0)
["file":protected]=>
string(105) "/var/www/website/public/civi/extensions/authnet/vendor/stymiee/authnetjson/src/authnet/AuthnetWebhook.php"
["line":protected]=>
int(67)
["trace":"Exception":private]=>
array(19) {
[0]=>
array(6) {
["file"]=>
string(79) "/var/www/website/public/civi/extensions/authnet/CRM/Core/Payment/AuthNetIPN.php"
["line"]=>
int(44)
["function"]=>
string(11) "__construct"
["class"]=>
string(32) "JohnConde\Authnet\AuthnetWebhook"
["type"]=>
string(2) "->"
["args"]=>
array(3) {
[0]=>
string(128) "2C73D1DB7DD63D24731664507BAC1F2E98966B5CCAE94249DF234F515F31A08A069A66ADE6DF5A5133DFC7B85A49994A9D299BF433CB6E0C8B20D440C62C7D1F"
[1]=>
string(1015) "x_response_code=1&x_response_reason_code=1&x_response_reason_text=This+transaction+has+been+approved%2E&x_avs_code=Y&x_auth_code=271199&x_trans_id=61944920335&x_method=CC&x_card_type=American+Express&x_account_number=XXXX3020&x_first_name=Jamila&x_last_name=Khan&x_company=&x_address=217+31st+st&x_city=Brooklyn&x_state=NY&x_zip=11232&x_country=US&x_phone=&x_fax=&x_email=kristin%2B5%40palantetech%2Ecoop&x_invoice_num=1c73d371b1435b4b582b&x_description=Online+Contribution%3A+Grassroots+Fundraising&x_type=auth%5Fcapture&x_cust_id=24369&x_ship_to_first_name=&x_ship_to_last_name=&x_ship_to_company=&x_ship_to_address=&x_ship_to_city=&x_ship_to_state=&x_ship_to_zip=&x_ship_to_country=&x_amount=1%2E00&x_tax=0%2E00&x_duty=0%2E00&x_freight=0%2E00&x_tax_exempt=FALSE&x_po_num=&x_MD5_Hash=&x_SHA2_Hash=40E6EBBF93BB0C43BEDD29E2CF1D8445137DBC261E3D124C1E33CAFA7552559FF0ABEEE29E6C18A5CAF18A91D540923CF851DD2658489D93A9BBF0E87160FE78&x_cvv2_resp_code=M&x_cavv_response=&x_test_request=false&x_customer_type=individual"
[...]
and this was followed by
Oct 03 13:44:02 [info] Contribution record updated successfully
Oct 03 13:44:04 [info] Receipt sent
Oct 03 13:44:04 [info] Success: Database updated
So curious if that invalid json may be getting in the way of recurring contribution statuses from being fetched properly.
Authorize batches recurring contributions daily, so it will take until tomorrow to see whether this most recent test transaction updates in civicrm, but I did want to flag these things.
Any thoughts?