diff --git a/htdocs/stripe/admin/stripe.php b/htdocs/stripe/admin/stripe.php index 728c076d1c8..efc6391bc58 100644 --- a/htdocs/stripe/admin/stripe.php +++ b/htdocs/stripe/admin/stripe.php @@ -333,7 +333,7 @@ print "\n"; print ''; print $langs->trans("VendorName").''; -print ''; +print ''; print '   '.$langs->trans("Example").': '.$mysoc->name; print ''; @@ -383,6 +383,21 @@ if ($conf->global->MAIN_FEATURES_LEVEL >= 2) // TODO Not used by current code print ''; } +// Activate iDEAL +if ($conf->global->MAIN_FEATURES_LEVEL >= 2) // TODO Not used by current code +{ + print ''; + print $langs->trans("STRIPE_IDEAL").''; + if ($conf->use_javascript_ajax) { + print ajax_constantonoff('STRIPE_IDEAL'); + } else { + $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); + print $form->selectarray("STRIPE_IDEAL", $arrval, $conf->global->STRIPE_SEPA_DIRECT_DEBIT); + } + print '   '.$langs->trans("ExampleOnlyForNLCustomers"); + print ''; +} + // Warehouse for automatic decrement //if ($conf->global->MAIN_FEATURES_LEVEL >= 2) // warehouse to reduce stock for online payment //{ diff --git a/htdocs/stripe/class/stripe.class.php b/htdocs/stripe/class/stripe.class.php index f3bb30d7efb..4113f49cd04 100644 --- a/htdocs/stripe/class/stripe.class.php +++ b/htdocs/stripe/class/stripe.class.php @@ -294,8 +294,8 @@ class Stripe extends CommonObject /** * Get the Stripe payment intent. Create it with confirmnow=false * Warning. If a payment was tried and failed, a payment intent was created. - * But if we change something on object to pay (amount or other), reusing same payment intent is not allowed. - * Recommanded solution is to recreate a new payment intent each time we need one (old one will be automatically closed after a delay), + * But if we change something on object to pay (amount or other), reusing same payment intent is not allowed by Stripe. + * Recommended solution is to recreate a new payment intent each time we need one (old one will be automatically closed after a delay), * that's why i comment the part of code to retreive a payment intent with object id (never mind if we cumulate payment intent with old ones that will not be used) * Note: This is used when option STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION is on when making a payment from the public/payment/newpayment.php page * but not when using the STRIPE_USE_NEW_CHECKOUT. @@ -345,14 +345,14 @@ class Stripe extends CommonObject $paymentintent = null; - if (is_object($object)) + if (is_object($object) && ! empty($conf->global->STRIPE_REUSE_EXISTING_INTENT_IF_FOUND)) { // Warning. If a payment was tried and failed, a payment intent was created. - // But if we change someting on object to pay (amount or other that does not change the idempotency key), reusing same payment intent is not allowed. - // Recommanded solution is to recreate a new payment intent each time we need one (old one will be automatically closed after a delay), Stripe will + // But if we change something on object to pay (amount or other that does not change the idempotency key), reusing same payment intent is not allowed by Stripe. + // Recommended solution is to recreate a new payment intent each time we need one (old one will be automatically closed by Stripe after a delay), Stripe will // automatically return the existing payment intent if idempotency is provided when we try to create the new one. // That's why we can comment the part of code to retreive a payment intent with object id (never mind if we cumulate payment intent with old ones that will not be used) - /* + $sql = "SELECT pi.ext_payment_id, pi.entity, pi.fk_facture, pi.sourcetype, pi.ext_payment_site"; $sql.= " FROM " . MAIN_DB_PREFIX . "prelevement_facture_demande as pi"; $sql.= " WHERE pi.fk_facture = " . $object->id; @@ -388,7 +388,7 @@ class Stripe extends CommonObject $this->error = $e->getMessage(); } } - }*/ + } } if (empty($paymentintent)) @@ -402,12 +402,17 @@ class Stripe extends CommonObject if (is_object($object->thirdparty) && $object->thirdparty->id > 0) $metadata['dol_thirdparty_id'] = $object->thirdparty->id; } + // list of payment method types + $paymentmethodtypes = array("card"); + if (!empty($conf->global->STRIPE_SEPA_DIRECT_DEBIT) ) $paymentmethodtypes[] = "sepa_debit"; //&& ($object->thirdparty->isInEEC()) + if (!empty($conf->global->STRIPE_IDEAL) ) $paymentmethodtypes[] = "ideal"; //&& ($object->thirdparty->isInEEC()) + $dataforintent = array( "confirm" => $confirmnow, // Do not confirm immediatly during creation of intent "confirmation_method" => $mode, "amount" => $stripeamount, "currency" => $currency_code, - "payment_method_types" => array("card"), + "payment_method_types" => $paymentmethodtypes, "description" => $description, "statement_descriptor_suffix" => dol_trunc($tag, 10, 'right', 'UTF-8', 1), // 22 chars that appears on bank receipt (company + description) //"save_payment_method" => true, @@ -566,14 +571,19 @@ class Stripe extends CommonObject if (is_object($object->thirdparty) && $object->thirdparty->id > 0) $metadata['dol_thirdparty_id'] = $object->thirdparty->id; } + // list of payment method types + $paymentmethodtypes = array("card"); + if (!empty($conf->global->STRIPE_SEPA_DIRECT_DEBIT) ) $paymentmethodtypes[] = "sepa_debit"; //&& ($object->thirdparty->isInEEC()) + // iDEAL not supported with setupIntent + $dataforintent = array( "confirm" => $confirmnow, // Do not confirm immediatly during creation of intent - "payment_method_types" => array("card"), - "description" => $description, + "payment_method_types" => $paymentmethodtypes, "usage" => "off_session", "metadata" => $metadata ); if (!is_null($customer)) $dataforintent["customer"] = $customer; + if (!is_null($description)) $dataforintent["description"] = $description; // payment_method = // payment_method_types = array('card') //var_dump($dataforintent);