About a month ago a client's site was migrated from Authorize.net to
Echo for payment processing (using IC 4.8.7). Ever since then the
checkout process has been FUBAR'ed.
The site uses Paul Jordan's multi-step checkout, and has worked for some
time. If you had an existing account, typing in your username and
password would simply refresh the page. The only way to get to the
checkout was to create a new account, but trying to submit a credit card
would take you back to the basket. Error logs revealed the following:
"Order profile credit_card not found".
Seaching through the list archives, I finally found a tip about moving
these lines above the order routing:
OrderCounter etc/order.number
OrderLineLimit 200
OrderProfile etc/profiles.order etc/profiles.login etc/profiles.misc
Sure enough, this enabled users to login. You can even use the offline
payment method (checkout2). Using the credit card payment sends you
back to an empty cart. I've checked the Echo logs, and my test orders
have gone through, but the customer doesn't get their receipt. Other
oddities are that the order number increases regardless of checkout
method. The order folder doesn't have order records of any transaction.
Tracking.asc records the offline checkout transactions, but has nothing
on the online credit card ones. The error logs reveal this after
submitting a credit card transaction:
/cgi-bin/shop/process.html PGP failed with status 2:
/cgi-bin/shop/process.html Non-existent order routing log, skipping.
/cgi-bin/shop/process.html Non-existent order routing main, skipping.
/cgi-bin/shop/process.html Non-existent order routing copy_user, skipping.
/cgi-bin/shop/process.html Non-existent order routing log, skipping.
/cgi-bin/shop/process.html Non-existent order routing main, skipping.
/cgi-bin/shop/process.html Non-existent order routing copy_user, skipping.
What the heck is going on? I've racked my brain for hours upon hour on
this, but am completely lost. Below I've included what I think are the
relevant snippets from catalog.cfg. If you'd like to take a look at
profiles.order, it can be downloaded here:
http://toknowaveil.com/profiles.order
Any help would be GREATLY appreciated.
--
catalog.cfg
--
OrderCounter etc/order.number
OrderLineLimit 200
OrderProfile etc/profiles.order etc/profiles.login etc/profiles.misc
# Cart, order, and route settings.
Variable MV_PAYMENT_MODE echo
Variable MV_PAYMENT_ID ********
Variable MV_PAYMENT_SECRET ********
Variable MV_DEMO_MODE 0
ParseVariables Yes
ValuesDefault country __SHIP_DEFAULT_COUNTRY__
ValuesDefault mv_shipmode __SHIP_DEFAULT_MODE__
DefaultShipping FLATD
MailOrderTo __ORDERS_TO__
AlwaysSecure ord/basket ord/checkout account logout customerservice
login change_password ord/promoarea ord/checkarea ord/editprofile order
## 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
## 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 0
default 1
email '__ORDERS_TO__'
encrypt 0
errors_to '__ORDERS_TO__'
pgp_cc_key "__PGP_KEY__"
pgp_key "__PGP_KEY__"
report etc/report
receipt etc/receipt.html
supplant 1
master 1
individual_track orders
track logs/tracking.asc
EOF
Route main_b <<EOF
attach 0
credit_card 0
default 1
email '__ORDERS_TO__'
encrypt 0
errors_to '__ORDERS_TO__'
pgp_cc_key "__PGP_KEY__"
pgp_key "__PGP_KEY__"
report etc/report
receipt etc/receipt2.html
supplant 1
master 1
individual_track orders
track logs/tracking.asc
EOF
# Order routes can be maintained in a database
# CHANGES TO THIS WILL OVERRIDE THE ROUTES ABOVE.
RouteDatabase route
# 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__'
## 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
SalesTax county
TaxShipping __TAXSHIPPING__
SeparateItems Yes