From 83cf0dabae202c87c0cd6efc0be84b4abcbdf926 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 3 Apr 2019 17:53:24 +0200 Subject: [PATCH] NEW Add more complete error messages in log on stripe payments --- htdocs/public/payment/newpayment.php | 30 +++++++++++++++++++--------- htdocs/public/payment/paymentko.php | 6 ++++-- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/htdocs/public/payment/newpayment.php b/htdocs/public/payment/newpayment.php index 8a947ab3166..bfbde5f9a29 100644 --- a/htdocs/public/payment/newpayment.php +++ b/htdocs/public/payment/newpayment.php @@ -422,6 +422,7 @@ if ($action == 'charge' && ! empty($conf->stripe->enabled)) dol_syslog("POST vatnumber = ".$vatnumber, LOG_DEBUG, 0, '_stripe'); $error = 0; + $errormessage = ''; try { $metadata = array( @@ -555,60 +556,71 @@ if ($action == 'charge' && ! empty($conf->stripe->enabled)) print('Message is:' . $err['message'] . "\n"); $error++; - dol_syslog($e->getMessage(), LOG_WARNING, 0, '_stripe'); + $errormessage="ErrorCard ".$e->getMessage()." err=".var_export($err, true); + dol_syslog($errormessage, LOG_WARNING, 0, '_stripe'); setEventMessages($e->getMessage(), null, 'errors'); $action=''; } catch (\Stripe\Error\RateLimit $e) { // Too many requests made to the API too quickly $error++; - dol_syslog($e->getMessage(), LOG_WARNING, 0, '_stripe'); + $errormessage="ErrorRateLimit ".$e->getMessage(); + dol_syslog($errormessage, LOG_WARNING, 0, '_stripe'); setEventMessages($e->getMessage(), null, 'errors'); $action=''; } catch (\Stripe\Error\InvalidRequest $e) { // Invalid parameters were supplied to Stripe's API $error++; - dol_syslog($e->getMessage(), LOG_WARNING, 0, '_stripe'); + $errormessage="ErrorInvalidRequest ".$e->getMessage(); + dol_syslog($errormessage, LOG_WARNING, 0, '_stripe'); setEventMessages($e->getMessage(), null, 'errors'); $action=''; } catch (\Stripe\Error\Authentication $e) { // Authentication with Stripe's API failed // (maybe you changed API keys recently) $error++; - dol_syslog($e->getMessage(), LOG_WARNING, 0, '_stripe'); + $errormessage="ErrorAuthentication ".$e->getMessage(); + dol_syslog($errormessage, LOG_WARNING, 0, '_stripe'); setEventMessages($e->getMessage(), null, 'errors'); $action=''; } catch (\Stripe\Error\ApiConnection $e) { // Network communication with Stripe failed $error++; - dol_syslog($e->getMessage(), LOG_WARNING, 0, '_stripe'); + $errormessage="ErrorApiConnection ".$e->getMessage(); + dol_syslog($errormessage, LOG_WARNING, 0, '_stripe'); setEventMessages($e->getMessage(), null, 'errors'); $action=''; } catch (\Stripe\Error\Base $e) { // Display a very generic error to the user, and maybe send // yourself an email $error++; - dol_syslog($e->getMessage(), LOG_WARNING, 0, '_stripe'); + $errormessage="ErrorBase ".$e->getMessage(); + dol_syslog($errormessage, LOG_WARNING, 0, '_stripe'); setEventMessages($e->getMessage(), null, 'errors'); $action=''; } catch (Exception $e) { // Something else happened, completely unrelated to Stripe $error++; - dol_syslog($e->getMessage(), LOG_WARNING, 0, '_stripe'); + $errormessage="ErrorException ".$e->getMessage(); + dol_syslog($errormessage, LOG_WARNING, 0, '_stripe'); setEventMessages($e->getMessage(), null, 'errors'); $action=''; } + $remoteip = getUserRemoteIP(); + $_SESSION["onlinetoken"] = $stripeToken; $_SESSION["FinalPaymentAmt"] = $amount; $_SESSION["currencyCodeType"] = $currency; $_SESSION["paymentType"] = ''; - $_SESSION['ipaddress'] = getUserRemoteIP(); // Payer ip + $_SESSION['ipaddress'] = ($remoteip?$remoteip:'unknown'); // Payer ip $_SESSION['payerID'] = is_object($customer)?$customer->id:''; $_SESSION['TRANSACTIONID'] = is_object($charge)?$charge->id:''; + $_SESSION['errormessage'] = $errormessage; - dol_syslog("Action charge stripe result=".$error." ip=".$_SESSION['ipaddress'], LOG_DEBUG, 0, '_stripe'); + dol_syslog("Action charge stripe ip=".$remoteip, LOG_DEBUG, 0, '_stripe'); dol_syslog("onlinetoken=".$_SESSION["onlinetoken"]." FinalPaymentAmt=".$_SESSION["FinalPaymentAmt"]." currencyCodeType=".$_SESSION["currencyCodeType"]." payerID=".$_SESSION['payerID']." TRANSACTIONID=".$_SESSION['TRANSACTIONID'], LOG_DEBUG, 0, '_stripe'); dol_syslog("FULLTAG=".$FULLTAG, LOG_DEBUG, 0, '_stripe'); + dol_syslog("error=".$error." errormessage=".$errormessage, LOG_DEBUG, 0, '_stripe'); dol_syslog("Now call the redirect to paymentok or paymentko", LOG_DEBUG, 0, '_stripe'); if ($error) diff --git a/htdocs/public/payment/paymentko.php b/htdocs/public/payment/paymentko.php index 783493f375c..725c16f6655 100644 --- a/htdocs/public/payment/paymentko.php +++ b/htdocs/public/payment/paymentko.php @@ -107,7 +107,7 @@ $object = new stdClass(); // For triggers * View */ -dol_syslog("Callback url when an online payment is canceled. query_string=".(empty($_SERVER["QUERY_STRING"])?'':$_SERVER["QUERY_STRING"])." script_uri=".(empty($_SERVER["SCRIPT_URI"])?'':$_SERVER["SCRIPT_URI"]), LOG_DEBUG, 0, '_payment'); +dol_syslog("Callback url when an online payment is refused or canceled. query_string=".(empty($_SERVER["QUERY_STRING"])?'':$_SERVER["QUERY_STRING"])." script_uri=".(empty($_SERVER["SCRIPT_URI"])?'':$_SERVER["SCRIPT_URI"]), LOG_DEBUG, 0, '_payment'); $tracepost = ""; foreach($_POST as $k => $v) $tracepost .= "{$k} - {$v}\n"; @@ -126,6 +126,7 @@ if (! empty($_SESSION['ipaddress'])) // To avoid to make action twice $FinalPaymentAmt = $_SESSION['FinalPaymentAmt']; // From env $ipaddress = $_SESSION['ipaddress']; + $errormessage = $_SESSION['errormessage']; // Appel des triggers include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; @@ -173,8 +174,9 @@ if (! empty($_SESSION['ipaddress'])) // To avoid to make action twice $content.=''.$companylangs->transnoentitiesnoconv("TechnicalInformation").":
\n"; $content.=$companylangs->transnoentitiesnoconv("OnlinePaymentSystem").': '.$paymentmethod."
\n"; $content.=$companylangs->transnoentitiesnoconv("ReturnURLAfterPayment").': '.$urlback."
\n"; + $content.=$companylangs->transnoentitiesnoconv("Error").': '.$errormessage."
\n"; $content.="
\n"; - $content.="tag=".$fulltag."\ntoken=".$onlinetoken." paymentType=".$paymentType." currencycodeType=".$currencyCodeType." payerId=".$payerID." ipaddress=".$ipaddress." FinalPaymentAmt=".$FinalPaymentAmt; + $content.="tag=".$fulltag." token=".$onlinetoken." paymentType=".$paymentType." currencycodeType=".$currencyCodeType." payerId=".$payerID." ipaddress=".$ipaddress." FinalPaymentAmt=".$FinalPaymentAmt; $ishtml=dol_textishtml($content); // May contain urls