Fix new stripe API

This commit is contained in:
Laurent Destailleur 2018-10-12 21:00:33 +02:00
parent 2bbf9a3429
commit 1e635cff1b
3 changed files with 55 additions and 33 deletions

View File

@ -147,22 +147,33 @@ class InterfaceStripe
if ($customer)
{
$namecleaned = $object->name ? $object->name : null;
$vatcleaned = array(
"tax_id" => $object->tva_intra ? $object->tva_intra : null, // We force data to "null" if empty as expected by Stripe
"type" => 'vat',
);
$vatcleaned = $object->tva_intra ? $object->tva_intra : null;
$taxinfo = array('type'=>'vat');
if ($vatcleaned)
{
$taxinfo["tax_id"] = $vatcleaned;
}
// We force data to "null" if not defined as expected by Stripe
if (empty($vatcleaned)) $taxinfo=null;
// Detect if we change a Stripe info (email, description, vat id)
$changerequested = 0;
if (! empty($object->email) && $object->email != $customer->email) $changerequested++;
if ($namecleaned != $customer->description) $changerequested++;
if ($vatcleaned != $customer->tax_info) $changerequested++;
if (! isset($customer->tax_info['tax_id']) && ! is_null($vatcleaned)) $changerequested++;
elseif (isset($customer->tax_info['tax_id']) && is_null($vatcleaned)) $changerequested++;
elseif (isset($customer->tax_info['tax_id']) && ! is_null($vatcleaned))
{
if ($vatcleaned != $customer->tax_info['tax_id']) $changerequested++;
}
if ($changerequested)
{
if (! empty($object->email)) $customer->email = $object->email;
$customer->description = $namecleaned;
$customer->tax_info = $vatcleaned;
if (empty($taxinfo)) $customer->tax_info = array('type'=>'vat', 'tax_id'=>null);
else $customer->tax_info = $taxinfo;
$customer->save();
}

View File

@ -413,12 +413,12 @@ if ($action == 'charge' && ! empty($conf->stripe->enabled))
$dol_type=(GETPOST('s', 'alpha') ? GETPOST('s', 'alpha') : GETPOST('source', 'alpha'));
$dol_id=GETPOST('dol_id', 'int');
$vatnumber = GETPOST('vatnumber','alpha');
$savesource=GETPOST('savesource', 'int');
$savesource=GETPOSTISSET('savesource')?GETPOST('savesource', 'int'):1;
dol_syslog("stripeToken = ".$stripeToken, LOG_DEBUG, 0, '_stripe');
dol_syslog("email = ".$email, LOG_DEBUG, 0, '_stripe');
dol_syslog("thirdparty_id = ".$thirdparty_id, LOG_DEBUG, 0, '_stripe');
dol_syslog("vatnumber = ".$vatnumber, LOG_DEBUG, 0, '_stripe');
dol_syslog("POST stripeToken = ".$stripeToken, LOG_DEBUG, 0, '_stripe');
dol_syslog("POST email = ".$email, LOG_DEBUG, 0, '_stripe');
dol_syslog("POST thirdparty_id = ".$thirdparty_id, LOG_DEBUG, 0, '_stripe');
dol_syslog("POST vatnumber = ".$vatnumber, LOG_DEBUG, 0, '_stripe');
$error = 0;
@ -444,7 +444,6 @@ if ($action == 'charge' && ! empty($conf->stripe->enabled))
$servicestatus = 1;
}
$thirdparty = new Societe($db);
$thirdparty->fetch($thirdparty_id);
@ -455,9 +454,11 @@ if ($action == 'charge' && ! empty($conf->stripe->enabled))
$customer = $stripe->customerStripe($thirdparty, $stripeacc, $servicestatus, 1);
// Create Stripe card from Token
if (! empty($savesource)) {
$card = $customer->sources->create(array("source" => $stripeToken, "metadata" => $metadata));
} else { $card = $stripeToken; }
if ($savesource) {
$card = $customer->sources->create(array("source" => $stripeToken, "metadata" => $metadata));
} else {
$card = $stripeToken;
}
if (empty($card))
{
@ -468,9 +469,9 @@ if ($action == 'charge' && ! empty($conf->stripe->enabled))
}
else
{
if (! empty($FULLTAG)) $metadata["FULLTAG"] = $FULLTAG;
if (! empty($dol_id)) $metadata["dol_id"] = $dol_id;
if (! empty($dol_type)) $metadata["dol_type"] = $dol_type;
if (! empty($FULLTAG)) $metadata["FULLTAG"] = $FULLTAG;
if (! empty($dol_id)) $metadata["dol_id"] = $dol_id;
if (! empty($dol_type)) $metadata["dol_type"] = $dol_type;
dol_syslog("Create charge on card ".$card->id, LOG_DEBUG, 0, '_stripe');
$charge = \Stripe\Charge::create(array(
@ -495,24 +496,29 @@ if ($action == 'charge' && ! empty($conf->stripe->enabled))
}
else
{
$vatcleaned = array(
"tax_id" => $vatnumber ? $vatnumber : null, // We force data to "null" if empty as expected by Stripe
"type" => 'vat',
);
$vatcleaned = $vatnumber ? $vatnumber : null;
$taxinfo = array('type'=>'vat');
if ($vatcleaned)
{
$taxinfo["tax_id"] = $vatcleaned;
}
// We force data to "null" if not defined as expected by Stripe
if (empty($vatcleaned)) $taxinfo=null;
dol_syslog("Create anonymous customer card profile", LOG_DEBUG, 0, '_stripe');
$customer = \Stripe\Customer::create(array(
'email' => $email,
'description' => ($email?'Anonymous customer for '.$email:'Anonymous customer'),
'metadata' => $metadata,
'tax_info' => $vatcleaned,
'tax_info' => $taxinfo,
'source' => $stripeToken // source can be a token OR array('object'=>'card', 'exp_month'=>xx, 'exp_year'=>xxxx, 'number'=>xxxxxxx, 'cvc'=>xxx, 'name'=>'Cardholder's full name', zip ?)
));
// Return $customer = array('id'=>'cus_XXXX', ...)
if (! empty($FULLTAG)) $metadata["FULLTAG"] = $FULLTAG;
if (! empty($dol_id)) $metadata["dol_id"] = $dol_id;
if (! empty($dol_type)) $metadata["dol_type"] = $dol_type;
if (! empty($FULLTAG)) $metadata["FULLTAG"] = $FULLTAG;
if (! empty($dol_id)) $metadata["dol_id"] = $dol_id;
if (! empty($dol_type)) $metadata["dol_type"] = $dol_type;
// The customer was just created with a source, so we can make a charge
// with no card defined, the source just used for customer creation will be used.

View File

@ -189,13 +189,18 @@ class Stripe extends CommonObject
"description" => $object->name,
"metadata" => array('dol_id'=>$object->id, 'dol_version'=>DOL_VERSION, 'dol_entity'=>$conf->entity, 'ipaddress'=>(empty($_SERVER['REMOTE_ADDR'])?'':$_SERVER['REMOTE_ADDR']))
);
if ($object->tva_intra!=null)
{
$dataforcustomer["tax_info"] = array(
"tax_id" => $object->tva_intra,
"type" => 'vat');
}
$vatcleaned = $object->tva_intra ? $object->tva_intra : null;
$taxinfo = array('type'=>'vat');
if ($vatcleaned)
{
$taxinfo["tax_id"] = $vatcleaned;
}
// We force data to "null" if not defined as expected by Stripe
if (empty($vatcleaned)) $taxinfo=null;
$dataforcustomer["tax_info"] = $taxinfo;
//$a = \Stripe\Stripe::getApiKey();
//var_dump($a);var_dump($key);exit;