Jump to content



Photo
- - - - -

Virtual Merchant - Elavon, ViaKlix, Nova Payment Module Support Forum


  • Please log in to reply
125 replies to this topic

#21   zelf

zelf
  • Members
  • 294 posts
  • Real Name:Nathan Zabaldo
  • Gender:Male
  • Location:Portland, OR

Posted 31 January 2009 - 17:32

When I go to the "Payment Information" page, there is a radio button selection where you can choose to use your credit card option or the check/money order option.

When selecting the check/money order option, the javascript validation for the your credit card option continues to validate and won't allow the user to "Continue".


To fix this behavior where you have multiple payment methods in /catalog/classes/payment.php replace the entire "function javascript_validation()" method around line 80 with the code below:

function javascript_validation() {
	  $js = '';
	  if (is_array($this->modules)) {
		$js = '<script language="javascript"><!-- ' . "\n" . // added by Zelf
			  'function returnObjById( id )' . "\n" .
			  '{' . "\n" .
			  '  if (document.getElementById)' . "\n" .
			  '	var returnVar = document.getElementById(id);' . "\n" .
			  '  else if (document.all)' . "\n" .
			  '   var returnVar = document.all[id];' . "\n" .
			  '  else if (document.layers)' . "\n" .
			  '   var returnVar = document.layers[id];' . "\n" .
			  '  return returnVar;' . "\n" .
			  '}' . "\n\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;
	}


#22   creativeone

creativeone
  • Members
  • 72 posts
  • Real Name:Cindy

Posted 20 February 2009 - 15:50

Hi Thanks for this wonderful module.

I have installed a couple of times to make sure I did everything correctly. When I try to test it (in production with my own cc) virtual merchant tells me the order is going through, however I am directed to a page with this

Fatal error: Call to a member function call_api() on a non-object in /home/rockhill/public_html/register/checkout_process.php on line 127

How can I fix this? That line has buysafe info which appears to be commented out. Any help would be greatly appreciated. Thanks

#23   zelf

zelf
  • Members
  • 294 posts
  • Real Name:Nathan Zabaldo
  • Gender:Male
  • Location:Portland, OR

Posted 20 February 2009 - 17:36

Fatal error: Call to a member function call_api() on a non-object in /home/rockhill/public_html/register/checkout_process.php on line 127
That line has buysafe info which appears to be commented out.

The error you mention here is not a method in the ChargeIt class. What contribution is calling the call_api() function? call_api appears to belong to an object that is not being instantiated. I would suggest looking at line 127 of your checkout_process.php and determine why this function call is giving you this error. Post your checkout_process.php if you would like me to take a look at it.

#24   creativeone

creativeone
  • Members
  • 72 posts
  • Real Name:Cindy

Posted 20 February 2009 - 17:45

The error you mention here is not a method in the ChargeIt class. What contribution is calling the call_api() function? call_api appears to belong to an object that is not being instantiated. I would suggest looking at line 127 of your checkout_process.php and determine why this function call is giving you this error. Post your checkout_process.php if you would like me to take a look at it.



Line 127 talks about the buysafe stuff. Here is my checkout_process.php Thanks so much


<?php
/*
$Id: checkout_process.php 1750 2007-12-21 05:20:28Z hpdl $

osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com

Copyright © 2007 osCommerce

Released under the GNU General Public License
*/

include('includes/application_top.php');

// if the customer is not logged on, redirect them to the login page
if (!tep_session_is_registered('customer_id')) {
$navigation->set_snapshot(array('mode' => 'SSL', 'page' => FILENAME_CHECKOUT_PAYMENT));
tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
}

// if there is nothing in the customers cart, redirect them to the shopping cart page
if ($cart->count_contents() < 1) {
tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));
}

// if no shipping method has been selected, redirect the customer to the shipping method selection page
if (!tep_session_is_registered('shipping') || !tep_session_is_registered('sendto')) {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
}

if ( (tep_not_null(MODULE_PAYMENT_INSTALLED)) && (!tep_session_is_registered('payment')) ) {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
}

// avoid hack attempts during the checkout procedure by checking the internal cartID
if (isset($cart->cartID) && tep_session_is_registered('cartID')) {
if ($cart->cartID != $cartID) {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
}
}

include(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_PROCESS);

// load selected payment module
require(DIR_WS_CLASSES . 'payment.php');
$payment_modules = new payment($payment);

// load the selected shipping module
require(DIR_WS_CLASSES . 'shipping.php');
$shipping_modules = new shipping($shipping);

require(DIR_WS_CLASSES . 'order.php');
$order = new order;

// Stock Check
$any_out_of_stock = false;
if (STOCK_CHECK == 'true') {
for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
if (tep_check_stock($order->products[$i]['id'], $order->products[$i]['qty'])) {
$any_out_of_stock = true;
}
}
// Out of Stock
if ( (STOCK_ALLOW_CHECKOUT != 'true') && ($any_out_of_stock == true) ) {
tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));
}
}

$payment_modules->update_status();

if ( ( is_array($payment_modules->modules) && (sizeof($payment_modules->modules) > 1) && !is_object($$payment) ) || (is_object($$payment) && ($$payment->enabled == false)) ) {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(ERROR_NO_PAYMENT_MODULE_SELECTED), 'SSL'));
}

require(DIR_WS_CLASSES . 'order_total.php');
$order_total_modules = new order_total;

$order_totals = $order_total_modules->process();

// load the before_process function from the payment modules
$payment_modules->before_process();

$sql_data_array = array('customers_id' => $customer_id,
'customers_name' => $order->customer['firstname'] . ' ' . $order->customer['lastname'],
'customers_company' => $order->customer['company'],
'customers_street_address' => $order->customer['street_address'],
'customers_suburb' => $order->customer['suburb'],
'customers_city' => $order->customer['city'],
'customers_postcode' => $order->customer['postcode'],
'customers_state' => $order->customer['state'],
'customers_country' => $order->customer['country']['title'],
'customers_telephone' => $order->customer['telephone'],
'customers_email_address' => $order->customer['email_address'],
'customers_address_format_id' => $order->customer['format_id'],
'delivery_name' => trim($order->delivery['firstname'] . ' ' . $order->delivery['lastname']),
'delivery_company' => $order->delivery['company'],
'delivery_street_address' => $order->delivery['street_address'],
'delivery_suburb' => $order->delivery['suburb'],
'delivery_city' => $order->delivery['city'],
'delivery_postcode' => $order->delivery['postcode'],
'delivery_state' => $order->delivery['state'],
'delivery_country' => $order->delivery['country']['title'],
'delivery_address_format_id' => $order->delivery['format_id'],
'billing_name' => $order->billing['firstname'] . ' ' . $order->billing['lastname'],
'billing_company' => $order->billing['company'],
'billing_street_address' => $order->billing['street_address'],
'billing_suburb' => $order->billing['suburb'],
'billing_city' => $order->billing['city'],
'billing_postcode' => $order->billing['postcode'],
'billing_state' => $order->billing['state'],
'billing_country' => $order->billing['country']['title'],
'billing_address_format_id' => $order->billing['format_id'],
'payment_method' => $order->info['payment_method'],
'cc_type' => $order->info['cc_type'],
'cc_owner' => $order->info['cc_owner'],
'cc_number' => $order->info['cc_number'],
'cc_expires' => $order->info['cc_expires'],
'date_purchased' => 'now()',
'orders_status' => $order->info['order_status'],
'currency' => $order->info['currency'],
'currency_value' => $order->info['currency_value']);
tep_db_perform(TABLE_ORDERS, $sql_data_array);
$insert_id = tep_db_insert_id();
// {{ buySAFE Module
$buysafe_cart_id = MODULE_BUYSAFE_BUYSAFE_CART_PREFIX . '-' . tep_session_id() . (tep_count_customer_orders()-1);
$checkout_params = array('WantsBond' => ($WantsBond ? $WantsBond : 'false'), 'orders_id' => $insert_id, 'buysafe_cart_id' => $buysafe_cart_id);
$checkout_result = $buysafe_module->call_api('SetShoppingCartCheckout', $checkout_params);
if (is_array($checkout_result) && $checkout_result['IsBuySafeEnabled'] == 'true')
{
$update_data_array = array('buysafe_cart_id' => $buysafe_cart_id,
'buysafe_client_ip' => tep_get_ip_address(),
'buysafe_session_id' => tep_session_id());
tep_db_perform(TABLE_ORDERS, $update_data_array, 'update', "orders_id = '" . (int)$insert_id . "'");
}
// }}
for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
$sql_data_array = array('orders_id' => $insert_id,
'title' => $order_totals[$i]['title'],
'text' => $order_totals[$i]['text'],
'value' => $order_totals[$i]['value'],
'class' => $order_totals[$i]['code'],
'sort_order' => $order_totals[$i]['sort_order']);
tep_db_perform(TABLE_ORDERS_TOTAL, $sql_data_array);
}

$customer_notification = (SEND_EMAILS == 'true') ? '1' : '0';
$sql_data_array = array('orders_id' => $insert_id,
'orders_status_id' => $order->info['order_status'],
'date_added' => 'now()',
'customer_notified' => $customer_notification,
'comments' => $order->info['comments']);
tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);

// initialized for the email confirmation
$products_ordered = '';
$subtotal = 0;
$total_tax = 0;

for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
// Stock Update - Joao Correia
if (STOCK_LIMITED == 'true') {
if (DOWNLOAD_ENABLED == 'true') {
$stock_query_raw = "SELECT products_quantity, pad.products_attributes_filename
FROM " . TABLE_PRODUCTS . " p
LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES . " pa
ON p.products_id=pa.products_id
LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
ON pa.products_attributes_id=pad.products_attributes_id
WHERE p.products_id = '" . tep_get_prid($order->products[$i]['id']) . "'";
// Will work with only one option for downloadable products
// otherwise, we have to build the query dynamically with a loop
$products_attributes = $order->products[$i]['attributes'];
if (is_array($products_attributes)) {
$stock_query_raw .= " AND pa.options_id = '" . $products_attributes[0]['option_id'] . "' AND pa.options_values_id = '" . $products_attributes[0]['value_id'] . "'";
}
$stock_query = tep_db_query($stock_query_raw);
} else {
$stock_query = tep_db_query("select products_quantity from " . TABLE_PRODUCTS . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
}
if (tep_db_num_rows($stock_query) > 0) {
$stock_values = tep_db_fetch_array($stock_query);
// do not decrement quantities if products_attributes_filename exists
if ((DOWNLOAD_ENABLED != 'true') || (!$stock_values['products_attributes_filename'])) {
$stock_left = $stock_values['products_quantity'] - $order->products[$i]['qty'];
} else {
$stock_left = $stock_values['products_quantity'];
}
tep_db_query("update " . TABLE_PRODUCTS . " set products_quantity = '" . $stock_left . "' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
if ( ($stock_left < 1) && (STOCK_ALLOW_CHECKOUT == 'false') ) {
tep_db_query("update " . TABLE_PRODUCTS . " set products_status = '0' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");
}
}
}

// Update products_ordered (for bestsellers list)
tep_db_query("update " . TABLE_PRODUCTS . " set products_ordered = products_ordered + " . sprintf('%d', $order->products[$i]['qty']) . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'");

$sql_data_array = array('orders_id' => $insert_id,
'products_id' => tep_get_prid($order->products[$i]['id']),
'products_model' => $order->products[$i]['model'],
'products_name' => $order->products[$i]['name'],
'products_price' => $order->products[$i]['price'],
'final_price' => $order->products[$i]['final_price'],
'products_tax' => $order->products[$i]['tax'],
'products_quantity' => $order->products[$i]['qty']);
tep_db_perform(TABLE_ORDERS_PRODUCTS, $sql_data_array);
$order_products_id = tep_db_insert_id();

//------insert customer choosen option to order--------
$attributes_exist = '0';
$products_ordered_attributes = '';
if (isset($order->products[$i]['attributes'])) {
$attributes_exist = '1';
for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) {
if (DOWNLOAD_ENABLED == 'true') {
$attributes_query = "select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix, pad.products_attributes_maxdays, pad.products_attributes_maxcount , pad.products_attributes_filename
from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa
left join " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
on pa.products_attributes_id=pad.products_attributes_id
where pa.products_id = '" . $order->products[$i]['id'] . "'
and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "'
and pa.options_id = popt.products_options_id
and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "'
and pa.options_values_id = poval.products_options_values_id
and popt.language_id = '" . $languages_id . "'
and poval.language_id = '" . $languages_id . "'";
$attributes = tep_db_query($attributes_query);
} else {
$attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . $order->products[$i]['id'] . "' and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'");
}
$attributes_values = tep_db_fetch_array($attributes);

$sql_data_array = array('orders_id' => $insert_id,
'orders_products_id' => $order_products_id,
'products_options' => $attributes_values['products_options_name'],
'products_options_values' => $attributes_values['products_options_values_name'],
'options_values_price' => $attributes_values['options_values_price'],
'price_prefix' => $attributes_values['price_prefix']);
tep_db_perform(TABLE_ORDERS_PRODUCTS_ATTRIBUTES, $sql_data_array);

if ((DOWNLOAD_ENABLED == 'true') && isset($attributes_values['products_attributes_filename']) && tep_not_null($attributes_values['products_attributes_filename'])) {
$sql_data_array = array('orders_id' => $insert_id,
'orders_products_id' => $order_products_id,
'orders_products_filename' => $attributes_values['products_attributes_filename'],
'download_maxdays' => $attributes_values['products_attributes_maxdays'],
'download_count' => $attributes_values['products_attributes_maxcount']);
tep_db_perform(TABLE_ORDERS_PRODUCTS_DOWNLOAD, $sql_data_array);
}
$products_ordered_attributes .= "\n\t" . $attributes_values['products_options_name'] . ' ' . $attributes_values['products_options_values_name'];
}
}
//------insert customer choosen option eof ----
$total_weight += ($order->products[$i]['qty'] * $order->products[$i]['weight']);
$total_tax += tep_calculate_tax($total_products_price, $products_tax) * $order->products[$i]['qty'];
$total_cost += $total_products_price;

$products_ordered .= $order->products[$i]['qty'] . ' x ' . $order->products[$i]['name'] . ' (' . $order->products[$i]['model'] . ') = ' . $currencies->display_price($order->products[$i]['final_price'], $order->products[$i]['tax'], $order->products[$i]['qty']) . $products_ordered_attributes . "\n";
}

// lets start with the email confirmation
$email_order = STORE_NAME . "\n" .
EMAIL_SEPARATOR . "\n" .
EMAIL_TEXT_ORDER_NUMBER . ' ' . $insert_id . "\n" .
EMAIL_TEXT_INVOICE_URL . ' ' . tep_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' . $insert_id, 'SSL', false) . "\n" .
EMAIL_TEXT_DATE_ORDERED . ' ' . strftime(DATE_FORMAT_LONG) . "\n\n";
if ($order->info['comments']) {
$email_order .= tep_db_output($order->info['comments']) . "\n\n";
}
$email_order .= EMAIL_TEXT_PRODUCTS . "\n" .
EMAIL_SEPARATOR . "\n" .
$products_ordered .
EMAIL_SEPARATOR . "\n";

for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
$email_order .= strip_tags($order_totals[$i]['title']) . ' ' . strip_tags($order_totals[$i]['text']) . "\n";
}

if ($order->content_type != 'virtual') {
$email_order .= "\n" . EMAIL_TEXT_DELIVERY_ADDRESS . "\n" .
EMAIL_SEPARATOR . "\n" .
tep_address_label($customer_id, $sendto, 0, '', "\n") . "\n";
}

$email_order .= "\n" . EMAIL_TEXT_BILLING_ADDRESS . "\n" .
EMAIL_SEPARATOR . "\n" .
tep_address_label($customer_id, $billto, 0, '', "\n") . "\n\n";
if (is_object($$payment)) {
$email_order .= EMAIL_TEXT_PAYMENT_METHOD . "\n" .
EMAIL_SEPARATOR . "\n";
$payment_class = $$payment;
$email_order .= $order->info['payment_method'] . "\n\n";
if ($payment_class->email_footer) {
$email_order .= $payment_class->email_footer . "\n\n";
}
}
tep_mail($order->customer['firstname'] . ' ' . $order->customer['lastname'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);

// send emails to other people
if (SEND_EXTRA_ORDER_EMAILS_TO != '') {
tep_mail('', SEND_EXTRA_ORDER_EMAILS_TO, EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
}

// load the after_process function from the payment modules
$payment_modules->after_process();

$cart->reset(true);

// unregister session variables used during checkout
tep_session_unregister('sendto');
tep_session_unregister('billto');
tep_session_unregister('shipping');
tep_session_unregister('payment');
tep_session_unregister('comments');
tep_session_unregister('payment_error_return');
// {{ buySAFE Module
tep_session_unregister('WantsBond');
// }}
tep_redirect(tep_href_link(FILENAME_CHECKOUT_SUCCESS, '', 'SSL'));

require(DIR_WS_INCLUDES . 'application_bottom.php');
?>

#25   zelf

zelf
  • Members
  • 294 posts
  • Real Name:Nathan Zabaldo
  • Gender:Male
  • Location:Portland, OR

Posted 20 February 2009 - 19:13

Line 127 talks about the buysafe stuff.

$checkout_result = $buysafe_module->call_api('SetShoppingCartCheckout', $checkout_params);

This line is expecting an object called $buysafe_module to have been instantiated. Where is the $buysafe_module object being created? For example to instantiate and access methods in the buysafe class, which I am not familiar with by the way, the class itself would need to be accessible by the checkout_process.php page through an include of the class at the top of the page or an include in some other class/include file checkout_process.php includes.

You may need to check with whomever created the buysafe contribution as to why it is not being instantiated.

#26   creativeone

creativeone
  • Members
  • 72 posts
  • Real Name:Cindy

Posted 20 February 2009 - 19:44

I guess buysafe isn't really good with any modules from what I am reading. Thanks so much for your help.

#27   creativeone

creativeone
  • Members
  • 72 posts
  • Real Name:Cindy

Posted 20 February 2009 - 22:18

Another problem. I installed a version of OSC without the buysafe and now when I try to buy a test product I get the error

Credit Card Error

The card entered is being declined. This most often is due to incorrectly entered information. Please try re-entering your information.
Name & Expiration Date Entered: cindy fajardo- Expiration Date Entered: 0609 (MMYY)

The Error email says
Error Message(s): 4003. HTTP Referrer Invalid. HTTP POST transactions are not allowed for this HTTP Referrer.
Address Verification Response:
CVV2 Verification Response:

I spoke with Virtual Merchant yesterday and they checked the HTTP Referrer for me and said that the Auto Settlement was already checked. I guess with my clients type of account I am not able to get into the details myself. ugh. Any ideas why it isn't working? Thanks

#28   zelf

zelf
  • Members
  • 294 posts
  • Real Name:Nathan Zabaldo
  • Gender:Male
  • Location:Portland, OR

Posted 20 February 2009 - 22:32

Error Message(s): 4003. HTTP Referrer Invalid. HTTP POST transactions are not allowed for this HTTP Referrer.

On page 1 of this forum you will see images for virtual merchant setup. Please refer to these setup instructions. The issue appears to be you have not properly configured Virtual Merchant for "HTTP POST transactions." Follow the instructions on page 1 of this forum and your problem should be fixed.

#29   creativeone

creativeone
  • Members
  • 72 posts
  • Real Name:Cindy

Posted 20 February 2009 - 22:55

I was on the phone with Virtual Merchant when I read your message. Jake at VM says that the orders/CCs are being approved. He checked and they are approved but for some reason OSC is assuming that they were rejected. He said that he has seen where there is one word that OSC is expecting that is different from what VM uses (ie., Approval instead of Approved) that could make OSC interpret the CC being rejected. Does that sound correct?

#30   zelf

zelf
  • Members
  • 294 posts
  • Real Name:Nathan Zabaldo
  • Gender:Male
  • Location:Portland, OR

Posted 20 February 2009 - 23:04

I was on the phone with Virtual Merchant when I read your message. Jake at VM says that the orders/CCs are being approved. He checked and they are approved but for some reason OSC is assuming that they were rejected. He said that he has seen where there is one word that OSC is expecting that is different from what VM uses (ie., Approval instead of Approved) that could make OSC interpret the CC being rejected. Does that sound correct?

No. My contribution is independent of oscommerce functions. Though the credit cards are getting through to VM somehow there is still a problem with your setup. Did you look at the first page and follow the instructions at this link: HTTP Post Instruction

#31   creativeone

creativeone
  • Members
  • 72 posts
  • Real Name:Cindy

Posted 20 February 2009 - 23:24

Yesterday they told me that we didn't have an Administrative area and today they told me I just don't have the correct username. So I am waiting on the client to give that to me. Hopefully making sure all these settings are correct will fix the problem. Thanks so much for your patience.

#32   zelf

zelf
  • Members
  • 294 posts
  • Real Name:Nathan Zabaldo
  • Gender:Male
  • Location:Portland, OR

Posted 21 February 2009 - 00:09

Hopefully making sure all these settings are correct will fix the problem.

It will not function without the VM interface being configured exactly as instructed in the setup instructions and also in the images on the first page of this forum. This includes the fields and their configurations e.g. required/not required in VM, VM admin setup for http post, etc. Every setup instruction needs to be followed to the letter. I didn't realize that VM had not been configured. That would explain it.

Good luck. Let me know if you have any more problems.

#33   zelf

zelf
  • Members
  • 294 posts
  • Real Name:Nathan Zabaldo
  • Gender:Male
  • Location:Portland, OR

Posted 22 February 2009 - 02:55

Regarding the test credit card and testing abilities. I have had a few people PM stating testing credit will not run. I am aware of this. The contrib is production ready, but I still need to complete the test credit card capabilities and will when I get a little more free time. However, this does not mean you can't run some tests in live mode. E.g. use a real credit card. Yes, this will send the card and order to Virtual Merchant for processing, but simply login to your Virtual Merchant account and void it. This way you will be able to see if everything is really working with a real live credit card and using void the card is never really charged.

FYI.

#34   pnoden

pnoden
  • Members
  • 3 posts
  • Real Name:Patrick

Posted 05 March 2009 - 05:41

I have installed this module for a client and when testing using production mode, credit card go through but debit cards will not. Any ideas why this could be happening?

Thanks

#35   zelf

zelf
  • Members
  • 294 posts
  • Real Name:Nathan Zabaldo
  • Gender:Male
  • Location:Portland, OR

Posted 07 March 2009 - 03:26

I have installed this module for a client and when testing using production mode, credit card go through but debit cards will not. Any ideas why this could be happening?

Thanks


What error are you getting? Debit cards should be treated just like a Visa credit card, unless you are really trying to put through a NON visa check card debit card.

#36   fishonafly

fishonafly
  • Members
  • 4 posts
  • Real Name:Kris Zinszer

Posted 11 March 2009 - 23:29

I appreciate your help with getting this working. I have been on the phone with VM for an hour trying to get my payment fields setup as you show them in your screen shot. The system will not allow me to add the ssl_cardhoilder_amount field. VM says that it is not allowed due to a conflict with the pre-existing ssl_amount field and claims that no accoutn should be able to use that. Any idea what you had to do to get the system to accept that field entry? Is it required? Can I modify the code to remove it since the ssl_amount field is being used to send the total?

Thanks for your help.

#37   zelf

zelf
  • Members
  • 294 posts
  • Real Name:Nathan Zabaldo
  • Gender:Male
  • Location:Portland, OR

Posted 12 March 2009 - 00:01

I appreciate your help with getting this working. I have been on the phone with VM for an hour trying to get my payment fields setup as you show them in your screen shot. The system will not allow me to add the ssl_cardhoilder_amount field. VM says that it is not allowed due to a conflict with the pre-existing ssl_amount field and claims that no accoutn should be able to use that. Any idea what you had to do to get the system to accept that field entry? Is it required? Can I modify the code to remove it since the ssl_amount field is being used to send the total?

Thanks for your help.

The cardholder amount field is a system field used for DCC payments I believe. You may have gotten a newbie at VM tech support. You need to ask for level 2 tech support if you are having problems. My script does not even submit to this field. It is just setup by default in your account. However, I have never heard of it causing conflicts. The amount credit cards are being charged is being passed in the ssl_amount field. I would suggest asking for level 2 tech support. What errors are you receiving?

#38   fishonafly

fishonafly
  • Members
  • 4 posts
  • Real Name:Kris Zinszer

Posted 12 March 2009 - 01:39

The cardholder amount field is a system field used for DCC payments I believe. You may have gotten a newbie at VM tech support. You need to ask for level 2 tech support if you are having problems. My script does not even submit to this field. It is just setup by default in your account. However, I have never heard of it causing conflicts. The amount credit cards are being charged is being passed in the ssl_amount field. I would suggest asking for level 2 tech support. What errors are you receiving?


That is the strange thing. I submitted a transaction to test and got no errors, however, it never went through. When I looked at the VM site, it shoed they had cancelled it and gave no reason. the phone support guy said he had no idea what happened. Then I came back to this forum and found your setup was different than mine so I tried to add the three missing fields hoping that would solve it, but it wont let me add them. So I am trying to submit a new one now and follow it through the VM control panel to see if i can figure out what the problem is. Maybe I need to turn on DCC conversion somewhere in there? Although since your script doesn't submit it, it wouldn't seem to matter?

#39   zelf

zelf
  • Members
  • 294 posts
  • Real Name:Nathan Zabaldo
  • Gender:Male
  • Location:Portland, OR

Posted 12 March 2009 - 15:06

When I looked at the VM site, it shoed they had cancelled it and gave no reason.

What do you mean "canceled"? Did the test transaction show up in the Error batch in your VM?

The phone support guy said he had no idea what happened.

Ask for level 2 tech support.

I tried to add the three missing fields hoping that would solve it, but it wont let me add them.

What fields are you missing?

Maybe I need to turn on DCC conversion somewhere in there?

DCC is optional. For testing just turn it off in the administration panel.

#40   fishonafly

fishonafly
  • Members
  • 4 posts
  • Real Name:Kris Zinszer

Posted 13 March 2009 - 01:40

What do you mean "canceled"? Did the test transaction show up in the Error batch in your VM?


Ask for level 2 tech support.


What fields are you missing?


DCC is optional. For testing just turn it off in the administration panel.



The three missing fields are Cardholder Amount, Cardholder Currency, and Conversion Rate

I will call back and ask for level 2 but in my testing last night I found something interesting. The canceled transaction in the VM control panel was an earlier test and not the one I submitted. I ran two new tests, with real cards in production mode last night, and neither one ever showed up in the VM control panel. When I go to checkout, it shows that I am clearly using the Charge It module (which is the only payment module enabled) and it gives me a receipt, shows success and drops the order into my OSCommerce order page showing it is Processing. But nothing ever gets to my VM control panel. So I don't see any errors, I don't receive any error emails, everything looks successful, but nothing happens???? Not sure what the heck is going on right now. I am going to uninstall the 1.2 Charge It contribution completely, reinstall it again, and see if I made a mistake the first time.