piccolo inciso: utilizzo gestpay nell'area non-test e lo script necessità cmq di al
cune piccole modifiche per funzionare correttamente. non è semplicemente plug in ne abbiamo discusso in un altro thread
errata corrige con j!13 e VM13 ho qualche problema piuttosto serio.
il pagamento funziona, però, contrariamente a quanto accadeva con vm12:
1) non viene inviato il codice d'ordine corretto: viene sempre inviato codice di transazione = 1
2) non viene aggiornato lo stato dell'ordine a "C" dopo il pagamento ma rimane in stato di "P"
problema 1)il codice d'ordine in VM è corretto ed è presente nel DB.
il codice d'ordine ShopTransactionID dovrebbe venire letto da inc_sella.php dal DB di VM. questo php legge il prefisso della trsanzione e ci appende il numero d'ordine (e passa tutto al server sella) tramite le seguenti linee di codice
[b]$auth = $_SESSION['auth'];
$db = new ps_DB;
$q = "SELECT order_id FROM #__{vm}_orders WHERE user_id='" . $auth["user_id"] . "' ";
$q .= "ORDER BY cdate DESC";
$db->query($q);
$db->next_record();
$order_id = $db->f("order_id");
if ($order_id=="")
$order_id=1;
else
$order_id++; [/b]
require_once "GestPayCrypt.inc.php";
... CUT ...
$crypt = new GestPayCrypt();
$crypt->SetShopLogin(SELLA_USERID);
[b]$crypt->SetShopTransactionID(SELLA_PREFIX."-".$order_id);[/b]
$crypt->SetAmount($order_total);
$crypt->SetCurrency("242");
if (SELLA_SSL_128==1)
{
$crypt->SetCardNumber($mycreditcard);
$crypt->SetExpMonth($myexpirymonth);
$crypt->SetExpYear($myexpiryyear);
}
... CUT ...
}
ora, la query è corretta, il codice mah..
questa parte che riguarda la sessione è corretta?
$auth = $_SESSION['auth']
l' if che imposta l'ordine=1 se lo trova vuoto è corretto ?
if ($order_id=="") ...
nessun campor order_id è vuoto ma inc_sella.php imposta lo stesso l'ordine a uno.
quindi è l'if sbagliato o non riesce proprio a leggere il db per il problema il fase di auth ?
Problema 2)analogo discorso, per il file checkout.resultsella.php
la query è corretta ma mi preoccupa il WHERE con l'auth user_id o comunque tutti i parametri richiesti dalla sessione
if( !isset( $_REQUEST["order_id"] ) || empty( $_REQUEST["order_id"] ))
echo "Order ID is not set or emtpy!";
else {
include( CLASSPATH. "payment/ps_sellapay.cfg.php" );
$order_id = mosgetparam( $_REQUEST, "order_id" );
$sella_reply = mosgetparam( $_REQUEST, "sella_reply" );
$q = "update #__{vm}_orders set order_status='C' WHERE ";
$q .= "#__{vm}_orders.user_id='" . $auth["user_id"] . "' ";
$q .= "AND #__{vm}_orders.order_id='$order_id'";
if ($sella_reply == "OK") {
$db->query($q);
avete una idea ?
a voi funziona ?
P.S.
questo codice sql
user_id='" . $auth["user_id"] . "'
non dovrebbe essere
user_id=" . $auth["user_id"] . "
?
senza apici insomma