• Content count

  • Joined

  • Last visited

Community Reputation

0 Neutral

1 Follower

About dkinzer

Profile Information

  • Real Name
    Don Kinzer
  • Location
    Portland, OR USA

Contact Methods

  1. Has anyone here used this payment module? I've been wanting to switch to Stripe Payments in order to avoid the recurring PCI scan issues (fix something, next scan it's something else). I found the Blue Toucan module and decided to buy it to check it out - it's $40. It installed very easily on my heavily modified osC installation although there was a minor hitch in the table creation that was easy to fix. So far, I've only run test charges (which went perfectly) and I want to look at the code more carefully before I go live. I'd appreciate any insights that others might have.
  2. I changed the code for handling short first names like "J. Robert Fox". The existing code generated "J. Robert" for the first name and "Robert Fox" for the last name. Around line 158: $arr = explode(" ", $order->delivery['name'], 2); $myFirstName = $arr[0]; $myLastName = $arr[1]; $myFirstName = ucfirst(strtolower($myFirstName)); if (strlen($myFirstName) < 3 ){ // short first name, see if last name has multiple parts $arr = explode(" ", $myLastName, 2); if (strlen($arr[1])) { $myFirstName .= ' ' . $arr[0]; $myLastName = $arr[1]; } } Even this code, however, isn't going to work well with a name like "J. Roberts Jr." but I'm not going to fuss with it any more right now.
  3. For rare cases, you'll also need to make this change, too: // change this $myFirstName = substr($order->customer['name'], 0, strrpos( $order->customer['name'], ' ') ); // to this $myFirstName = substr($order->delivery['name'], 0, strrpos( $order->delivery['name'], ' ') );
  4. This is a caution for U.S.-based stores shipping to Canada. When your package arrives at Canadian customs by FedEx Ground, they assess an "entry fee" that is based on customs value. FedEx will bill you for this fee but it isn't included in the rate that they quote when your customer checks out. In my case, the shipping fee was about $20 which was paid by the customer and FedEx later billed me another $23 for the entry fee. According to the FedEx folks, this entry fee only applies to Ground service (perhaps it's already included in other classes of service). I talked to the FexEx folks and they seemed not to care much about this issue so don't expect it to be fixed any time soon. The best solution, I think, is to simply eliminate Ground as one of the choices for international shipments. An alternate solution is to create a separate list of services for Canada (e.g. $this->canada_types) and modify the code to use it when the destination is Canada.
  5. There is no code involved. This operation is done at the VirtualMerchant site after you log in as a client.
  6. I think not. Does your checkout_process.php have the lines that I showed which clearly provide data for the cardholder information columns of the database? I haven't looked in detail at any of the CC payment modules other than this one and the viaKlix module but I have read that the generic CC payment module does store cardholder information and I thought that I read that the module does as well. In any event, if you have no data in the cardholder information columns of the orders database then you're in good shape. I was shocked to find the data there in my orders database and took steps to remove it and prevent it from happening in the future.
  7. A note of caution is in order for anyone converting from the viaKlix contribution to this one. The viaKlix contribution does not store the cardholder information in the osC orders database but this VirtualMerchant contribution does. Storing the cardholder information will make it very difficult (perhaps impossible) to get PCI compliance certification. I haven't looked carefully at the source for the two contributions to discover how the viaKlix contribution is avoiding storing the information. I suspect, however, that it is not putting the information in POST variables. It could be that the VirtualMerchant contribution won't work without the cardholder information being placed in POST variables. I didn't try to fix the problem that way. Rather, I modified checkout_process.php so that it no longer places the cardholder information in the array used to create the new record in the orders database. Unfortunately, I can't easily describe how to make such a change because my osC is heavily modified. That said, you can load up checkout_process.php and look for this code sequence: '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); Once you find that, change it so that it looks like this: // 'cc_type' => $order->info['cc_type'], // 'cc_owner' => $order->info['cc_owner'], // 'cc_number' => $order->info['cc_number'], // 'cc_expires' => $order->info['cc_expires'], 'cc_type' => '', 'cc_owner' => '', 'cc_number' => '', '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); As you can see, this "fixes" the problem by storing empty strings instead of the cardholder information. You could modify the code so that it avoids storing only the cc number. I chose to remove all cardholder information because I plan to eventually delete those columns from my database. I would highly recommend that zelf modify this contribution to make the storing of cardholder information optional or just avoid it altogether.
  8. Nothing. As the letter noted, the $75 fee for conversion to VirtualMerchant is waived until the end of May 2010.
  9. Thanks for producing this module. I had been using the viaKlix module and I recently received a letter from Elavon indicating that they will will be discontinuing viaKlix in June. After calling Elavon to activate a VirtualMerchant account for me, I installed this VirtualMerchant module on a test site to confirm that it works as advertised. After a couple of minor details were adjusted, it seems to be working properly. Since this is fresh in my mind, I thought I'd point out a couple of issues and/or suggestions for improvement. - After you get the files in place and go to the admin control panel to activate the Virtual Merchant module, the title for the module is shown as "Credit Card: (MODULE_PAYMENT_CHARGEIT_CC_ACCEPTED)". I recognized the all-caps identifier as one that should have been defined so I thought that I had made an error when putting the files in place. After some searching about, I realized that the reason that MODULE_PAYMENT_CHARGEIT_CC_ACCEPTED was undefined was because the module hadn't yet been installed. It may be useful to modify the code slightly so that the entry in the module list does not include the undefined identifier prior to the module being installed. - I saw the list of fields on the first page of this support thread so I went to my VirtualMerchant login and verified that all of the entries were present. On my first test charge (using the production server) I got an error code back. Since I had set up the email for transaction errors, I shortly received an email indicating that ssl_salestax was required but not present in the post. I had overlooked the fact that status for ssl_salestax is 'required' by default but is listed as not required in the field list. It might be a good idea to include the field list in the installation instructions and to point out that one should confirm that the required/not required status is set as indicated. - I did not enable DCC so I didn't bother to try to add the fields ssl_cardholder_amount, ssl_cardholder_currency and ssl_conversion_rate. Consequently, I didn't have the problem that others have had as noted in other posts in this thread. It is probably worthwhile to add a note to the installation instructions to the effect that those fields aren't needed if DCC isn't enabled. - I would also be worthwhile noting in the installation instructions that the "Order ID" field must be manually added. Unless Elavon changes the defaults and the standard fields, the only changes that need to be made are to add the "Order ID" field and to change the status of the "Sales Tax" field from required to not required.
  10. I'd be interested in hearing from anyone that switched from using the viaKlix contribution ( to this contribution. Firstly, why did you switch and were there any issues?
  11. I modified mine to allow it to be configured with either Direct Payment or Express Checkout or both. The changes aren't too difficult. A new configuration element was added to control the presence of Direct Payment. The modified selection() function is: function selection() { global $order; $selection = ''; if ((MODULE_PAYMENT_PAYPAL_SHOW_DP_ON_PAYMENT_PAGE == 'Yes') || (MODULE_PAYMENT_PAYPAL_DP_BUTTON_PAYMENT_PAGE == 'Yes')) { // create the selection array $selection = array('id' => $this->code, 'module' => MODULE_PAYMENT_PAYPAL_DP_TEXT_TITLE, 'fields' => array()); } if (MODULE_PAYMENT_PAYPAL_SHOW_DP_ON_PAYMENT_PAGE == 'Yes') { for ($i=1; $i < 13; $i++) { $expires_month[] = array('id' => sprintf('%02d', $i), 'text' => strftime('%B',mktime(0,0,0,$i,1,2000))); } $today = getdate(); for ($i=$today['year']; $i < $today['year']+10; $i++) { $expires_year[] = array('id' => strftime('%y',mktime(0,0,0,1,1,$i)), 'text' => strftime('%Y',mktime(0,0,0,1,1,$i))); } $selection['fields'][] = array('title' => MODULE_PAYMENT_PAYPAL_DP_TEXT_CREDIT_CARD_FIRSTNAME, 'field' => tep_draw_input_field('paypalwpp_cc_firstname', $order->billing['firstname'])); $selection['fields'][] = array('title' => MODULE_PAYMENT_PAYPAL_DP_TEXT_CREDIT_CARD_LASTNAME, 'field' => tep_draw_input_field('paypalwpp_cc_lastname', $order->billing['lastname'])); $selection['fields'][] = array('title' => MODULE_PAYMENT_PAYPAL_DP_TEXT_CREDIT_CARD_TYPE, 'field' => tep_draw_pull_down_menu('paypalwpp_cc_type', array(array('id' => 'Visa', 'text' => 'Visa'), array('id' => 'MasterCard', 'text' => 'MasterCard'), array('id' => 'Discover', 'text' => 'Discover'), array('id' => 'Amex', 'text' => 'American Express')))); $selection['fields'][] = array('title' => MODULE_PAYMENT_PAYPAL_DP_TEXT_CREDIT_CARD_NUMBER, 'field' => tep_draw_input_field('paypalwpp_cc_number', '')); $selection['fields'][] = array('title' => MODULE_PAYMENT_PAYPAL_DP_TEXT_CREDIT_CARD_EXPIRES, 'field' => tep_draw_pull_down_menu('paypalwpp_cc_expires_month', $expires_month) . '?' . tep_draw_pull_down_menu('paypalwpp_cc_expires_year', $expires_year)); $selection['fields'][] = array('title' => MODULE_PAYMENT_PAYPAL_DP_TEXT_CREDIT_CARD_CHECKNUMBER, 'field' => tep_draw_input_field('paypalwpp_cc_checkcode', '', 'size="4" maxlength="4"') . '?<small>' . MODULE_PAYMENT_PAYPAL_DP_TEXT_CREDIT_CARD_CHECKNUMBER_LOCATION . '</small>'); } if (MODULE_PAYMENT_PAYPAL_DP_BUTTON_PAYMENT_PAGE == 'Yes') { $selection['fields'][] = array('title' => '<b>' . MODULE_PAYMENT_PAYPAL_DP_TEXT_EC_HEADER . '</b>', 'field' => '<a href="' . tep_href_link('ec_process.php', '', 'SSL') . '"><img src="" border=0 style="padding-right:10px;padding-bottom:10px"></a><br><span style="font-size:11px; font-family: Arial, Verdana;">' . MODULE_PAYMENT_PAYPAL_DP_TEXT_BUTTON_TEXT . '</span></td>'); } return $selection; } Next, add this line somewhere in the install() function: tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Direct Payment: On Payment Page', 'MODULE_PAYMENT_PAYPAL_SHOW_DP_ON_PAYMENT_PAGE', 'No', 'Do you want to display the PayPal Direct Payment Option on the payment page?', '6', '5', 'tep_cfg_select_option(array(\'Yes\', \'No\'), ', now())"); Lastly, add this key to elements returned by the keys() function: 'MODULE_PAYMENT_PAYPAL_SHOW_DP_ON_PAYMENT_PAGE', You'll need to uninstall the module before you make these changes or add the new configuration key to the configuration table manually.