From 38aae692772e81c21a296940c483e53ca009118a Mon Sep 17 00:00:00 2001 From: Ruben Rodriguez Date: Tue, 6 Dec 2016 19:08:03 -0500 Subject: [PATCH] Reverted autocancel feature, moved to a branch --- trustcommerceIPN.php | 105 ++++--------------------------------------- 1 file changed, 9 insertions(+), 96 deletions(-) diff --git a/trustcommerceIPN.php b/trustcommerceIPN.php index 28ce87b..a2e5fc6 100644 --- a/trustcommerceIPN.php +++ b/trustcommerceIPN.php @@ -15,59 +15,18 @@ * You should have received a copy of the GNU General Public License * along with CiviCRM. If not, see . * - * Copyright 2016, Lisa Marie Maginnis (http://www.fsf.org) + * Copyright (C) 2012 + * Licensed to CiviCRM under the GPL v3 or higher + * + * Modified by Lisa Marie Maginnis (http://www.fsf.org) * */ -/** - * CiviCRM (Instant Payment Notification) IPN processor module for - * TrustCommerece. - * - * For full documentation on the - * TrustCommerece API, please see the TCDevGuide for more information: - * https://vault.trustcommerce.com/downloads/TCDevGuide.htm - * - * This module supports the following features: Single credit/debit card - * transactions, AVS checking, recurring (create, update, and cancel - * subscription) optional blacklist with fail2ban, - * - * @copyright Lisa Marie Maginnis (http://www.fsf.org) - * @version 1.0 - * @package org.fsf.payment.trustcommerce.ipn - */ - -define("MAX_FAILURES", 4); - class CRM_Core_Payment_trustcommerce_IPN extends CRM_Core_Payment_BaseIPN { - - /** - * Inheret - * - * @return void - */ function __construct() { parent::__construct(); } - function getLastFailures($recur_id) { - $sql=<< (SELECT MAX(id) FROM civicrm_contribution WHERE contribution_recur_id = $recur_id AND contribution_status_id = 1); -EOF; - - $result = CRM_Core_DAO::executeQuery($sql); - if($result->fetch()) { - $failures = $result->numfails; - } else { - $failures = NULL; - } - - return $failures; - - } function main($component = 'contribute') { static $no = NULL; @@ -96,7 +55,7 @@ EOF; $ids['trxn_id'] = $input['trxn_id']; if($this->checkDuplicate($input, $ids) != NULL) { - $msg = 'TrustCommerceIPN: Skipping duplicate contribution: for contact: '.$ids['contact'].' amount: $'.$input['amount'].' trxn_id: '.$input['trxn_id']."\n"; + $msg = 'TrustCommerceIPN: Skipping duplicate contribution: '.$ids['contribution'].' for contact: '.$ids['contact'].' amount: $'.$input['amount'].' trxn_id: '.$input['trxn_id']."\n"; echo $msg; CRM_Core_Error::debug_log_message($msg); exit; @@ -128,48 +87,10 @@ EOF; return $this->processRecur($input, $ids, $objects, $first); - } - } - } - - protected function disableAutorenew($recur_id) { - /* Load payment processor object */ - // HARD CODED - $msg = 'TrustCommerceIPN: MAX_FAILURES hit, unstoring billing ID: '.$recur_id."\n"; - - CRM_Core_Error::debug_log_message($msg); - echo $msg; - - $sql = "SELECT user_name, password, url_site FROM civicrm_payment_processor WHERE id = 8 LIMIT 1"; - - $result = CRM_Core_DAO::executeQuery($sql); - if($result->fetch()) { - $request = array( - 'custid' => $result->user_name, - 'password' => $result->password, - 'action' => 'unstore', - 'billingid' => $recur_id - ); - - $update = 'UPDATE civicrm_contribution_recur SET contribution_status_id = 3 WHERE processor_id = "'.$recur_id.'";'; - $result1 = CRM_Core_DAO::executeQuery($update); - - $tc = tclink_send($request); - if(!$tc) { - return -1; - } - - return TRUE; - - } else { - echo 'CRITICAL ERROR: Could not load payment processor object'; - return; - } - - } +} protected function checkDuplicate($input, $ids) { // $sql='select id from civicrm_contribution where receive_date like \''.$input['date'].'%\' and total_amount='.$input['amount'].' and contact_id='.$ids['contact'].' and contribution_status_id = 1 limit 1'; @@ -264,7 +185,7 @@ EOF; $recur->contribution_status_id = array_search($statusName, $contributionStatus); $recur->save(); $input['is_test'] = 0; - $msg = 'TrustCommerceIPN: Created contribution: for contact: '.$ids['contact'].' amount: $'.$input['amount'].' trxn_id: '.$input['trxn_id'].' status: Completed'."\n"; + $msg = 'TrustCommerceIPN: Created contribution: '.$ids['contribution'].' for contact: '.$ids['contact'].' amount: $'.$input['amount'].' trxn_id: '.$input['trxn_id'].' status: Completed'."\n"; echo $msg; CRM_Core_Error::debug_log_message($msg); @@ -278,20 +199,13 @@ EOF; $recur->cancel_date = $now; $recur->save(); - $msg = 'TrustCommerceIPN: Created contribution: for contact: '.$ids['contact'].' amount: $'.$input['amount'].' trxn_id: '.$input['trxn_id'].' status: Failed'."\n"; + $msg = 'TrustCommerceIPN: Created contribution: '.$ids['contribution'].' for contact: '.$ids['contact'].' amount: $'.$input['amount'].' trxn_id: '.$input['trxn_id'].' status: Failed'."\n"; echo $msg; CRM_Core_Error::debug_log_message($msg); /* Disable cancelling transactions */ $input['skipComponentSync'] = 1; - - /* Action for repeated failures */ - if(MAX_FAILURES <= $this->getLastFailures($ids['contributionRecur'])) { - //$this->disableAutoRenew(($ids['contributionRecur'])); - $this->disableAutorenew($ids['processor_id']); - } - - return $this->failed($objects, $transaction); + return $this->failed($objects, $transaction, $input); } if ($sendNotification) { @@ -322,7 +236,6 @@ EOF; $ids['contribution'] = $result->coid; $ids['contributionRecur'] = $result->id; $ids['contact'] = $result->contact_id; - $ids['processor_id'] = $billingid; if (!$ids['contributionRecur']) { CRM_Core_Error::debug_log_message("Could not find billingid: ".$billingid); -- 2.25.1