[ic] Intermittent Checkout Problem

Sheamus Nulty interchange-users@interchange.redhat.com
Fri Nov 9 08:38:00 2001


Hi Foks,

I had a customer  who experienced a problem at checkout where an order he
placed was successful yet he was still returned to the checkout page and not
the receipt page.

The little feeback I got from the customer was that  when he clicked Place
Order it took a long time for anything to happen but when something did
happen the checkout page was returned with an error message. Unfortunately,
he can't remember what the message was. However, the order was placed
successfully as it was added to the system and he got his order confirmation
email.

I've checked the various logs and no error was recorded and the extra
debugging information I added returned no error at all either. So my
question is, does anybody know why interchange would return to the checkout
page even though the order was placed successfully. I know its a very broad
question but at the moment I'm completely stumped as to how to track down
this problem.

I'm using the standard config that comes with 4.8.2 catalog.cfg for the
order routes and my order profile is as follows

__NAME__                            checkout_profile
fname=required
lname=required
address1=required
city=required
country=required
[if value country =~ /^(US|CA)$/i]
        state=state_province
        zip=postcode
[/if]
&or phone_night=phone, phone_day=phone Must have day or evening phone number

&fatal = yes
email=required
email=email

&set = mv_payment Incomplete

[if value fax_order == 1]
&set = mv_payment Check or Money Order (will call)

[elsif value fax_order == 2]
project_id=required Please include your PO number
&set = mv_payment Purchase order [value project_id]
[value name=tmp_total set="[total-cost noformat=1]" hide=1]
[perl tables="pricing products userdb"]
        $CGI->{credit_limit_ok} = 1;
        my $total = delete $Values->{tmp_total};
        return unless $limit = tag_data('userdb', 'credit_limit',
$Session->{username});
        Log("credit_limit=$limit total=$total");
        delete $CGI->{credit_limit_ok};
        if($limit >= $total) {
                $CGI->{credit_limit_ok} = 1;
        }
        return;
[/perl]
credit_limit_ok=mandatory Credit limit exceeded.
[/elsif]

[elsif value fax_order == 3]
&set = mv_payment COD
[value name=mv_handling set=cod hide=1]
[/elsif]
[elsif variable MV_PAYMENT_MODE]
&credit_card=standard keep __CREDIT_CARDS_ACCEPTED__
&charge=[var MV_PAYMENT_MODE][cgi mv_payment_test]
&set=mv_payment Real-time Credit Card (%c)
&fail=../special_pages/failed
[/elsif]

[elsif config CyberCash]
&fail=../special_pages/failed
&charge=[var CYBER_MODE]
[/elsif]

[elsif config CreditCardAuto]
mv_credit_card_valid=required Credit card fails tests.
&set=mv_payment Credit Card (%c)
[/elsif]

[else]
&credit_card=standard __CREDIT_CARDS_ACCEPTED__
&set=mv_payment Credit Card (%c)
[/else]
[/if]

&calc = $Values->{mv_payment} =~ s/\%c/$Values->{mv_credit_card_type}/g; 1;
&final = yes
&setcheck=mv_email [value email]
__END__


and my checkout form is

<FORM ACTION="/cgi-bin/cl/process.html" METHOD="POST" name=checkout >
<INPUT TYPE=hidden NAME=mv_session_id VALUE="MvMWy5j3">
<INPUT TYPE=hidden NAME=mv_doit VALUE=refresh>
<INPUT TYPE=hidden NAME=mv_nextpage VALUE="ord/checkout">
<INPUT TYPE=hidden NAME=mv_order_route   VALUE="log main copy_user">
<INPUT TYPE=HIDDEN NAME=mv_check    VALUE="Save_database">

Regards and thanks

Sheamus