diff --git a/htdocs/paypal/inc/triggers/interface_modPaypal_PaypalWorkflow.class.php b/htdocs/paypal/inc/triggers/interface_modPaypal_PaypalWorkflow.class.php index 603fbb2aa50..85d94919407 100644 --- a/htdocs/paypal/inc/triggers/interface_modPaypal_PaypalWorkflow.class.php +++ b/htdocs/paypal/inc/triggers/interface_modPaypal_PaypalWorkflow.class.php @@ -98,15 +98,41 @@ class InterfacePaypalWorkflow // Mettre ici le code a executer en reaction de l'action // Les donnees de l'action sont stockees dans $object - // Add Paypal fee - if ($action == 'PAYMENT_ADD_TO_BANK') + if ($action == 'PAYMENT_ADD_TO_BANK' && $object->fk_account == $conf->global->PAYPAL_BANK_ACCOUNT) { dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->rowid); - //var_dump($object); - // use num_paiement and fk_account + require_once(DOL_DOCUMENT_ROOT.'/paypal/lib/paypal.lib.php'); + require_once(DOL_DOCUMENT_ROOT."/paypal/lib/paypalfunctions.lib.php"); + require_once(DOL_DOCUMENT_ROOT."/compta/bank/class/account.class.php"); + if (! empty($conf->global->PAYPAL_API_USER) && ! empty($conf->global->PAYPAL_API_PASSWORD) + && ! empty($conf->global->PAYPAL_API_SIGNATURE)) + { + $resArray=GetTransactionDetails(trim($object->num_paiement)); + if (is_array($resArray)) + { + $ack = strtoupper($resArray["ACK"]); + if($ack!="SUCCESS" && $ack!="SUCCESSWITHWARNING") + { + $_SESSION['reshash']=$resArray; + $errors = GetApiError(); + dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". error=".$errors[0]); + return -2; + } + else + { + $langs->load('paypal'); + $acct=new Account($this->db); + $acct->fetch($object->fk_account); + $now=dol_now(); + $amount = -$resArray["FEEAMT"]; // get paypal fee amount and convert to negative + $ret = $acct->addline($now, 2, $langs->trans('FeeAmount'), $amount, $object->num_paiement, '', $user,'Paypal','Paypal'); + if ($ret < 0) return -1; + } + } + } } return 0; diff --git a/htdocs/paypal/lib/paypal.lib.php b/htdocs/paypal/lib/paypal.lib.php index 4a69acc90ea..bc107298e22 100755 --- a/htdocs/paypal/lib/paypal.lib.php +++ b/htdocs/paypal/lib/paypal.lib.php @@ -420,7 +420,9 @@ function GetDetails( $token ) */ function GetTransactionDetails($transactionID) { - global $API_Endpoint, $API_Url, $API_version, $USE_PROXY, $PROXY_HOST, $PROXY_PORT; + //declaring of global variables + global $conf, $langs; + global $API_Endpoint, $API_Url, $API_version, $USE_PROXY, $PROXY_HOST, $PROXY_PORT; global $PAYPAL_API_USER, $PAYPAL_API_PASSWORD, $PAYPAL_API_SIGNATURE; $transactionID=urlencode($transactionID); @@ -550,6 +552,29 @@ function hash_call($methodName,$nvpStr) global $API_Endpoint, $API_Url, $API_version, $USE_PROXY, $PROXY_HOST, $PROXY_PORT, $PROXY_USER, $PROXY_PASS; global $PAYPAL_API_USER, $PAYPAL_API_PASSWORD, $PAYPAL_API_SIGNATURE; + // TODO problem with this global if the request into triggers + $API_version="56"; + if ($conf->global->PAYPAL_API_SANDBOX) + { + $API_Endpoint = "https://api-3t.sandbox.paypal.com/nvp"; + $API_Url = "https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&token="; + } + else + { + $API_Endpoint = "https://api-3t.paypal.com/nvp"; + $API_Url = "https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token="; + } + // Clean parameters + $PAYPAL_API_USER=""; + if ($conf->global->PAYPAL_API_USER) $PAYPAL_API_USER=$conf->global->PAYPAL_API_USER; + $PAYPAL_API_PASSWORD=""; + if ($conf->global->PAYPAL_API_PASSWORD) $PAYPAL_API_PASSWORD=$conf->global->PAYPAL_API_PASSWORD; + $PAYPAL_API_SIGNATURE=""; + if ($conf->global->PAYPAL_API_SIGNATURE) $PAYPAL_API_SIGNATURE=$conf->global->PAYPAL_API_SIGNATURE; + $PAYPAL_API_SANDBOX=""; + if ($conf->global->PAYPAL_API_SANDBOX) $PAYPAL_API_SANDBOX=$conf->global->PAYPAL_API_SANDBOX; + // TODO END + dol_syslog("Paypal API endpoint ".$API_Endpoint); //setting the curl parameters. diff --git a/htdocs/paypal/transaction.php b/htdocs/paypal/transaction.php index a2a11177817..268502e618f 100644 --- a/htdocs/paypal/transaction.php +++ b/htdocs/paypal/transaction.php @@ -93,7 +93,24 @@ if(isset($transactionID) && ! empty($transactionID)) { $nvpStr.="&TRANSACTIONID=$transactionID"; } +// Call Paypal API +if (! empty($nvpStr)) +{ + $resArray=hash_call("TransactionSearch",$nvpStr); + //var_dump($resArray); + if (is_array($resArray)) + { + $reqArray=$_SESSION['nvpReqArray']; + + $ack = strtoupper($resArray["ACK"]); + if($ack!="SUCCESS" && $ack!="SUCCESSWITHWARNING") + { + $_SESSION['reshash']=$resArray; + $errors = GetApiError(); + } + } +} llxHeader(); @@ -225,26 +242,6 @@ if (empty($conf->global->PAYPAL_API_USER) || empty($conf->global->PAYPAL_API_PAS '; print '';