
Originally Posted by
split63
The customer claims he was called away for about 45 minutes. So the 1st and 2nd Stripe payments must have occurred when the customer returned, and the duplication was somehow put in motion by the Zen session timeout which perhaps occurred for Zen but not Stripe?

Thank you for reporting the problem
When disconnected the Zen cart session, redirect to the time out page.
\includes\templates\YOUR_TEMPLATE\templates\tpl_checkout_confirmation_default.ph p line 197 -216
from
PHP Code:
<!--------stripe-------->
<?php
$jason_stripe_select = json_encode($stripe_select);
?>
<script>
var stripe_select = JSON.parse('<?php echo $jason_stripe_select; ?>');
if (stripe_select === "True") {
document.getElementById('btn_submit').style.display ="none";
document.getElementById('checkout_confirmation').style.display ="none";
document.getElementById('payment-form','submit').display ="block";
}else{
document.getElementById('btn_submit').display ="block";
document.getElementById('checkout_confirmation').display ="block";
document.getElementById('payment-form','submit').style.display ="none";
}
</script>
<!--------end-stripe-------->
PHP Code:
<!--------stripe-------->
<?php
$jason_stripe_select = json_encode($stripe_select);
$jason_sess_life = json_encode($SESS_LIFE);
$timeoutURL = '"' . HTTPS_SERVER . DIR_WS_HTTPS_CATALOG . 'index.php?main_page=time_out"';
?>
<script>
var stripe_select = JSON.parse('<?php echo $jason_stripe_select; ?>');
var sess_life = JSON.parse('<?php echo $jason_sess_life; ?>');
var timeoutURL = JSON.parse('<?php echo $timeoutURL; ?>');
if (stripe_select === "True") {
document.getElementById('btn_submit').style.display ="none";
document.getElementById('checkout_confirmation').style.display ="none";
document.getElementById('payment-form','submit').display ="block";
setTimeout(function(){window.location.href = timeoutURL;}, sess_life*1000);
}else{
document.getElementById('btn_submit').display ="block";
document.getElementById('checkout_confirmation').display ="block";
document.getElementById('payment-form','submit').style.display ="none";
}
</script>
<!--------end-stripe-------->