diff --git a/htdocs/core/modules/modStripe.class.php b/htdocs/core/modules/modStripe.class.php
index 4f4b15fa0a4..e7e20be5b83 100644
--- a/htdocs/core/modules/modStripe.class.php
+++ b/htdocs/core/modules/modStripe.class.php
@@ -65,7 +65,7 @@ class modStripe extends DolibarrModules
$this->picto='stripe@stripe';
// Data directories to create when module is enabled.
- $this->dirs = array('/stripe/temp');
+ $this->dirs = array();
// Config pages. Put here list of php page names stored in admmin directory used to setup module.
$this->config_page_url = array("stripe.php@stripe");
diff --git a/htdocs/langs/en_US/paypal.lang b/htdocs/langs/en_US/paypal.lang
index 3c699527018..63999f31234 100644
--- a/htdocs/langs/en_US/paypal.lang
+++ b/htdocs/langs/en_US/paypal.lang
@@ -16,15 +16,16 @@ ThisIsTransactionId=This is id of transaction: %s
PAYPAL_ADD_PAYMENT_URL=Add the url of Paypal payment when you send a document by mail
PredefinedMailContentLink=You can click on the secure link below to make your payment (PayPal) if it is not already done.\n\n%s\n\n
YouAreCurrentlyInSandboxMode=You are currently in the "sandbox" mode
-NewPaypalPaymentReceived=New Paypal payment received
-NewPaypalPaymentFailed=New Paypal payment tried but failed
+NewOnlinePaymentReceived=New online payment received
+NewOnlinePaymentFailed=New online payment tried but failed
PAYPAL_PAYONLINE_SENDEMAIL=EMail to warn after a payment (success or not)
ReturnURLAfterPayment=Return URL after payment
-ValidationOfPaypalPaymentFailed=Validation of Paypal payment failed
-PaypalConfirmPaymentPageWasCalledButFailed=Payment confirmation page for Paypal was called by Paypal but confirmation failed
+ValidationOfOnlinePaymentFailed=Validation of online payment failed
+PaymentSystemConfirmPaymentPageWasCalledButFailed=Payment confirmation page was called by payment system returned an error
SetExpressCheckoutAPICallFailed=SetExpressCheckout API call failed.
DoExpressCheckoutPaymentAPICallFailed=DoExpressCheckoutPayment API call failed.
DetailedErrorMessage=Detailed Error Message
ShortErrorMessage=Short Error Message
ErrorCode=Error Code
ErrorSeverityCode=Error Severity Code
+OnlinePaymentSystem=Online payment system
\ No newline at end of file
diff --git a/htdocs/langs/en_US/stripe.lang b/htdocs/langs/en_US/stripe.lang
index 3f85dc2d544..68b853ac25b 100644
--- a/htdocs/langs/en_US/stripe.lang
+++ b/htdocs/langs/en_US/stripe.lang
@@ -9,6 +9,7 @@ ThisScreenAllowsYouToPay=This screen allow you to make an online payment to %s.
ThisIsInformationOnPayment=This is information on payment to do
ToComplete=To complete
YourEMail=Email to receive payment confirmation
+STRIPE_PAYONLINE_SENDEMAIL=EMail to warn after a payment (success or not)
Creditor=Creditor
PaymentCode=Payment code
StripeDoPayment=Go on payment
diff --git a/htdocs/public/paybox/paymentko.php b/htdocs/public/paybox/paymentko.php
index be5b388f6ed..9cc8a07ea70 100644
--- a/htdocs/public/paybox/paymentko.php
+++ b/htdocs/public/paybox/paymentko.php
@@ -20,7 +20,6 @@
* \file htdocs/public/paybox/paymentko.php
* \ingroup paybox
* \brief File to show page after a failed payment
- * \author Laurent Destailleur
*/
define("NOLOGIN",1); // This means this output page does not require to be logged.
@@ -52,6 +51,8 @@ $langs->load("stripe");
$object = new stdClass(); // For triggers
+$paymentmethod='paybox';
+
/*
* Actions
@@ -72,51 +73,74 @@ foreach($_POST as $k => $v) $tracepost .= "{$k} - {$v}\n";
dol_syslog("POST=".$tracepost, LOG_DEBUG, 0, '_paybox');
-// Appel des triggers
-include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
-$interface=new Interfaces($db);
-$result=$interface->run_triggers('PAYBOX_PAYMENT_OK',$object,$user,$langs,$conf);
-if ($result < 0) { $error++; $errors=$interface->errors; }
-// Fin appel triggers
-
-
-// Send an email
-if (! empty($conf->global->PAYBOX_PAYONLINE_SENDEMAIL))
+if (! empty($_SESSION['ipaddress'])) // To avoid to make action twice
{
- $sendto=$conf->global->PAYBOX_PAYONLINE_SENDEMAIL;
- $from=$conf->global->MAILING_EMAIL_FROM;
-
- // Define link to login card
- $appli=constant('DOL_APPLICATION_TITLE');
- if (! empty($conf->global->MAIN_APPLICATION_TITLE))
- {
- $appli=$conf->global->MAIN_APPLICATION_TITLE;
- if (preg_match('/\d\.\d/', $appli))
- {
- if (! preg_match('/'.preg_quote(DOL_VERSION).'/', $appli)) $appli.=" (".DOL_VERSION.")"; // If new title contains a version that is different than core
- }
- else $appli.=" ".DOL_VERSION;
- }
- else $appli.=" ".DOL_VERSION;
-
- $urlback=$_SERVER["REQUEST_URI"];
- $topic='['.$appli.'] '.$langs->transnoentitiesnoconv("NewPayboxPaymentFailed");
- $content=$langs->transnoentitiesnoconv("NewPayboxPaymentFailed")."\n".$fulltag;
- require_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php';
- $mailfile = new CMailFile($topic, $sendto, $from, $content);
-
- $result=$mailfile->sendfile();
- if ($result)
- {
- dol_syslog("EMail sent to ".$sendto, LOG_DEBUG, 0, '_paybox');
- }
- else
- {
- dol_syslog("Failed to send EMail to ".$sendto, LOG_ERR, 0, '_paybox');
- }
+ // Get on url call
+ $fulltag = $FULLTAG;
+ $onlinetoken = empty($PAYPALTOKEN)?$_SESSION['onlinetoken']:$PAYPALTOKEN;
+ $payerID = empty($PAYPALPAYERID)?$_SESSION['payerID']:$PAYPALPAYERID;
+ // Set by newpayment.php
+ $paymentType = $_SESSION['PaymentType'];
+ $currencyCodeType = $_SESSION['currencyCodeType'];
+ $FinalPaymentAmt = $_SESSION["Payment_Amount"];
+ // From env
+ $ipaddress = $_SESSION['ipaddress'];
+
+ // Appel des triggers
+ include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
+ $interface=new Interfaces($db);
+ $result=$interface->run_triggers('PAYBOX_PAYMENT_OK',$object,$user,$langs,$conf);
+ if ($result < 0) { $error++; $errors=$interface->errors; }
+ // Fin appel triggers
+
+ // Send an email
+ $sendemail = '';
+ if (! empty($conf->global->PAYBOX_PAYONLINE_SENDEMAIL)) $sendemail=$conf->global->PAYBOX_PAYONLINE_SENDEMAIL;
+
+ if ($sendemail)
+ {
+ $sendto=$sendemail;
+ $from=$conf->global->MAILING_EMAIL_FROM;
+
+ // Define link to login card
+ $appli=constant('DOL_APPLICATION_TITLE');
+ if (! empty($conf->global->MAIN_APPLICATION_TITLE))
+ {
+ $appli=$conf->global->MAIN_APPLICATION_TITLE;
+ if (preg_match('/\d\.\d/', $appli))
+ {
+ if (! preg_match('/'.preg_quote(DOL_VERSION).'/', $appli)) $appli.=" (".DOL_VERSION.")"; // If new title contains a version that is different than core
+ }
+ else $appli.=" ".DOL_VERSION;
+ }
+ else $appli.=" ".DOL_VERSION;
+
+ $urlback=$_SERVER["REQUEST_URI"];
+ $topic='['.$appli.'] '.$langs->transnoentitiesnoconv("NewOnlinePaymentFailed");
+ $content="";
+ $content.=$langs->transnoentitiesnoconv("ValidationOfOnlinePaymentFailed")."\n";
+ $content.="\n";
+ $content.=$langs->transnoentitiesnoconv("TechnicalInformation").":\n";
+ $content.=$langs->transnoentitiesnoconv("OnlinePaymentSystem").': '.$paymentmethod." \n";
+ $content.=$langs->transnoentitiesnoconv("ReturnURLAfterPayment").': '.$urlback."\n";
+ $content.="tag=".$fulltag."\npaymentType=".$paymentType." currencycodeType=".$currencyCodeType." payerId=".$payerID." ipaddress=".$ipaddress." FinalPaymentAmt=".$FinalPaymentAmt;
+ require_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php';
+ $mailfile = new CMailFile($topic, $sendto, $from, $content);
+
+ $result=$mailfile->sendfile();
+ if ($result)
+ {
+ dol_syslog("EMail sent to ".$sendto, LOG_DEBUG, 0, '_paybox');
+ }
+ else
+ {
+ dol_syslog("Failed to send EMail to ".$sendto, LOG_ERR, 0, '_paybox');
+ }
+ }
+
+ unset($_SESSION['ipaddress']);
}
-
$head='';
if (! empty($conf->global->PAYBOX_CSS_URL)) $head=''."\n";
diff --git a/htdocs/public/paybox/paymentok.php b/htdocs/public/paybox/paymentok.php
index 0e91189e242..b59034b774e 100644
--- a/htdocs/public/paybox/paymentok.php
+++ b/htdocs/public/paybox/paymentok.php
@@ -20,7 +20,6 @@
* \file htdocs/public/paybox/paymentok.php
* \ingroup paybox
* \brief File to show page after a successful payment
- * \author Laurent Destailleur
*/
define("NOLOGIN",1); // This means this output page does not require to be logged.
@@ -62,6 +61,8 @@ if (empty($FULLTAG)) $FULLTAG=GETPOST('fulltag');
$object = new stdClass(); // For triggers
+$paymentmethod='paybox';
+
/*
* Actions
@@ -97,7 +98,7 @@ print '
'."\n";
// Get on url call
/*
-$token = $PAYBOXTOKEN;
+$onlinetoken = $PAYBOXTOKEN;
*/
$fulltag = $FULLTAG;
/*$payerID = $PAYBOXPAYERID;
@@ -108,7 +109,7 @@ $FinalPaymentAmt = $_SESSION["Payment_Amount"];
// From env
$ipaddress = $_SESSION['ipaddress'];
-dol_syslog("Call newpaymentok with token=".$token." paymentType=".$paymentType." currencyCodeType=".$currencyCodeType." payerID=".$payerID." ipaddress=".$ipaddress." FinalPaymentAmt=".$FinalPaymentAmt." fulltag=".$fulltag);
+dol_syslog("Call newpaymentok with token=".$onlinetoken." paymentType=".$paymentType." currencyCodeType=".$currencyCodeType." payerID=".$payerID." ipaddress=".$ipaddress." FinalPaymentAmt=".$FinalPaymentAmt." fulltag=".$fulltag);
*/
@@ -149,7 +150,7 @@ if (! empty($conf->global->PAYBOX_PAYONLINE_SENDEMAIL))
else $appli.=" ".DOL_VERSION;
$urlback=$_SERVER["REQUEST_URI"];
- $topic='['.$appli.'] '.$langs->transnoentitiesnoconv("NewPayboxPaymentReceived");
+ $topic='['.$appli.'] '.$langs->transnoentitiesnoconv("NewOnlinePaymentReceived");
$tmptag=dolExplodeIntoArray($fulltag,'.','=');
$content="";
if (! empty($tmptag['MEM']))
@@ -162,10 +163,11 @@ if (! empty($conf->global->PAYBOX_PAYONLINE_SENDEMAIL))
}
else
{
- $content.=$langs->transnoentitiesnoconv("NewPayboxPaymentReceived")." \n";
+ $content.=$langs->transnoentitiesnoconv("NewOnlinePaymentReceived")." \n";
}
$content.=" \n";
$content.=$langs->transnoentitiesnoconv("TechnicalInformation").": \n";
+ $content.=$langs->transnoentitiesnoconv("OnlinePaymentSystem").': '.$paymentmethod." \n";
$content.=$langs->transnoentitiesnoconv("ReturnURLAfterPayment").': '.$urlback." \n";
$content.="tag=".$fulltag." \n";
diff --git a/htdocs/public/payment/newpayment.php b/htdocs/public/payment/newpayment.php
index 744f477782e..788321b6212 100644
--- a/htdocs/public/payment/newpayment.php
+++ b/htdocs/public/payment/newpayment.php
@@ -114,7 +114,7 @@ $ref=$REF=GETPOST('ref','alpha');
$TAG=GETPOST("tag",'alpha');
$FULLTAG=GETPOST("fulltag",'alpha'); // fulltag is tag with more informations
$SECUREKEY=GETPOST("securekey"); // Secure key
-if ($paymentmethod) $FULLTAG.=($FULLTAG?'.':'').'PM='.$paymentmethod;
+if ($paymentmethod && ! preg_match('/'.preg_quote('PM='.$paymentmethod,'/').'/', $FULLTAG)) $FULLTAG.=($FULLTAG?'.':'').'PM='.$paymentmethod;
if (! empty($SOURCE))
{
diff --git a/htdocs/public/payment/paymentko.php b/htdocs/public/payment/paymentko.php
index 6ce1c3badfa..9abcfcf2c58 100644
--- a/htdocs/public/payment/paymentko.php
+++ b/htdocs/public/payment/paymentko.php
@@ -23,7 +23,6 @@
* \brief File to show page after a failed payment.
* This page is called by payment system with url provided to it competed with parameter TOKEN=xxx
* This token can be used to get more informations.
- * \author Laurent Destailleur
*/
define("NOLOGIN",1); // This means this output page does not require to be logged.
@@ -53,16 +52,40 @@ $langs->load("companies");
$langs->load("paybox");
$langs->load("paypal");
-$PAYPALTOKEN=GETPOST('TOKEN');
-if (empty($PAYPALTOKEN)) $PAYPALTOKEN=GETPOST('token');
-$PAYPALPAYERID=GETPOST('PAYERID');
-if (empty($PAYPALPAYERID)) $PAYPALPAYERID=GETPOST('PayerID');
+if (! empty($conf->paypal->enabled))
+{
+ $PAYPALTOKEN=GETPOST('TOKEN');
+ if (empty($PAYPALTOKEN)) $PAYPALTOKEN=GETPOST('token');
+ $PAYPALPAYERID=GETPOST('PAYERID');
+ if (empty($PAYPALPAYERID)) $PAYPALPAYERID=GETPOST('PayerID');
+}
+// TODO Other payment method
+
$FULLTAG=GETPOST('FULLTAG');
if (empty($FULLTAG)) $FULLTAG=GETPOST('fulltag');
+
+// Detect $paymentmethod
+$paymentmethod='';
+if (preg_match('/PM=([^\.]+)/', $FULLTAG, $reg))
+{
+ $paymentmethod=$reg[1];
+}
+if (empty($paymentmethod))
+{
+ dol_print_error(null, 'The back url does not contains a parameter fulltag that should help us to find the payment method used');
+ exit;
+}
+else
+{
+ dol_syslog("paymentmethod=".$paymentmethod);
+}
+
+
$validpaymentmethod=array();
if (! empty($conf->paypal->enabled)) $validpaymentmethod['paypal']='paypal';
if (! empty($conf->paybox->enabled)) $validpaymentmethod['paybox']='paybox';
+if (! empty($conf->stripe->enabled)) $validpaymentmethod['stripe']='stripe';
// Security check
@@ -90,50 +113,94 @@ foreach($_POST as $k => $v) $tracepost .= "{$k} - {$v}\n";
dol_syslog("POST=".$tracepost, LOG_DEBUG, 0, '_payment');
-// Appel des triggers
-include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
-$interface=new Interfaces($db);
-$result=$interface->run_triggers('PAYMENTONLINE_PAYMENT_KO',$object,$user,$langs,$conf);
-if ($result < 0) { $error++; $errors=$interface->errors; }
-// Fin appel triggers
-
-
-// Send an email
-if (! empty($conf->paypal->enabled))
+if (! empty($_SESSION['ipaddress'])) // To avoid to make action twice
{
- if (! empty($conf->global->PAYPAL_PAYONLINE_SENDEMAIL))
- {
- // Get on url call
- $token = $PAYPALTOKEN;
- $fulltag = $FULLTAG;
- $payerID = $PAYPALPAYERID;
- // Set by newpayment.php
- $paymentType = $_SESSION['PaymentType'];
- $currencyCodeType = $_SESSION['currencyCodeType'];
- $FinalPaymentAmt = $_SESSION["Payment_Amount"];
- // From env
- $ipaddress = $_SESSION['ipaddress'];
-
-
- $sendto=$conf->global->PAYPAL_PAYONLINE_SENDEMAIL;
- $from=$conf->global->MAILING_EMAIL_FROM;
-
- $urlback=$_SERVER["REQUEST_URI"];
- $topic='['.$conf->global->MAIN_APPLICATION_TITLE.'] '.$langs->transnoentitiesnoconv("NewPaypalPaymentFailed");
- $content=$langs->transnoentitiesnoconv("NewPaypalPaymentFailed")."\ntag=".$fulltag."\ntoken=".$token." paymentType=".$paymentType." currencycodeType=".$currencyCodeType." payerId=".$payerID." ipaddress=".$ipaddress." FinalPaymentAmt=".$FinalPaymentAmt;
- require_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php';
- $mailfile = new CMailFile($topic, $sendto, $from, $content);
-
- $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');
- }
- }
+ // Get on url call
+ $fulltag = $FULLTAG;
+ $onlinetoken = empty($PAYPALTOKEN)?$_SESSION['onlinetoken']:$PAYPALTOKEN;
+ $payerID = empty($PAYPALPAYERID)?$_SESSION['payerID']:$PAYPALPAYERID;
+ // Set by newpayment.php
+ $paymentType = $_SESSION['PaymentType'];
+ $currencyCodeType = $_SESSION['currencyCodeType'];
+ $FinalPaymentAmt = $_SESSION["Payment_Amount"];
+ // From env
+ $ipaddress = $_SESSION['ipaddress'];
+
+ // Appel des triggers
+ include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
+ $interface=new Interfaces($db);
+ $result=$interface->run_triggers('PAYMENTONLINE_PAYMENT_KO',$object,$user,$langs,$conf);
+ if ($result < 0) { $error++; $errors=$interface->errors; }
+ // Fin appel triggers
+
+ // Send an email
+ $sendemail = '';
+ if (! empty($conf->paypal->enabled))
+ {
+ if (! empty($conf->global->PAYPAL_PAYONLINE_SENDEMAIL))
+ {
+ $sendemail = $conf->global->PAYPAL_PAYONLINE_SENDEMAIL;
+ }
+ }
+ // Send an email
+ if (! empty($conf->paybox->enabled))
+ {
+ if (! empty($conf->global->PAYBOX_PAYONLINE_SENDEMAIL))
+ {
+ $sendemail = $conf->global->PAYBOX_PAYONLINE_SENDEMAIL;
+ }
+ }
+ // Send an email
+ if (! empty($conf->stripe->enabled))
+ {
+ if (! empty($conf->global->STRIPE_PAYONLINE_SENDEMAIL))
+ {
+ $sendemail = $conf->global->STRIPE_PAYONLINE_SENDEMAIL;
+ }
+ }
+
+ if ($sendemail)
+ {
+ $from=$conf->global->MAILING_EMAIL_FROM;
+ $sendto=$sendemail;
+
+ // Define link to login card
+ $appli=constant('DOL_APPLICATION_TITLE');
+ if (! empty($conf->global->MAIN_APPLICATION_TITLE))
+ {
+ $appli=$conf->global->MAIN_APPLICATION_TITLE;
+ if (preg_match('/\d\.\d/', $appli))
+ {
+ if (! preg_match('/'.preg_quote(DOL_VERSION).'/', $appli)) $appli.=" (".DOL_VERSION.")"; // If new title contains a version that is different than core
+ }
+ else $appli.=" ".DOL_VERSION;
+ }
+ else $appli.=" ".DOL_VERSION;
+
+ $urlback=$_SERVER["REQUEST_URI"];
+ $topic='['.$appli.'] '.$langs->transnoentitiesnoconv("NewOnlinePaymentFailed");
+ $content="";
+ $content.=$langs->transnoentitiesnoconv("ValidationOfOnlinePaymentFailed")."\n";
+ $content.="\n";
+ $content.=$langs->transnoentitiesnoconv("TechnicalInformation").":\n";
+ $content.=$langs->transnoentitiesnoconv("OnlinePaymentSystem").': '.$paymentmethod." \n";
+ $content.=$langs->transnoentitiesnoconv("ReturnURLAfterPayment").': '.$urlback."\n";
+ $content.="tag=".$fulltag."\ntoken=".$onlinetoken." paymentType=".$paymentType." currencycodeType=".$currencyCodeType." payerId=".$payerID." ipaddress=".$ipaddress." FinalPaymentAmt=".$FinalPaymentAmt;
+ require_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php';
+ $mailfile = new CMailFile($topic, $sendto, $from, $content);
+
+ $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');
+ }
+ }
+
+ unset($_SESSION['ipaddress']);
}
$head='';
@@ -150,7 +217,7 @@ print ''."\n";
print '
diff --git a/htdocs/public/stripe/paymentko.php b/htdocs/public/stripe/paymentko.php
new file mode 100644
index 00000000000..01000939b37
--- /dev/null
+++ b/htdocs/public/stripe/paymentko.php
@@ -0,0 +1,165 @@
+
+*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+/**
+ * \file htdocs/public/stripe/paymentko.php
+ * \ingroup core
+ * \brief File to show page after a failed payment.
+ * This page is called by payment system with url provided to it competed with parameter FULLTAG=xxx
+ * More data like token are saved into session. This token can be used to get more informations.
+ */
+
+define("NOLOGIN",1); // This means this output page does not require to be logged.
+define("NOCSRFCHECK",1); // We accept to go on this page from external web site.
+
+// For MultiCompany module.
+// Do not use GETPOST here, function is not defined and define must be done before including main.inc.php
+// TODO This should be useless. Because entity must be retreive from object ref and not from url.
+$entity=(! empty($_GET['entity']) ? (int) $_GET['entity'] : (! empty($_POST['entity']) ? (int) $_POST['entity'] : 1));
+if (is_numeric($entity)) define("DOLENTITY", $entity);
+
+require '../../main.inc.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php';
+
+$langs->load("main");
+$langs->load("other");
+$langs->load("dict");
+$langs->load("bills");
+$langs->load("companies");
+$langs->load("paybox");
+$langs->load("paypal");
+$langs->load("stripe");
+
+$FULLTAG=GETPOST('FULLTAG');
+if (empty($FULLTAG)) $FULLTAG=GETPOST('fulltag');
+
+// Security check
+if (empty($conf->stripe->enabled)) accessforbidden('',0,0,1);
+
+$object = new stdClass(); // For triggers
+
+$paymentmethod='stripe';
+
+
+/*
+ * Actions
+ */
+
+
+
+
+/*
+ * View
+ */
+
+dol_syslog("Callback url when a PayPal payment was canceled. query_string=".(empty($_SERVER["QUERY_STRING"])?'':$_SERVER["QUERY_STRING"])." script_uri=".(empty($_SERVER["SCRIPT_URI"])?'':$_SERVER["SCRIPT_URI"]), LOG_DEBUG, 0, '_stripe');
+
+$tracepost = "";
+foreach($_POST as $k => $v) $tracepost .= "{$k} - {$v}\n";
+dol_syslog("POST=".$tracepost, LOG_DEBUG, 0, '_stripe');
+
+if (! empty($_SESSION['ipaddress'])) // To avoid to make action twice
+{
+ $fulltag = $FULLTAG;
+ $onlinetoken = empty($PAYPALTOKEN)?$_SESSION['onlinetoken']:$PAYPALTOKEN;
+ $payerID = empty($PAYPALPAYERID)?$_SESSION['payerID']:$PAYPALPAYERID;
+ $currencyCodeType = $_SESSION['currencyCodeType'];
+ $paymentType = $_SESSION['paymentType'];
+ $FinalPaymentAmt = $_SESSION['FinalPaymentAmt'];
+ $ipaddress = $_SESSION['ipaddress'];
+
+ // Appel des triggers
+ include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
+ $interface=new Interfaces($db);
+ $result=$interface->run_triggers('STRIPE_PAYMENT_KO',$object,$user,$langs,$conf);
+ if ($result < 0) { $error++; $errors=$interface->errors; }
+ // Fin appel triggers
+
+ // Send an email
+ $sendemail = '';
+ if (! empty($conf->global->PAYPAL_PAYONLINE_SENDEMAIL)) $sendemail=$conf->global->PAYPAL_PAYONLINE_SENDEMAIL;
+
+ if ($sendemail)
+ {
+ // Get on url call
+ $sendto=$sendemail;
+ $from=$conf->global->MAILING_EMAIL_FROM;
+
+ // Define link to login card
+ $appli=constant('DOL_APPLICATION_TITLE');
+ if (! empty($conf->global->MAIN_APPLICATION_TITLE))
+ {
+ $appli=$conf->global->MAIN_APPLICATION_TITLE;
+ if (preg_match('/\d\.\d/', $appli))
+ {
+ if (! preg_match('/'.preg_quote(DOL_VERSION).'/', $appli)) $appli.=" (".DOL_VERSION.")"; // If new title contains a version that is different than core
+ }
+ else $appli.=" ".DOL_VERSION;
+ }
+ else $appli.=" ".DOL_VERSION;
+
+ $urlback=$_SERVER["REQUEST_URI"];
+ $topic='['.$appli.'] '.$langs->transnoentitiesnoconv("NewOnlinePaymentFailed");
+ $content="";
+ $content.=$langs->transnoentitiesnoconv("ValidationOfOnlinePaymentFailed")."\n";
+ $content.="\n";
+ $content.=$langs->transnoentitiesnoconv("TechnicalInformation").":\n";
+ $content.=$langs->transnoentitiesnoconv("OnlinePaymentSystem").': '.$paymentmethod."\n";
+ $content.=$langs->transnoentitiesnoconv("ReturnURLAfterPayment").': '.$urlback."\n";
+ $content.="tag=".$fulltag."\ntoken=".$onlinetoken." paymentType=".$paymentType." currencycodeType=".$currencyCodeType." payerId=".$payerID." ipaddress=".$ipaddress." FinalPaymentAmt=".$FinalPaymentAmt;
+ require_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php';
+ $mailfile = new CMailFile($topic, $sendto, $from, $content);
+
+ $result=$mailfile->sendfile();
+ if ($result)
+ {
+ dol_syslog("EMail sent to ".$sendto, LOG_DEBUG, 0, '_stripe');
+ }
+ else
+ {
+ dol_syslog("Failed to send EMail to ".$sendto, LOG_ERR, 0, '_stripe');
+ }
+ }
+
+ unset($_SESSION['ipaddress']);
+}
+
+$head='';
+if (! empty($conf->global->STRIPE_CSS_URL)) $head=''."\n";
+
+$conf->dol_hide_topmenu=1;
+$conf->dol_hide_leftmenu=1;
+
+llxHeader($head, $langs->trans("PaymentForm"), '', '', 0, 0, '', '', '', 'onlinepaymentbody');
+
+
+// Show ko message
+print ''."\n";
+print '
\n";
+
+
+htmlPrintOnlinePaymentFooter($mysoc,$langs);
+
+
+llxFooter('', 'public');
+
+$db->close();
diff --git a/htdocs/public/stripe/paymentok.php b/htdocs/public/stripe/paymentok.php
new file mode 100644
index 00000000000..4eede2e9544
--- /dev/null
+++ b/htdocs/public/stripe/paymentok.php
@@ -0,0 +1,199 @@
+
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+/**
+ * \file htdocs/public/stripe/paymentok.php
+ * \ingroup core
+ * \brief File to show page after a successful payment
+ * This page is called by payment system with url provided to it completed with parameter FULLTAG=xxx
+ * More data like token are saved into session. This token can be used to get more informations.
+ */
+
+define("NOLOGIN",1); // This means this output page does not require to be logged.
+define("NOCSRFCHECK",1); // We accept to go on this page from external web site.
+
+// For MultiCompany module.
+// Do not use GETPOST here, function is not defined and define must be done before including main.inc.php
+// TODO This should be useless. Because entity must be retreive from object ref and not from url.
+$entity=(! empty($_GET['entity']) ? (int) $_GET['entity'] : (! empty($_POST['entity']) ? (int) $_POST['entity'] : 1));
+if (is_numeric($entity)) define("DOLENTITY", $entity);
+
+require '../../main.inc.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php';
+
+$langs->load("main");
+$langs->load("other");
+$langs->load("dict");
+$langs->load("bills");
+$langs->load("companies");
+$langs->load("paybox");
+$langs->load("paypal");
+
+$FULLTAG=GETPOST('FULLTAG');
+if (empty($FULLTAG)) $FULLTAG=GETPOST('fulltag');
+$source=GETPOST('source');
+$ref=GETPOST('ref');
+
+// Security check
+if (empty($conf->stripe->enabled)) accessforbidden('', 0, 0, 1);
+
+
+$ispaymentok = false;
+// If payment is ok
+$PAYMENTSTATUS=$TRANSACTIONID=$TAXAMT=$NOTE='';
+// If payment is ko
+$ErrorCode=$ErrorShortMsg=$ErrorLongMsg=$ErrorSeverityCode='';
+
+
+$object = new stdClass(); // For triggers
+
+$paymentmethod='stripe';
+
+
+/*
+ * Actions
+ */
+
+
+
+/*
+ * View
+ */
+
+dol_syslog("Callback url when a payment was done. query_string=".(empty($_SERVER["QUERY_STRING"])?'':$_SERVER["QUERY_STRING"])." script_uri=".(empty($_SERVER["SCRIPT_URI"])?'':$_SERVER["SCRIPT_URI"]), LOG_DEBUG, 0, '_stripe');
+
+$tracepost = "";
+foreach($_POST as $k => $v) $tracepost .= "{$k} - {$v}\n";
+dol_syslog("POST=".$tracepost, LOG_DEBUG, 0, '_stripe');
+
+$head='';
+if (! empty($conf->global->STRIPE_CSS_URL)) $head=''."\n";
+
+$conf->dol_hide_topmenu=1;
+$conf->dol_hide_leftmenu=1;
+
+llxHeader($head, $langs->trans("PaymentForm"), '', '', 0, 0, '', '', '', 'onlinepaymentbody');
+
+
+
+// Show message
+print ''."\n";
+print '
'."\n";
+
+$ispaymentok = true; // We call this page if payment is ok
+if ($ispaymentok)
+{
+ // Get on url call
+ $fulltag = $FULLTAG;
+ $onlinetoken = empty($PAYPALTOKEN)?$_SESSION['onlinetoken']:$PAYPALTOKEN;
+ $payerID = empty($PAYPALPAYERID)?$_SESSION['payerID']:$PAYPALPAYERID;
+ // Set by newpayment.php
+ $paymentType = $_SESSION['PaymentType'];
+ $currencyCodeType = $_SESSION['currencyCodeType'];
+ $FinalPaymentAmt = $_SESSION["Payment_Amount"];
+ // From env
+ $ipaddress = $_SESSION['ipaddress'];
+ $TRANSACTIONID = $_SESSION['TRANSACTIONID'];
+
+ // Appel des triggers
+ include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
+ $interface=new Interfaces($db);
+ $result=$interface->run_triggers('STRIPE_PAYMENT_OK',$object,$user,$langs,$conf);
+ if ($result < 0) { $error++; $errors=$interface->errors; }
+ // Fin appel triggers
+
+
+ print $langs->trans("YourPaymentHasBeenRecorded")." \n";
+ print $langs->trans("ThisIsTransactionId",$TRANSACTIONID)."
\n";
+ if (! empty($conf->global->STRIPE_MESSAGE_OK)) print $conf->global->STRIPE_MESSAGE_OK;
+
+ $sendemail = '';
+ if (! empty($conf->global->STRIPE_PAYONLINE_SENDEMAIL)) $sendemail=$conf->global->STRIPE_PAYONLINE_SENDEMAIL;
+
+ // Send an email
+ if ($sendemail)
+ {
+ $sendto=$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
+
+ // Define link to login card
+ $appli=constant('DOL_APPLICATION_TITLE');
+ if (! empty($conf->global->MAIN_APPLICATION_TITLE))
+ {
+ $appli=$conf->global->MAIN_APPLICATION_TITLE;
+ if (preg_match('/\d\.\d/', $appli))
+ {
+ if (! preg_match('/'.preg_quote(DOL_VERSION).'/', $appli)) $appli.=" (".DOL_VERSION.")"; // If new title contains a version that is different than core
+ }
+ else $appli.=" ".DOL_VERSION;
+ }
+ else $appli.=" ".DOL_VERSION;
+
+ $urlback=$_SERVER["REQUEST_URI"];
+ $topic='['.$appli.'] '.$langs->transnoentitiesnoconv("NewOnlinePaymentReceived");
+ $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("NewOnlinePaymentReceived")." \n";
+ }
+ $content.=" \n";
+ $content.=$langs->transnoentitiesnoconv("TechnicalInformation").": \n";
+ $content.=$langs->transnoentitiesnoconv("OnlinePaymentSystem").': '.$paymentmethod." \n";
+ $content.=$langs->transnoentitiesnoconv("ReturnURLAfterPayment").': '.$urlback." \n";
+ $content.="tag=".$fulltag."\ntoken=".$onlinetoken." 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, '_stripe');
+ }
+ else
+ {
+ dol_syslog("Failed to send EMail to ".$sendto, LOG_ERR, 0, '_stripe');
+ }
+ }
+}
+
+
+print "\n