Author: benj
Date: Thu Jul 7 17:05:18 2016
New Revision: 1731
URL: http://svn.gna.org/viewcvs/gdtc?rev=1731&view=rev
Log:
Compute correctly end_date, renewal_date and amount in case of a subscription
with expiration date before 12 monthes
Fix warnings
Modified:
trunk/gdtc/include/CMCIC_HMAC.inc.php
trunk/gdtc/include/cb_cmcic.php
Modified: trunk/gdtc/include/CMCIC_HMAC.inc.php
URL:
http://svn.gna.org/viewcvs/gdtc/trunk/gdtc/include/CMCIC_HMAC.inc.php?rev=1731&r1=1730&r2=1731&view=diff
==============================================================================
--- trunk/gdtc/include/CMCIC_HMAC.inc.php (original)
+++ trunk/gdtc/include/CMCIC_HMAC.inc.php Thu Jul 7 17:05:18 2016
@@ -46,7 +46,7 @@
// <<<--- begin custom OverWrite --------------
-function CMCIC_hmac($CMCIC_Tpe, $tpe_number, $pass, $tpe_hmac_key, $version,
$data="")
+function CMCIC_hmac($tpe_number, $pass, $tpe_hmac_key, $version, $data="")
{
$k1 = pack("H*",sha1($pass));
$l1 = strlen($k1);
@@ -129,7 +129,7 @@
$http_vars [ 'vld' ],
$http_vars [ 'brand' ],
$http_vars [ 'status3ds' ],
- $http_vars [ 'numauto' ],
+ ( array_key_exists ( 'numauto', $http_vars ) ?
$http_vars [ 'numauto' ] : '' ),
$http_vars [ 'motifrefus' ],
$http_vars [ 'originecb' ],
$http_vars [ 'bincb' ],
@@ -141,7 +141,7 @@
);
}
- if ( strtolower($http_vars['MAC'] ) == CMCIC_hmac($CMCIC_Tpe, $http_vars [
'TPE' ],
+ if ( strtolower($http_vars['MAC'] ) == CMCIC_hmac($http_vars [ 'TPE' ],
$pass, $hmac_key,
$version, $php2_fields) ):
$result = $http_vars [ 'code-retour' ];
$receipt = CMCIC_PHP2_MACOK;
Modified: trunk/gdtc/include/cb_cmcic.php
URL:
http://svn.gna.org/viewcvs/gdtc/trunk/gdtc/include/cb_cmcic.php?rev=1731&r1=1730&r2=1731&view=diff
==============================================================================
--- trunk/gdtc/include/cb_cmcic.php (original)
+++ trunk/gdtc/include/cb_cmcic.php Thu Jul 7 17:05:18 2016
@@ -63,6 +63,9 @@
if ( $actor [ 'subscription' ] [ 'payment_mode' ] == 'cbweb_recur' ||
$actor [ 'subscription' ] [ 'payment_mode' ] == 'prelevement' )
{
+ if ( ! $actor [ 'subscription' ] [ 'prelevement_periodicity' ] )
+ return croak ( "Problème de calcul de cotisation, consulter
[email protected]" );
+
$last_amount = $actor [ 'subscription' ] [ 'prelevement_amount' ] *
(12/$actor [ 'subscription' ] [ 'prelevement_periodicity' ]);
}
else
@@ -360,7 +363,7 @@
$version,
'FR',
$tpe_societe );
- $keyedMAC = CMCIC_hmac($CMCIC_Tpe, $tpe, $tpe_pass, $tpe_hmac_key, $version,
$PHP1_FIELDS);
+ $keyedMAC = CMCIC_hmac($tpe, $tpe_pass, $tpe_hmac_key, $version,
$PHP1_FIELDS);
//print "$PHP1_FIELDS<br/>$keyedMAC";
@@ -414,7 +417,7 @@
if ( ! $subscription )
{
fwrite ( $fh, print_r ( sprintf ( "Erreur d'interrogation de la base
pour la cotisation '%d' !\n",
- $subscription [ 'subscription_id' ] ),
+ $verified_vars [ 'reference' ] ),
true ) );
print ( "Erreur d'interrogation de la base." );
exit;
@@ -471,8 +474,18 @@
$verified_vars [ 'reference' ] ) );
if ( ! $results )
{
- fwrite ( $fh, print_r ( sprintf ( "Erreur de mise à jour pour '%d'.\n",
- $subscription [ 'subscription_id' ] ),
+ fwrite ( $fh, print_r ( sprintf ( "Erreur de mise à jour pour '%d',
\"%s\".\n",
+ $subscription [ 'subscription_id' ],
+ sprintf ( " UPDATE subscription ".
+ " SET
payment_received_date = now(), " .
+ "
payment_endorsed_date = now(), " .
+ " amount = '%s', " .
+ "
cbrecur_expiration_date = %s, " .
+ " voucher =
reference " .
+ " WHERE reference = '%s';
",
+ $amount,
+ ( $expiration_date ?
"'$expiration_date'" : 'NULL' ),
+ $verified_vars [
'reference' ] )),
true ) );
exit;
}
@@ -482,11 +495,16 @@
// récurrent avec une date d'expiration < à la fin
if ( $expiration_date <= $subscription [ 'end_date' ] && RECUR_TPE_NUMBER
== $verified_vars [ 'tpe' ] )
{
- /* XXX recalculer le montant : nombre de 5 du mois * prelevement + 1 */
+ $amount = compute_real_cbrecur_amount ( $subscription [ 'start_date' ],
+ $expiration_date,
+ $subscription [
'prelevement_amount' ],
+ $subscription [
'cbrecur_prorata' ] );
+ $subscription [ 'end_date' ] = $expiration_date;
$results = simple_query ( sprintf ( " UPDATE subscription ".
- " SET end_date =
cbrecur_expiration_date " .
+ " SET end_date =
cbrecur_expiration_date, " .
+ " amount = '%d' " .
" WHERE reference = '%s'; ",
- $verified_vars [ 'reference' ] ) );
+ $amount, $verified_vars [
'reference' ] ) );
if ( ! $results )
{
fwrite ( $fh, print_r ( sprintf ( "Erreur de mise à jour pour
'%d'.\n",
@@ -651,7 +669,7 @@
$fields [ 'lgue' ],
$fields [ 'societe' ] );
- $hmac = CMCIC_hmac(false, RECUR_TPE_NUMBER, RECUR_TPE_PASS,
RECUR_TPE_HMAC_KEY, 3.0, $hmac_source);
+ $hmac = CMCIC_hmac(RECUR_TPE_NUMBER, RECUR_TPE_PASS, RECUR_TPE_HMAC_KEY,
3.0, $hmac_source);
$fields [ 'MAC' ] = $hmac;
//url-ify the data for the POST
_______________________________________________
Gdtc-commits mailing list
[email protected]
https://mail.gna.org/listinfo/gdtc-commits