Joomla! 2.5.24
VirtueMart: 2.6.8 and 2.6.10
PHP: 5.4.30
Configured with authorize.net - vendor API login and key are correct
AIO tables updated, but not using any other plugins.
<NEW INFO>
Price for an item in the shop is 0.00, BUT - there is 9.95 shipping on the item.
Cart and shop work fine, except that when the customer puts in his/her info (name, address, etc), and right after agree to terms at the bottom, it goes right to checkout and WILL checkout without capturing credit card or any payment information. It acts as if shipping is zero - but shipping IS being added correctly showing a balance of 9.95 (in this example). But no credit card info is captured.
Help!
..AJ
Do you mean that the order is confirmed without ANY payment method attached to the order?
Also, do you have a valid SSL certificate installed and configured for your domain?
Yes and Yes, VM prompts for all the customer shipping info (name, address, etc) and shipping method, but it 'clicks through' and completes the order successfully without asking for a credit card number
I should also mention that we are allowing unregistered users to order products.
Yes, valid SSL.
thanks!
..AJ
what does VM debug show you - is it a valid payment method? is it published?
VM debug below from com_virtuemart.log.php:
<My Comment> This is a different issue, during the process of figuring out what is going on with orders I was putting in fake orders and the error below has to do with the fact that I can't delete orders. It would be nice to solve this too.
2014-08-26 20:39:23 ERROR vmError: port Products db error Table 'joom2.exw9y_vm_product' doesn't exist SQL=SELECT *,`p`.product_id as product_id FROM `exw9y_vm_product` AS `p`
LEFT JOIN `exw9y_vm_product_mf_xref` ON `exw9y_vm_product_mf_xref`.`product_id` = `p`.`product_id`
WHERE (`p`.product_id) IS NOT NULL
GROUP BY `p`.product_id ORDER BY `p`.product_parent_id LIMIT 0,1000
2014-08-26 20:39:23 ERROR vmError: port Products db error SELECT *,`p`.product_id as product_id FROM `#__vm_product` AS `p`
LEFT JOIN `#__vm_product_mf_xref` ON `#__vm_product_mf_xref`.`product_id` = `p`.`product_id`
WHERE (`p`.product_id) IS NOT NULL
GROUP BY `p`.product_id ORDER BY `p`.product_parent_id LIMIT 0,1000
2014-08-26 20:39:23 ERROR vmError: port Orders db error Table 'joom2.exw9y_vm_orders' doesn't exist SQL=SELECT `o`.*, `op`.*, `o`.`order_number` as `vm1_order_number`, `o2`.`order_number` as `nr2`,`o`.order_id FROM `exw9y_vm_orders` as `o`
LEFT OUTER JOIN `exw9y_vm_order_payment` as `op` ON `op`.`order_id` = `o`.`order_id`
LEFT JOIN `exw9y_virtuemart_orders` as `o2` ON `o2`.`order_number` = `o`.`order_number`
WHERE (o2.order_number) IS NULL ORDER BY o.order_id LIMIT 0,1000
2014-08-26 20:39:23 ERROR vmError: port Orders db error SELECT `o`.*, `op`.*, `o`.`order_number` as `vm1_order_number`, `o2`.`order_number` as `nr2`,`o`.order_id FROM `#__vm_orders` as `o`
LEFT OUTER JOIN `#__vm_order_payment` as `op` ON `op`.`order_id` = `o`.`order_id`
LEFT JOIN `#__virtuemart_orders` as `o2` ON `o2`.`order_number` = `o`.`order_number`
WHERE (o2.order_number) IS NULL ORDER BY o.order_id LIMIT 0,1000
2014-08-26 20:40:29 ERROR vmError: VirtueMartModelOrders::remove 35
2014-08-26 20:45:22 ERROR vmError: VirtueMartModelOrders::remove 35
2014-08-27 15:26:11 ERROR vmError: VirtueMartModelOrders::remove 37
Is it a valid payment method? What do you mean by "Valid". The payment method is defined as a credit card via VM-Authorize.net as below:
Payment Name Payment Description Vendor Shopper Group Payment Method List Order Published Id
Credit Card Credit card payment profile 1 authorizenet 1 Published 3
Is it published? Yes.
valid-> fits the country, shopper group etc
debug - I meant the on screen VM debug during checkout so you can see what VM thinks of your payment method
In addition to GJC's question - assuming that you use the built-in VirtueMart authorize.net payment plugin and not a third party authorize.net solution, you may compare your settings with this one (just to make shure you didn't miss something): http://www.webhostinghub.com/help/learn/virtuemart/payment-options/authorize-configure
Ok, here's what I've got - i really couldn't take it to the part where you confirm the order and could not proceed, as in debug mode, I could not enter in a state/region??
<Debug items .... After Item Added to Cart>_______________________________________________________
vmdebug Joomla Language tag: en-GB Virtuemart is using for db en_gb
vmdebug vmTime: loadConfig db no: 0.00498580932617188
vmdebug Start used Ram 6.25M
vmdebug No admin
vmdebug No $storeadmin
vmdebug No $superVendor
vmdebug shipmentmethod USPS - US, 1 Item = TRUE for variable weight = 5.0000 Reason: is lower than the set 5
vmdebug shipmentmethod USPS - US, 1 Item = TRUE for variable zip = 0 Reason: is lower than the set 99999
vmdebug shipmentmethod USPS - US, 1 Item = FALSE for variable virtuemart_country_id = 0, Reason: Country 223 does not fit
vmdebug checkConditions USPS - US, 1 Item does not fit Var1:
1
Var2:
1
vmdebug shipmentmethod USPS - US, 2 Item = FALSE for variable weight = 5.0000 Reason: is NOT within Range of the condition from 5.1 to 21
vmdebug shipmentmethod USPS - US, 2 Item = TRUE for variable zip = 0 Reason: is lower than the set 99999
vmdebug shipmentmethod USPS - US, 2 Item = FALSE for variable virtuemart_country_id = 0, Reason: Country 223 does not fit
vmdebug checkConditions USPS - US, 2 Item does not fit Var1:
1
Var2:
1
vmdebug shipmentmethod USPS - UK = TRUE for variable weight = 5.0000 Reason: is lower than the set 5
vmdebug shipmentmethod USPS - UK = TRUE for variable zip = 0 Reason: is lower than the set 99999
vmdebug shipmentmethod USPS - UK = FALSE for variable virtuemart_country_id = 0, Reason: Country 222 does not fit
vmdebug checkConditions USPS - UK does not fit Var1:
1
Var2:
1
vmdebug shipmentmethod USPS - Austrailia, 1 Item = TRUE for variable weight = 5.0000 Reason: is lower than the set 5
vmdebug shipmentmethod USPS - Austrailia, 1 Item = TRUE for variable zip = 0 Reason: is lower than the set 99999
vmdebug shipmentmethod USPS - Austrailia, 1 Item = FALSE for variable virtuemart_country_id = 0, Reason: Country 13 does not fit
vmdebug checkConditions USPS - Austrailia, 1 Item does not fit Var1:
1
Var2:
1
vmdebug shipmentmethod USPS - Canada, 1 Item = TRUE for variable weight = 5.0000 Reason: is lower than the set 5
vmdebug shipmentmethod USPS - Canada, 1 Item = TRUE for variable zip = 0 Reason: is lower than the set 99999
vmdebug shipmentmethod USPS - Canada, 1 Item = FALSE for variable virtuemart_country_id = 0, Reason: Country 38 does not fit
vmdebug checkConditions USPS - Canada, 1 Item does not fit Var1:
1
Var2:
1
vmdebug shipmentmethod USPS - Canada, 2 Item = FALSE for variable weight = 5.0000 Reason: is NOT within Range of the condition from 5.1 to 21
vmdebug shipmentmethod USPS - Canada, 2 Item = TRUE for variable zip = 0 Reason: no boundary conditions set
vmdebug shipmentmethod USPS - Canada, 2 Item = FALSE for variable virtuemart_country_id = 0, Reason: Country 38 does not fit
vmdebug checkConditions USPS - Canada, 2 Item does not fit Var1:
1
Var2:
1
vmdebug shipmentmethod USPS - Austrailia, 2 Item = FALSE for variable weight = 5.0000 Reason: is NOT within Range of the condition from 5.1 to 21
vmdebug shipmentmethod USPS - Austrailia, 2 Item = TRUE for variable zip = 0 Reason: no boundary conditions set
vmdebug shipmentmethod USPS - Austrailia, 2 Item = FALSE for variable virtuemart_country_id = 0, Reason: Country 13 does not fit
vmdebug checkConditions USPS - Austrailia, 2 Item does not fit Var1:
1
Var2:
1
vmdebug End used Ram 20.25M
vmdebug Peak memory peak 20.25M
Strict Standards: Declaration of VirtueMartControllerProductdetails::display() should be compatible with JController::display($cachable = false, $urlparams = false) in /home6/xxx/public_html/biz2/components/com_virtuemart/controllers/productdetails.php on line 31
Strict Standards: Declaration of JParameter::loadSetupFile() should be compatible with JRegistry::loadSetupFile() in /home6/xxx/public_html/biz2/libraries/joomla/html/parameter.php on line 512
Strict Standards: Declaration of VirtueMartModelMedia::store() should be compatible with VmModel::store(&$data) in /home6/xxx/public_html/biz2/administrator/components/com_virtuemart/models/media.php on line 439
Strict Standards: Declaration of plgVMPaymentPayzen::emptyCart() should be compatible with vmPSPlugin::emptyCart($session_id = NULL, $order_number = NULL) in /home6/xxx/public_html/biz2/plugins/vmpayment/payzen/payzen.php on line 833
Strict Standards: Declaration of plgVMPaymentSystempay::emptyCart() should be compatible with vmPSPlugin::emptyCart($session_id = NULL, $order_number = NULL) in /home6/xxx/public_html/biz2/plugins/vmpayment/systempay/systempay.php on line 833
Strict Standards: Declaration of TableUserfields::check() should be compatible with VmTable::check() in /home6/xxx/public_html/biz2/administrator/components/com_virtuemart/tables/userfields.php on line 172
Strict Standards: Declaration of TableUserfields::checkAndDelete() should be compatible with VmTable::checkAndDelete($table, $whereField = 0, $andWhere = '') in /home6/xxx/public_html/biz2/administrator/components/com_virtuemart/tables/userfields.php on line 172
Ok, turned debug off to enter in the State/Region, and then debug back on to get the rest of the debug stuff ... See below
<Proceed to Checkout>_____________________________________________________________________________
vmdebug Joomla Language tag: en-GB Virtuemart is using for db en_gb
vmdebug vmTime: loadConfig db no: 0.00632500648498535
vmdebug Start used Ram 6.5M
vmdebug shipmentmethod USPS - US, 1 Item = TRUE for variable weight = 5 Reason: is lower than the set 5
vmdebug shipmentmethod USPS - US, 1 Item = TRUE for variable zip = 80126 Reason: is lower than the set 99999
vmdebug shipmentmethod USPS - US, 1 Item = TRUE for variable virtuemart_country_id = 223, Reason: Countries in rule 223 or none set
Checkout done, please confirm the order
vmdebug Joomla Language tag: en-GB Virtuemart is using for db en_gb
vmdebug vmTime: loadConfig db no: 0.00487899780273438
vmdebug Joomla Language tag: en-GB Virtuemart is using for db en_gb
vmdebug vmTime: loadConfig db no: 0.0052039623260498
vmdebug Start used Ram 6.25M
vmdebug shipmentmethod USPS - US, 1 Item = TRUE for variable weight = 5 Reason: is lower than the set 5
vmdebug shipmentmethod USPS - US, 1 Item = TRUE for variable zip = 80126 Reason: is lower than the set 99999
vmdebug shipmentmethod USPS - US, 1 Item = TRUE for variable virtuemart_country_id = 223, Reason: Countries in rule 223 or none set
vmdebug shipmentmethod USPS - US, 1 Item = TRUE for variable weight = 5 Reason: is lower than the set 5
vmdebug shipmentmethod USPS - US, 1 Item = TRUE for variable zip = 80126 Reason: is lower than the set 99999
vmdebug shipmentmethod USPS - US, 1 Item = TRUE for variable virtuemart_country_id = 223, Reason: Countries in rule 223 or none set
vmdebug shipmentmethod USPS - US, 2 Item = FALSE for variable weight = 5 Reason: is NOT within Range of the condition from 5.1 to 21
vmdebug shipmentmethod USPS - US, 2 Item = TRUE for variable zip = 80126 Reason: is lower than the set 99999
vmdebug shipmentmethod USPS - US, 2 Item = TRUE for variable virtuemart_country_id = 223, Reason: Countries in rule 223 or none set
vmdebug checkConditions USPS - US, 2 Item does not fit Var1:
1
Var2:
1
vmdebug shipmentmethod USPS - UK = TRUE for variable weight = 5 Reason: is lower than the set 5
vmdebug shipmentmethod USPS - UK = TRUE for variable zip = 80126 Reason: is lower than the set 99999
vmdebug shipmentmethod USPS - UK = FALSE for variable virtuemart_country_id = 223, Reason: Country 222 does not fit
vmdebug checkConditions USPS - UK does not fit Var1:
1
Var2:
1
vmdebug shipmentmethod USPS - Austrailia, 1 Item = TRUE for variable weight = 5 Reason: is lower than the set 5
vmdebug shipmentmethod USPS - Austrailia, 1 Item = TRUE for variable zip = 80126 Reason: is lower than the set 99999
vmdebug shipmentmethod USPS - Austrailia, 1 Item = FALSE for variable virtuemart_country_id = 223, Reason: Country 13 does not fit
vmdebug checkConditions USPS - Austrailia, 1 Item does not fit Var1:
1
Var2:
1
vmdebug shipmentmethod USPS - Canada, 1 Item = TRUE for variable weight = 5 Reason: is lower than the set 5
vmdebug shipmentmethod USPS - Canada, 1 Item = TRUE for variable zip = 80126 Reason: is lower than the set 99999
vmdebug shipmentmethod USPS - Canada, 1 Item = FALSE for variable virtuemart_country_id = 223, Reason: Country 38 does not fit
vmdebug checkConditions USPS - Canada, 1 Item does not fit Var1:
1
Var2:
1
vmdebug shipmentmethod USPS - Canada, 2 Item = FALSE for variable weight = 5 Reason: is NOT within Range of the condition from 5.1 to 21
vmdebug shipmentmethod USPS - Canada, 2 Item = TRUE for variable zip = 80126 Reason: no boundary conditions set
vmdebug shipmentmethod USPS - Canada, 2 Item = FALSE for variable virtuemart_country_id = 223, Reason: Country 38 does not fit
vmdebug checkConditions USPS - Canada, 2 Item does not fit Var1:
1
Var2:
1
vmdebug shipmentmethod USPS - Austrailia, 2 Item = FALSE for variable weight = 5 Reason: is NOT within Range of the condition from 5.1 to 21
vmdebug shipmentmethod USPS - Austrailia, 2 Item = TRUE for variable zip = 80126 Reason: no boundary conditions set
vmdebug shipmentmethod USPS - Austrailia, 2 Item = FALSE for variable virtuemart_country_id = 223, Reason: Country 13 does not fit
vmdebug checkConditions USPS - Austrailia, 2 Item does not fit Var1:
1
Var2:
1
vmdebug checkout_task Var1:
confirm
vmdebug vmTime: Cart view Finished task : 0.993951082229614
vmdebug End used Ram 22.25M
vmdebug Peak memory peak 22.5M
Strict Standards: Declaration of JParameter::loadSetupFile() should be compatible with JRegistry::loadSetupFile() in /home6/xxxx/public_html/biz2/libraries/joomla/html/parameter.php on line 512
Strict Standards: Declaration of TableUserfields::check() should be compatible with VmTable::check() in /home6/xxxx/public_html/biz2/administrator/components/com_virtuemart/tables/userfields.php on line 172
Strict Standards: Declaration of TableUserfields::checkAndDelete() should be compatible with VmTable::checkAndDelete($table, $whereField = 0, $andWhere = '') in /home6/xxxx/public_html/biz2/administrator/components/com_virtuemart/tables/userfields.php on line 172
Strict Standards: Declaration of plgVMPaymentPayzen::emptyCart() should be compatible with vmPSPlugin::emptyCart($session_id = NULL, $order_number = NULL) in /home6/xxxx/public_html/biz2/plugins/vmpayment/payzen/payzen.php on line 833
Strict Standards: Declaration of plgVMPaymentSystempay::emptyCart() should be compatible with vmPSPlugin::emptyCart($session_id = NULL, $order_number = NULL) in /home6/xxxx/public_html/biz2/plugins/vmpayment/systempay/systempay.php on line 833
Strict Standards: Declaration of VirtueMartModelMedia::store() should be compatible with VmModel::store(&$data) in /home6/xxxx/public_html/biz2/administrator/components/com_virtuemart/models/media.php on line 439
Cart
Checkout Step 4
<Confirm Order>___________________________________________________________________________
vmdebug Joomla Language tag: en-GB Virtuemart is using for db en_gb
vmdebug vmTime: loadConfig db no: 0.00488090515136719
vmdebug Start used Ram 6.5M
vmdebug confirm my post, get and so on Var1:
Array
(
[billto] => 0
[quantity] => Array
(
[10] => 1
)
[virtuemart_shipmentmethod_id] => 1
[customer_comment] =>
[tosAccepted] => 1
[order_language] => en-GB
[STsameAsBT] => 1
[task] => confirm
[option] => com_virtuemart
[view] => cart
)
Var2:
Array
(
[Itemid] => 481
[limitstart] => 0
[limit] => int
)
vmdebug shipmentmethod USPS - US, 1 Item = TRUE for variable weight = 5 Reason: is lower than the set 5
vmdebug shipmentmethod USPS - US, 1 Item = TRUE for variable zip = 80126 Reason: is lower than the set 99999
vmdebug shipmentmethod USPS - US, 1 Item = TRUE for variable virtuemart_country_id = 223, Reason: Countries in rule 223 or none set
vmdebug getMyOrderDetails Var1:
0
Var2:
0
vmdebug Attention, #__virtuemart_shipment_plg_weight_countries has not any entry for order_id = 38
vmdebug End used Ram 28.5M
vmdebug Peak memory peak 28.5M
Strict Standards: Declaration of JParameter::loadSetupFile() should be compatible with JRegistry::loadSetupFile() in /home6/xxxx/public_html/biz2/libraries/joomla/html/parameter.php on line 512
Strict Standards: Declaration of TableUserfields::check() should be compatible with VmTable::check() in /home6/xxxx/public_html/biz2/administrator/components/com_virtuemart/tables/userfields.php on line 172
Strict Standards: Declaration of TableUserfields::checkAndDelete() should be compatible with VmTable::checkAndDelete($table, $whereField = 0, $andWhere = '') in /home6/xxxx/public_html/biz2/administrator/components/com_virtuemart/tables/userfields.php on line 172
Strict Standards: Declaration of plgVMPaymentPayzen::emptyCart() should be compatible with vmPSPlugin::emptyCart($session_id = NULL, $order_number = NULL) in /home6/xxxx/public_html/biz2/plugins/vmpayment/payzen/payzen.php on line 833
Strict Standards: Declaration of plgVMPaymentSystempay::emptyCart() should be compatible with vmPSPlugin::emptyCart($session_id = NULL, $order_number = NULL) in /home6/xxxx/public_html/biz2/plugins/vmpayment/systempay/systempay.php on line 833
Thank you for your order!
Hello , can anyone chime in here?
New information. The credit card is not showing up in situations where the item is 'free', but there is a charge for shipping. In the shop, when you configure an item for 0.00, virtuemart is not accounting for the fact that there could be other charges. The way this shop is set is is by weight/item. There is a shipping charge that depends in the number of items (and this is accomplished by assigning weights to the items in the shop). Shipping categories are setup according the the net weight. If there is a better way to do this please let me know.
..AJ
AFAIK the product price should be above zero to trigger payment, so set the price of those products to 0.001
Yes, I tried that - it does not trigger payment. Just a question, should the payment be triggered based on a total price, including shipping?
..AJ
it is checked by this function
$amount = $this->getCartAmount($cart_prices);
function getCartAmount($cart_prices){
if(empty($cart_prices['salesPrice'])) $cart_prices['salesPrice'] = 0.0;
$cartPrice = !empty($cart_prices['withTax'])? $cart_prices['withTax']:$cart_prices['salesPrice'];
if(empty($cart_prices['salesPriceShipment'])) $cart_prices['salesPriceShipment'] = 0.0;
if(empty($cart_prices['salesPriceCoupon'])) $cart_prices['salesPriceCoupon'] = 0.0;
$amount= $cartPrice + $cart_prices['salesPriceShipment'] + $cart_prices['salesPriceCoupon'] ;
if ($amount <= 0) $amount=0;
return $amount;
}
so in your case your $cart_prices['salesPriceShipment'] should be returned - then
$amount_cond = ($amount >= $method->min_amount AND $amount <= $method->max_amount
OR
($method->min_amount <= $amount AND ($method->max_amount == 0)));
if (!$amount_cond) {
return FALSE;
}
so in theory the condition should be true - but you need to echo out these values in the plugin to check
I have debug turned on, but I'm not seeing those values.
..AJ
You have to go in to the code and write your own debug... if u want to check these values
Is there another way? Really don't want to modify/add any code. Also, I'm getting some other oddities happening
1. For example: With debug "ON", I can't input the state (eg. GA, CO, CA...) when you enter in the 'ship to' information. Right now, I have to turn debug off so that I can enter in 'fake' order information and then turn debug back on.
2. For my incompleted fake orders, I was able to click through - get the order in the system without credit card info OR client information. For those orders, I cannot delete them out of the order log. For those orders, I see a COM_VIRTUEMART_UNKNOWN_ORDER_STATUS. Furthermore, when I try to enter legit information and update the order manually I get vmError: The workflow for or P is unknown, take a look on model/orders function handleStockAfterStatusChanged.
Any ideas what is going on here?
how else will you debug it?
your not modifying - just echo out some vars to see what ACTUALLY is happening - if you won't then ... pffffff
Ok, I'll check but where is the function getcartamount? I looked through com_virtuemart/controllers and modules/mod_virtuemart_cart
it is called in the plugin - authorizenet.php
the func is in the vm admin plugins vmpsplug.php
Ok, here's what I've got for:
$amount = $this->getCartAmount($cart_prices);
Both $amount and $cartprices are valid, in my case they are 9.95. What i would expect for a 'free' item with shipping of 9.95
I put in the following:
<CODE>
$amount_cond = ($amount >= $method->min_amount AND $amount <= $method->max_amount);
if (!$amount_cond) {
echo 'DEBUG '. 'FALSE';
}
I get 'FALSE' for this.
there's your problem - has to be true
find out why
$amount_cond = ('9.95' >= $method->min_amount AND '9.95' <= $method->max_amount);
is false
what are your min & max
scope for min_amount and max_amount? If not defined globally, they are zero.
they aren't set globally - they are just the plugin parameters - but they work for everyone else - why don't they work for you
if $method->max_amount is 0 then it will be false
try 0 & 1000000000000000000000000
or just replace it with
if($amount > 0) {
$amount_cond = true;
}else{
$amount_cond = false;
}
amount_cod is TRUE.
Updated to VM 2.6.10 - no change
Another couple of funny things:
1) when I go to "Order Status", these orders do not show shipping for the free items - it is as if the shipping is not getting propagated everywhere it needs to be.
2) After the order is confirmed, the cart is not emptied.
..AJ
Any comments or opinions on where to go next on this/these issues?
..AJ
Hello?? Any ideas?