[ic] Problems with Receipts

Chavvon Smith interchange-users@icdevgroup.org
Wed Jul 31 17:10:02 2002


I have just recently setup interchange and I've having problems with the
receipt.  The orders get placed in the database and the credit card is
charged, but after checkout the receipt is not displayed and no email
receipt is mailed.  It just returns to the checkout page like nothing
happened.

The order is in the system and the credit card is charged. I am using
authorize.net.  I assume this is an issues associated with my routes so I
have included my catalog.cfg file and the error log.

I can see on occasion that the systems tries to email the receipt and fails
fro the error log, but I have never seen the receipt displayed.  I changed
the sendmail program in interchange.cfg to /usr/lib/sendmail to alleviate
the problem, but it didn't.  Configs are below.  Your help is appreciated.
We can barter with on dedicated servers at www.hostmania.net to anyone that
can figure this out.  I appreciate it.



error.log file here



12.238.168.36 TspnyrdZ:12.238.168.36 - [31/July/2002:02:56:24 -0500]
commerce /~commerce/cgi-bin/cart.cgi/process.html PGP failed with status
131072:
12.238.168.36 TspnyrdZ:12.238.168.36 - [31/July/2002:02:56:25 -0500]
commerce /~commerce/cgi-bin/cart.cgi/process.html PGP failed with status
131072:
12.238.168.36 TspnyrdZ:12.238.168.36 - [31/July/2002:02:56:25 -0500]
commerce /~commerce/cgi-bin/cart.cgi/process.html Unable to send mail using
/usr/sbin/sendmail
> To:
> Subject: ORDER 1024
> Reply-To: chavvon@hostmania.net
>
>
> ---TspnyrdZ-1513:=28038
> Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
> Content-ID:
<Interchange.4.8.3.020731025625.TspnyrdZ.1514@https://commerce.hostmania.net
/~commerce/cgi-bin/cart.cgi>
> Content-Description: Order Text
>
> -     ORDER DATE: Wed 31 Jul 2002 02:56:25 AM CDT
>     ORDER NUMBER: 1024
>      LEAD SOURCE:
>    REFERRING URL:
>
>             Name: Chavvon Smith
>
>    Email address: chavvon@hostmania.net - EMAIL COPY REQUESTED
>    Mail List Req:
>
>          Address: 3700 Legacy
> City, State, Zip: Frisco, TX  75034
>          Country: US
>
>
>   Payment Method: Real-time Credit Card (mc -- authorizenet)
>
>   Account Number: 55**4163      Expiration: 6/04
>
>
>
>  Shipping Method: UPS Next Day Air
>
>    Daytime Phone: 9726256784
>    Evening Phone:
>
>
>
> Quan  Item No.    Description                            Price
Extension
> ---- ----------- -------------------------------- ------------- ----------
-----
>   1   00059      Web Server FTP Data Backup              $2.00
$2.00
>                  (per GB)
>
>
>
>
>                                                  SUBTOTAL
$2.00
>                                                  SALES TAX
$0.00
>                                                  SHIPPING
$0.00
>                                                  ORDER TOTAL
$2.00
>
>
65.125.81.189 5YqgC4hg:65.125.81.189 - [31/July/2002:10:23:32 -0500]
commerce /~commerce/cgi-bin/cart.cgi/process.html PGP failed with status
131072:
65.125.81.189 5YqgC4hg:65.125.81.189 - [31/July/2002:10:23:33 -0500]
commerce /~commerce/cgi-bin/cart.cgi/process.html PGP failed with status
131072:
65.125.81.189 LdwZafm4:65.125.81.189 - [31/July/2002:10:57:36 -0500]
commerce /~commerce/cgi-bin/cart.cgi/process.html Successful login by user
'dune'
12.238.168.36 jNaPV5Aa:12.238.168.36 - [31/July/2002:13:26:09 -0500]
commerce /~commerce/cgi-bin/cart.cgi/process.html PGP failed with status
131072:
12.238.168.36 jNaPV5Aa:12.238.168.36 - [31/July/2002:13:26:15 -0500]
commerce /~commerce/cgi-bin/cart.cgi/process.html PGP failed with status
131072:
12.238.168.36 jNaPV5Aa:12.238.168.36 - [31/July/2002:13:26:15 -0500]
commerce /~commerce/cgi-bin/cart.cgi/process.html Successful login by user
'U00021'
2.238.168.36 jNaPV5Aa:12.238.168.36 - [31/July/2002:13:26:15 -0500] commerce
/~commerce/cgi-bin/cart.cgi/process.html ERRORS on ORDER 1027:
> Error during creation of order routing main:
> Empty order routing main (and not explicitly empty).
> Either attach or email are required in the route setting.

12.238.168.36 jNaPV5Aa:12.238.168.36 - [31/July/2002:13:32:16 -0500]
commerce /~commerce/cgi-bin/cart.cgi/process.html Successful login by user
'commerce'
65.125.81.189 fsZVQ43Z:65.125.81.189 - [31/July/2002:13:59:34 -0500]
commerce /~commerce/cgi-bin/cart.cgi/process.html Successful login by user
'dune'
12.238.168.36 JYSHPtjo:12.238.168.36 - [31/July/2002:14:10:53 -0500]
commerce /~commerce/cgi-bin/cart.cgi/process.html Successful login by user
'commerce'
216.6.14.45 I36gNyLs:216.6.14.45 - [31/July/2002:14:19:45 -0500] commerce
/~commerce/cgi-bin/cart.cgi/process.html PGP failed with status 131072:
216.6.14.45 I36gNyLs:216.6.14.45 - [31/July/2002:14:19:47 -0500] commerce
/~commerce/cgi-bin/cart.cgi/process.html PGP failed with status 131072:
216.6.14.45 I36gNyLs:216.6.14.45 - [31/July/2002:14:19:47 -0500] commerce
/~commerce/cgi-bin/cart.cgi/process.html Successful login by user 'U00022'
216.6.14.45 I36gNyLs:216.6.14.45 - [31/July/2002:14:19:47 -0500] commerce
/~commerce/cgi-bin/cart.cgi/process.html ERRORS on ORDER 1028:
> Error during creation of order routing main:
> Empty order routing main (and not explicitly empty).
> Either attach or email are required in the route setting.



here is the catalog.cfg file.


#==========================================================================#

# catalog.cfg
# See the 'icconfig' document for details.

#==========================================================================#

# Read in initial variables from a database.
VariableDatabase variable

#==========================================================================#

# Allow a template to drop in some beginning config.
include etc/before.cfg

#==========================================================================#

# Warn if any important modules or usertags are missing.

Require module Digest::MD5    "Need %s %s for better cache keys."
Require module Safe::Hole
Require module SQL::Statement
Require module LWP::Simple
Require UserTag   email email_raw var loc table_editor button
CreditCardAuto  No

#==========================================================================#

# Can send various files outside the catalog directory, for disk partition
# reasons, for example.

ParseVariables  Yes

ifdef LOGDIR
ErrorFile       __LOGDIR__/error.log
AsciiTrack      __LOGDIR__/tracking.asc
TrackFile       __LOGDIR__/usertrack
endif

ifndef LOGDIR
AsciiTrack      logs/tracking.asc
TrackFile       logs/usertrack
endif

ifdef CACHEDIR
SessionDatabase __CACHEDIR__/session
ScratchDir      __CACHEDIR__/tmp
endif

ifndef CACHEDIR
SessionDatabase session
ScratchDir      tmp
endif

#==========================================================================#

# Database setup

ParseVariables  Yes

ifndef SQLDSN
Variable  SQLDSN
endif

ifdef MYSQL
include dbconf/mysql/mysql.cfg
endif

ifdef PGSQL
include dbconf/pgsql/pgsql.cfg
endif

ifdef ORACLE
include dbconf/oracle/oracle.cfg
endif

# Default DBM if nothing else defined
ifndef SOME_DATABASE
include dbconf/default_db/default_db.cfg
endif

ProductFiles   products

#==========================================================================#

# The URLs which are written to refer back to our catalog.

ParseVariables  Yes

VendURL    https://__SERVER_NAME____CGI_URL__
SecureURL  __SECURE_SERVER____CGI_URL__

ifndef SECURE_ENABLE
SecureURL  https://__SERVER_NAME____CGI_URL__
endif

# Set the image path for relative images
ImageDir          __IMAGE_DIR__/
ImageDirInternal  https://__SERVER_NAME____IMAGE_DIR__/

#==========================================================================#

# Here we set up the catalog theme.

ParseVariables Yes

ifndef STYLE
Variable STYLE default
endif
include templates/__STYLE__/theme.cfg

#==========================================================================#

# Last locale specified is the default.
Locale          en_US LC_CTYPE C
LocaleDatabase  locale

#==========================================================================#

# Various catalog settings.

ScratchDefault  mv_add_dot_html   1
ScratchDefault  mv_no_session_id  1
ScratchDefault  mv_no_count       1

SpecialPage  catalog  index
SpecialPage  report   ../etc/report
SpecialPage  receipt  ../etc/receipt

# Allow others in our group to read/write files by default
ReadPermission  group
WritePermission group

# If a specific user session accesses our catalog more than this many times
# in a 30-second time period. If the limit is exceeded, the LockoutCommand
# (if set) is executed. Set this to 0 if you're getting links to 127.0.0.1
# during your testing.
RobotLimit  100

# Sets Interchange to not parse <BODY MV="body 1"> and other tags within
# HTML tags. Use [pragma no_html_parse 0] to enable on an individual page.
Pragma  no_html_parse

# Strip whitespace from top of pages so you don't have to scroll down
# before the HTML starts when doing 'view source' in a browser.
Pragma  strip_white

#==========================================================================#

# User session related settings.

# Whether to encrypt passwords in UserDB
# We usually don't for users, so we can mail them their password
# We DO in admin, that is set in catalog_after.cfg
UserDB    default    crypt         0

# Change a field to something that doesn't conflict in MySQL
UserDB    default    time_field    mod_time

# Don't want people setting their credit limit or dealer status directly
UserDB    default    scratch       "dealer price_level credit_limit"

# minimal login stuff for affiliate
UserDB    affiliate  user_field    affiliate
UserDB    affiliate  database      affiliate
UserDB    affiliate  time_field    none
UserDB    affiliate  crypt         0

# Set this to Yes if you want auto-login capability for users.
# You must be careful about malicious JavaScripts in your embedded code.
CookieLogin  No

#==========================================================================#

# Cart, order, and route settings.

ParseVariables  Yes

ValuesDefault   country      __SHIP_DEFAULT_COUNTRY__
ValuesDefault   mv_shipmode  __SHIP_DEFAULT_MODE__
DefaultShipping __SHIP_DEFAULT_MODE__

MailOrderTo     __ORDERS_TO__

AlwaysSecure    ord/checkout login change_password

## Set this if you have a different secure server
#AlwaysSecure   order ord/checkout ord/basket login change_password process

PriceField      0
CommonAdjust    :sale_price, ;:price, ;$, ==:options

EncryptKey  __PGP_KEY__

# This prevents a user from setting this value, you may want to unset
# this if you have user-selectable handling charges like insurance
FormIgnore   mv_handling
#
#

# Along these lines further, for better integrity and less chance of a
# user screwing up your order routes:
# Note that __ORDER_ROUTES__ is empty by default, default Route "default"
# is used with cascades
FormIgnore      mv_order_route

## This route places the order entry in the database. If you don't
## have an inventory table (or a userdb table for that matter) make
## sure you remove it from the list of "transactions" tables.

Route log  <<EOF
        empty        1
        encrypt      0
        increment    0
        report       etc/log_transaction
        supplant     0
        track        logs/log
EOF

## This route places the order entry in the database when you are
## entering an order from the admin. See above.
Route log_entry  <<EOF
        empty        1
        encrypt      0
        report       etc/log_entry
        supplant     0
        track        logs/log
EOF

ifdef TRANSACTION_TABLES
Route log       transactions '__TRANSACTION_TABLES__'
Route log_entry transactions '__TRANSACTION_TABLES__'
endif

## This route copies the user if they requested that. We don't
## care (much) if it fails, so error_ok is set and failure will
## not cause the order to fail
Route copy_user  <<EOF
        empty        1
        error_ok     1
        encrypt      0
        increment    0
        report       etc/mail_receipt
        supplant     0
        track        logs/log
EOF

ParseVariables Yes

# Order routes can be maintained in a database
# CHANGES TO THIS WILL OVERRIDE THE ROUTES ABOVE.
RouteDatabase   route

## Uncomment this if you want Routes read dynamically from DB
#Route   default   dynamic_routes  1
## Uncomment this if you want ITL allowed in routes
#Route   default   expandable      1

## These routes are not order routes, but payment routes
Route  authorizenet  id           "__AUTHNET_ID__"
Route  authorizenet  secret       "__AUTHNET_SECRET__"
Route  authorizenet  host         "__AUTHNET_HOST__"
Route  authorizenet  referer      "__AUTHNET_REFERER__"

Route  cybercash     configfile   "__CYBER_CONFIGFILE__"

Route  itransact     id           "__ITRANSACT_ID__"

Route  signio        id           "__SIGNIO_ID__"
Route  signio        secret       "__SIGNIO_SECRET__"
Route  signio        partner      "__SIGNIO_PARTNER__"
Route  signio        vendor       "__SIGNIO_VENDOR__"
Route  signio        host         "__SIGNIO_SERVER__"

Route  skipjack      id           "__SKIPJACK_ID__"
Route  skipjack      partner      "__SKIPJACK_PARTNER__"


SalesTax        __TAXFIELD__
TaxShipping     __TAXSHIPPING__
SeparateItems   Yes

OrderCounter    etc/order.number
OrderLineLimit  200
OrderProfile    etc/profiles.order etc/profiles.login etc/profiles.misc


# Default route is run if no routes set, this should be last Route
# always
Route   default   master          1
Route   default   cascade         "log main copy_user"
Route   default   empty           1
Route   default   supplant        1
Route   default   email           '__ORDERS_TO__'


## This route emails the order to you unless email is set to "",
## and failsafe-logs the order report a couple of places
Route main  <<EOF
        attach            0
        credit_card       1
        default           1
        email             '__ORDERS_TO__'
        encrypt           0
        errors_to         '__ORDERS_TO__'
        pgp_cc_key        "__PGP_KEY__"
        pgp_key           "__PGP_KEY__"
        receipt           etc/receipt.html
        report            etc/report
        supplant          1
        individual_track  orders
        track             logs/tracking.asc
EOF

#==========================================================================#

# Static page build settings.

NoCache  <<EOF
        admin
        login
        account
        logout
        config
        multi
        ord/basket
        ord/checkout
        query
        reconfig
        special
EOF

Static        __CATALOG_STATIC__
StaticLogged  __LOGGED_STATIC__
StaticAll     Yes
StaticDBM     static
StaticDepth   2
StaticDir     __SAMPLEHTML__/pages
StaticFly     Yes
StaticPath    __SAMPLEURL__/pages

#==========================================================================#

ifdef UI_TRAFFIC_STATS
TrackFile __UI_TRAFFIC_STATS__
endif

# Deal with customer click history. For example, after adding an item to
# the cart, the user can return to a specific search results page.
History 10
UserTag history-scan Order find exclude default
UserTag history-scan addAttr
UserTag history-scan Routine <<EOR
my %var_exclude = ( qw/
        mv_credit_card_number 1
        mv_pc                 1
        mv_session_id         1
/);
sub {
        my ($find, $exclude, $default) = @_;
        my $ref = $Vend::Session->{History}
                or return $Tag->area($default ||
$Config->{SpecialPage}{catalog});
        my ($hist, $href, $cgi);
        $exclude = qr/$exclude/ if $exclude;
        for(my $i = $#$ref; $i >= 0; $i--) {
                #Log("checking $ref->[$i][0] for $exclude");
                next if $ref->[$i][0] eq 'expired';
                if ($exclude and $ref->[$i][0] =~ $exclude) {
                        next;
                }
                if($find) {
                        next unless $ref->[$i][0] =~ /$find/;
                }
                ($href, $cgi) = @{$ref->[$i]};
                last;
        }
        return $Tag->area($default || $Config->{SpecialPage}{catalog})
                if ! $href;
        my $form = '';
        for(grep !$var_exclude{$_}, keys %$cgi) {
                $form .= "\n$_=";
                $form .= join("\n$_=", split /\0/, $cgi->{$_});
        }
        return $Tag->area( { href => $href, form => $form} );
}
EOR

# Allow delivery of soft goods (downloadable files).
ActionMap  deliver   <<EOR
sub {
        my $deliverable = shift;
        $Scratch->{deliverable} = $CGI->{mv_arg};
        $CGI->{mv_nextpage} = 'deliver';
        if(! $Session->{username} and $CGI->{mv_username}) {
                $Tag->userdb('login');
        }
        return 1;
}
EOR

# Allow customers to have their passwords emailed to them.
ActionMap  get_password   <<EOR
sub {
        $Config->{NoSearch} = '';
        $CGI->{mv_nextpage} = $CGI->{mv_search_page} =
'action/get_password';
        $CGI->{mv_todo} = 'search';
        $Tag->update('process');
        return 1;
}
EOR

#==========================================================================#

# Allow a template to drop in some ending config.
include etc/after.cfg

#=


Thanks Again,

chavvon smith