'."\n";
+
+if (! empty($conf->paypal->enabled))
+{
+ if ($PAYPALTOKEN)
+ {
+ // Get on url call
+ $token = $PAYPALTOKEN;
+ $fulltag = $PAYPALFULLTAG;
+ $payerID = $PAYPALPAYERID;
+ // Set by newpayment.php
+ $paymentType = $_SESSION['PaymentType'];
+ $currencyCodeType = $_SESSION['currencyCodeType'];
+ $FinalPaymentAmt = $_SESSION["Payment_Amount"];
+ // From env
+ $ipaddress = $_SESSION['ipaddress'];
+
+ dol_syslog("Call paymentok with token=".$token." paymentType=".$paymentType." currencyCodeType=".$currencyCodeType." payerID=".$payerID." ipaddress=".$ipaddress." FinalPaymentAmt=".$FinalPaymentAmt." fulltag=".$fulltag, LOG_DEBUG, 0, '_paypal');
+
+
+ // Validate record
+ if (! empty($paymentType))
+ {
+ dol_syslog("We call GetExpressCheckoutDetails", LOG_DEBUG, 0, '_payment');
+ $resArray=getDetails($token);
+ //var_dump($resarray);
+
+ dol_syslog("We call DoExpressCheckoutPayment token=".$token." paymentType=".$paymentType." currencyCodeType=".$currencyCodeType." payerID=".$payerID." ipaddress=".$ipaddress." FinalPaymentAmt=".$FinalPaymentAmt." fulltag=".$fulltag, LOG_DEBUG, 0, '_payment');
+ $resArray=confirmPayment($token, $paymentType, $currencyCodeType, $payerID, $ipaddress, $FinalPaymentAmt, $fulltag);
+
+ $ack = strtoupper($resArray["ACK"]);
+ if($ack=="SUCCESS" || $ack=="SUCCESSWITHWARNING")
+ {
+ $object = new stdClass();
+
+ $object->source = $source;
+ $object->ref = $ref;
+ $object->payerID = $payerID;
+ $object->fulltag = $fulltag;
+ $object->resArray = $resArray;
+
+ // resArray was built from a string like that
+ // TOKEN=EC%2d1NJ057703V9359028&TIMESTAMP=2010%2d11%2d01T11%3a40%3a13Z&CORRELATIONID=1efa8c6a36bd8&ACK=Success&VERSION=56&BUILD=1553277&TRANSACTIONID=9B994597K9921420R&TRANSACTIONTYPE=expresscheckout&PAYMENTTYPE=instant&ORDERTIME=2010%2d11%2d01T11%3a40%3a12Z&AMT=155%2e57&FEEAMT=5%2e54&TAXAMT=0%2e00&CURRENCYCODE=EUR&PAYMENTSTATUS=Completed&PENDINGREASON=None&REASONCODE=None
+ $PAYMENTSTATUS=urldecode($resArray["PAYMENTSTATUS"]); // Should contains 'Completed'
+ $TRANSACTIONID=urldecode($resArray["TRANSACTIONID"]);
+ $TAXAMT=urldecode($resArray["TAXAMT"]);
+ $NOTE=urldecode($resArray["NOTE"]);
+
+ print $langs->trans("YourPaymentHasBeenRecorded")."
\n";
+ print $langs->trans("ThisIsTransactionId",$TRANSACTIONID)."
\n";
+ if (! empty($conf->global->PAYPAL_MESSAGE_OK)) print $conf->global->PAYPAL_MESSAGE_OK;
+
+ // Appel des triggers
+ include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
+ $interface=new Interfaces($db);
+ $result=$interface->run_triggers('PAYPAL_PAYMENT_OK',$object,$user,$langs,$conf);
+ if ($result < 0) { $error++; $errors=$interface->errors; }
+ // Fin appel triggers
+
+ // Send an email
+ if (! empty($conf->global->PAYPAL_PAYONLINE_SENDEMAIL))
+ {
+ $sendto=$conf->global->PAYPAL_PAYONLINE_SENDEMAIL;
+ $from=$conf->global->MAILING_EMAIL_FROM;
+ // Define $urlwithroot
+ $urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',trim($dolibarr_main_url_root));
+ $urlwithroot=$urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file
+ //$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current
+
+ $urlback=$_SERVER["REQUEST_URI"];
+ $topic='['.$conf->global->MAIN_APPLICATION_TITLE.'] '.$langs->transnoentitiesnoconv("NewPaypalPaymentReceived");
+ $tmptag=dolExplodeIntoArray($fulltag,'.','=');
+ $content="";
+ if (! empty($tmptag['MEM']))
+ {
+ $langs->load("members");
+ $url=$urlwithroot."/adherents/card_subscriptions.php?rowid=".$tmptag['MEM'];
+ $content.=$langs->trans("PaymentSubscription")."
\n";
+ $content.=$langs->trans("MemberId").': '.$tmptag['MEM']."
\n";
+ $content.=$langs->trans("Link").':
'.$url.''."
\n";
+ }
+ else
+ {
+ $content.=$langs->transnoentitiesnoconv("NewPaypalPaymentReceived")."
\n";
+ }
+ $content.="
\n";
+ $content.=$langs->transnoentitiesnoconv("TechnicalInformation").":
\n";
+ $content.=$langs->transnoentitiesnoconv("ReturnURLAfterPayment").': '.$urlback."
\n";
+ $content.="tag=".$fulltag." token=".$token." paymentType=".$paymentType." currencycodeType=".$currencyCodeType." payerId=".$payerID." ipaddress=".$ipaddress." FinalPaymentAmt=".$FinalPaymentAmt;
+
+ $ishtml=dol_textishtml($content); // May contain urls
+
+ require_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php';
+ $mailfile = new CMailFile($topic, $sendto, $from, $content, array(), array(), array(), '', '', 0, $ishtml);
+
+ $result=$mailfile->sendfile();
+ if ($result)
+ {
+ dol_syslog("EMail sent to ".$sendto, LOG_DEBUG, 0, '_payment');
+ }
+ else
+ {
+ dol_syslog("Failed to send EMail to ".$sendto, LOG_ERR, 0, '_payment');
+ }
+ }
+ }
+ else
+ {
+ //Display a user friendly Error on the page using any of the following error information returned by PayPal
+ $ErrorCode = urldecode($resArray["L_ERRORCODE0"]);
+ $ErrorShortMsg = urldecode($resArray["L_SHORTMESSAGE0"]);
+ $ErrorLongMsg = urldecode($resArray["L_LONGMESSAGE0"]);
+ $ErrorSeverityCode = urldecode($resArray["L_SEVERITYCODE0"]);
+
+ echo $langs->trans('DoExpressCheckoutPaymentAPICallFailed') . "
\n";
+ echo $langs->trans('DetailedErrorMessage') . ": " . $ErrorLongMsg."
\n";
+ echo $langs->trans('ShortErrorMessage') . ": " . $ErrorShortMsg."
\n";
+ echo $langs->trans('ErrorCode') . ": " . $ErrorCode."
\n";
+ echo $langs->trans('ErrorSeverityCode') . ": " . $ErrorSeverityCode."
\n";
+
+ if ($mysoc->email) echo "\nPlease, send a screenshot of this page to ".$mysoc->email."
\n";
+
+ // Send an email
+ if (! empty($conf->global->PAYPAL_PAYONLINE_SENDEMAIL))
+ {
+ $sendto=$conf->global->PAYPAL_PAYONLINE_SENDEMAIL;
+ $from=$conf->global->MAILING_EMAIL_FROM;
+ // Define $urlwithroot
+ $urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',trim($dolibarr_main_url_root));
+ $urlwithroot=$urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file
+ //$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current
+
+ $urlback=$_SERVER["REQUEST_URI"];
+ $topic='['.$conf->global->MAIN_APPLICATION_TITLE.'] '.$langs->transnoentitiesnoconv("ValidationOfPaypalPaymentFailed");
+ $content="";
+ $content.=$langs->transnoentitiesnoconv("PaypalConfirmPaymentPageWasCalledButFailed")."\n";
+ $content.="\n";
+ $content.=$langs->transnoentitiesnoconv("TechnicalInformation").":\n";
+ $content.=$langs->transnoentitiesnoconv("ReturnURLAfterPayment").': '.$urlback."\n";
+ $content.="tag=".$fulltag."\ntoken=".$token." paymentType=".$paymentType." currencycodeType=".$currencyCodeType." payerId=".$payerID." ipaddress=".$ipaddress." FinalPaymentAmt=".$FinalPaymentAmt;
+
+ $ishtml=dol_textishtml($content); // May contain urls
+
+ require_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php';
+ $mailfile = new CMailFile($topic, $sendto, $from, $content, array(), array(), array(), '', '', 0, $ishtml);
+
+ $result=$mailfile->sendfile();
+ if ($result)
+ {
+ dol_syslog("EMail sent to ".$sendto, LOG_DEBUG, 0, '_payment');
+ }
+ else
+ {
+ dol_syslog("Failed to send EMail to ".$sendto, LOG_ERR, 0, '_payment');
+ }
+ }
+ }
+ }
+ else
+ {
+ dol_print_error('','Session expired');
+ }
+ }
+}
+else
+{
+ // No TOKEN parameter in URL
+ dol_print_error('','No TOKEN parameter in URL');
+}
+
+print "\n
\n";
+
+html_print_paypal_footer($mysoc,$langs);
+
+
+llxFooter();
+
+$db->close();