Ciao ragazzi,
moltissimi dei miei clienti, da un po di tempo mi segnalano che il processo di acquisto non si conclude correttamente, nonostante selezionino i metodi di pagamento e quelli di spedizioni, al momento della conclusione, cicla e torna alla scelta del metodo di pagamento.....??? mi sapete dire il perchè?
Procedura di acquisto che cicla
Moderatore: mod Generali
-
- membro Junior
- Messaggi: 35
- Iscritto il: 04/02/2006, 17:04
- Contatta:
Procedura di acquisto che cicla
www.solo2tempi.it la passione per il motore 2Tempi
-
- membro Junior
- Messaggi: 35
- Iscritto il: 04/02/2006, 17:04
- Contatta:
Re: Procedura di acquisto che cicla
nessuna sa darmi una mano???





www.solo2tempi.it la passione per il motore 2Tempi
-
- membro Junior
- Messaggi: 35
- Iscritto il: 04/02/2006, 17:04
- Contatta:
Re: Procedura di acquisto che cicla
Mi sapete dire qualcosa sto scartabellando un bel po di codice ma non trovo la soluzione....
L'unica cosa che ho notato è che nella pagine dove si seleziona il metodo di spedizione uno dei metodi è già selezionato nell'input type radio, mentre al passo successivo quando si deve selezionare il metodo di pagamento, tutti i vari input type radio non sono selezionati.
Provando a procedere con l'ordine mi da quindi il messaggio di errore javascript, che devo selezionare un metodo di pagamento (fino a qui nulla di strano).
Selezionando il primo pagamento in ordine, io ho la ricarica postepay, mi incorre in un errore e mi cicla tornando a questa pagina con i seguente url:
/checkout_payment.php?error_message=Seleziona+un+tipo+di+pagamento+per+il+tuo+acquisto.
in alcuni casi selezionando un altro metodo di pagamento, finalmente la procedura va avanti....però il cliente si trova ad aver selezionato un metodo di pagamento diverso da quello che voleva all'inizio.
Non so se il problema risiede in qualche funzione dentro il file /includes/classes/payment.php di cui vi riporto il codice sotto:
L'unica cosa che ho notato è che nella pagine dove si seleziona il metodo di spedizione uno dei metodi è già selezionato nell'input type radio, mentre al passo successivo quando si deve selezionare il metodo di pagamento, tutti i vari input type radio non sono selezionati.
Provando a procedere con l'ordine mi da quindi il messaggio di errore javascript, che devo selezionare un metodo di pagamento (fino a qui nulla di strano).
Selezionando il primo pagamento in ordine, io ho la ricarica postepay, mi incorre in un errore e mi cicla tornando a questa pagina con i seguente url:
/checkout_payment.php?error_message=Seleziona+un+tipo+di+pagamento+per+il+tuo+acquisto.
in alcuni casi selezionando un altro metodo di pagamento, finalmente la procedura va avanti....però il cliente si trova ad aver selezionato un metodo di pagamento diverso da quello che voleva all'inizio.
Non so se il problema risiede in qualche funzione dentro il file /includes/classes/payment.php di cui vi riporto il codice sotto:
Codice: Seleziona tutto
<?php
/*
$Id: payment.php,v 1.37 2003/06/09 22:26:32 hpdl Exp $
osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com
Copyright (c) 2003 osCommerce
Released under the GNU General Public License
*/
class payment {
var $modules, $selected_module;
// class constructor
function payment($module = '') {
global $payment, $language, $PHP_SELF, $shipping;
if (defined('MODULE_PAYMENT_INSTALLED') && tep_not_null(MODULE_PAYMENT_INSTALLED)) {
require(DIR_WS_CLASSES . 'ship2pay.php');
$my_ship2pay = new ship2pay;
$arrship=explode('_',$shipping['id']);
$ship2pay_mods = $my_ship2pay->get_pay_modules($arrship[0]);
if (tep_not_null($ship2pay_mods)){
$this->modules = explode(';', $ship2pay_mods);
}else{
$this->modules = explode(';', MODULE_PAYMENT_INSTALLED);
}
$include_modules = array();
if ( (tep_not_null($module)) && (in_array($module . '.' . substr($PHP_SELF, (strrpos($PHP_SELF, '.')+1)), $this->modules)) ) {
$this->selected_module = $module;
$include_modules[] = array('class' => $module, 'file' => $module . '.php');
} else {
reset($this->modules);
while (list(, $value) = each($this->modules)) {
$class = substr($value, 0, strrpos($value, '.'));
$include_modules[] = array('class' => $class, 'file' => $value);
}
}
for ($i=0, $n=sizeof($include_modules); $i<$n; $i++) {
include(DIR_WS_LANGUAGES . $language . '/modules/payment/' . $include_modules[$i]['file']);
include(DIR_WS_MODULES . 'payment/' . $include_modules[$i]['file']);
$GLOBALS[$include_modules[$i]['class']] = new $include_modules[$i]['class'];
}
// if there is only one payment method, select it as default because in
// checkout_confirmation.php the $payment variable is being assigned the
// $HTTP_POST_VARS['payment'] value which will be empty (no radio button selection possible)
if ( (tep_count_payment_modules() == 1) && (!isset($GLOBALS[$payment]) || (isset($GLOBALS[$payment]) && !is_object($GLOBALS[$payment]))) ) {
$payment = $include_modules[0]['class'];
}
if ( (tep_not_null($module)) && (in_array($module, $this->modules)) && (isset($GLOBALS[$module]->form_action_url)) ) {
$this->form_action_url = $GLOBALS[$module]->form_action_url;
}
}
}
// class methods
/* The following method is needed in the checkout_confirmation.php page
due to a chicken and egg problem with the payment class and order class.
The payment modules needs the order destination data for the dynamic status
feature, and the order class needs the payment module title.
The following method is a work-around to implementing the method in all
payment modules available which would break the modules in the contributions
section. This should be looked into again post 2.2.
*/
function update_status() {
if (is_array($this->modules)) {
if (is_object($GLOBALS[$this->selected_module])) {
if (function_exists('method_exists')) {
if (method_exists($GLOBALS[$this->selected_module], 'update_status')) {
$GLOBALS[$this->selected_module]->update_status();
}
} else { // PHP3 compatibility
@call_user_method('update_status', $GLOBALS[$this->selected_module]);
}
}
}
}
function javascript_validation() {
$js = '';
if (is_array($this->modules)) {
$js = '<script language="javascript"><!-- ' . "\n" .
'function check_form() {' . "\n" .
' var error = 0;' . "\n" .
' var error_message = "' . JS_ERROR . '";' . "\n" .
' var payment_value = null;' . "\n" .
' if (document.checkout_payment.payment.length) {' . "\n" .
' for (var i=0; i<document.checkout_payment.payment.length; i++) {' . "\n" .
' if (document.checkout_payment.payment[i].checked) {' . "\n" .
' payment_value = document.checkout_payment.payment[i].value;' . "\n" .
' }' . "\n" .
' }' . "\n" .
' } else if (document.checkout_payment.payment.checked) {' . "\n" .
' payment_value = document.checkout_payment.payment.value;' . "\n" .
' } else if (document.checkout_payment.payment.value) {' . "\n" .
' payment_value = document.checkout_payment.payment.value;' . "\n" .
' }' . "\n\n";
reset($this->modules);
while (list(, $value) = each($this->modules)) {
$class = substr($value, 0, strrpos($value, '.'));
if ($GLOBALS[$class]->enabled) {
$js .= $GLOBALS[$class]->javascript_validation();
}
}
$js .= "\n" . ' if (payment_value == null) {' . "\n" .
' error_message = error_message + "' . JS_ERROR_NO_PAYMENT_MODULE_SELECTED . '";' . "\n" .
' error = 1;' . "\n" .
' }' . "\n\n" .
' if (error == 1) {' . "\n" .
' alert(error_message);' . "\n" .
' return false;' . "\n" .
' } else {' . "\n" .
' return true;' . "\n" .
' }' . "\n" .
'}' . "\n" .
'//--></script>' . "\n";
}
return $js;
}
function selection() {
$selection_array = array();
if (is_array($this->modules)) {
reset($this->modules);
while (list(, $value) = each($this->modules)) {
$class = substr($value, 0, strrpos($value, '.'));
if ($GLOBALS[$class]->enabled) {
$selection = $GLOBALS[$class]->selection();
if (is_array($selection)) $selection_array[] = $selection;
}
}
}
return $selection_array;
}
function pre_confirmation_check() {
if (is_array($this->modules)) {
if (is_object($GLOBALS[$this->selected_module]) && ($GLOBALS[$this->selected_module]->enabled) ) {
$GLOBALS[$this->selected_module]->pre_confirmation_check();
}
}
}
function confirmation() {
if (is_array($this->modules)) {
if (is_object($GLOBALS[$this->selected_module]) && ($GLOBALS[$this->selected_module]->enabled) ) {
return $GLOBALS[$this->selected_module]->confirmation();
}
}
}
function process_button() {
if (is_array($this->modules)) {
if (is_object($GLOBALS[$this->selected_module]) && ($GLOBALS[$this->selected_module]->enabled) ) {
return $GLOBALS[$this->selected_module]->process_button();
}
}
}
function before_process() {
if (is_array($this->modules)) {
if (is_object($GLOBALS[$this->selected_module]) && ($GLOBALS[$this->selected_module]->enabled) ) {
return $GLOBALS[$this->selected_module]->before_process();
}
}
}
function after_process() {
if (is_array($this->modules)) {
if (is_object($GLOBALS[$this->selected_module]) && ($GLOBALS[$this->selected_module]->enabled) ) {
return $GLOBALS[$this->selected_module]->after_process();
}
}
}
function get_error() {
if (is_array($this->modules)) {
if (is_object($GLOBALS[$this->selected_module]) && ($GLOBALS[$this->selected_module]->enabled) ) {
return $GLOBALS[$this->selected_module]->get_error();
}
}
}
}
?>
www.solo2tempi.it la passione per il motore 2Tempi