Beanstream works as is in 1.5.0 - no additional changes are required.
Printable View
Beanstream works as is in 1.5.0 - no additional changes are required.
Still using 1.3.9h - installed both Beanstream mods - My question is..... Should there be a text field to input an Interact card number on the Payment Methods page? All mine shows is a Radio Button next to : INTERAC®
Have you tried choosing that INTERAC option, and then proceeding thru checkout, so that it takes you to the screen where you DO enter your debit card details?
Sorry....Interact does seem to working quite well in test mode. I'll let you know how the testing goes. In the mean time I am having trouble with the CC portion. First off - If I have PayPal Pro/Express Enabled they show as a 2nd set of entry fields for CC data.
Next - When I shut off PayPal the errors read like paypal transaction errors:
Amex: (312) Card type not accepted - Your credit card could not be authorized for this reason. Please correct the information and try again or contact us for further assistance
Visa: (7) DECLINE - Your credit card could not be authorized for this reason. Please correct the information and try again or contact us for further assistance.
My question to Beanstream was "are these attempts making it to my Beanstream merchant account?"
Grateful for any help!
hi, i just installed this module, but i found a problem at the check-out page. i wonder if this occurs to anyone else. Any response would be appreciated:
At the check-out, it does not have a credit card type option for customer to choose from, e.g. Master Card/Visa. please see the image:
Attachment 12431
I've checked the .php and the codes are there.
I saw earlier in the thread that Zen-cart did not support the Beanstream hosted payment form, as that post was a few years old I just wanted to inquire again: Is there any support for Beanstream hosted payment processing? My client does not want customer information being stored on a non-secure system.
There is not at this time - but there is very little information stored by Beanstream (CC for example is not stored). That's the whole point of a payment gateway.
There are further bugs in the code that should be updated.
Find:
Replace With:PHP Code:
$province_code_order = (in_array($order->billing['country']['iso_code_2'], array('CA', 'US')) ? zen_get_zone_code($order->billing['country']['id'], $order->billing['state'], '--') : '--');
Find:PHP Code:
$province_code_order = (in_array($order->billing['country']['iso_code_2'], array('CA', 'US')) ? zen_get_zone_code($order->billing['country']['id'], $order->billing['zone_id'], $order->billing['state']) : '--');
Replace With:PHP Code:
$province_code_ship = (in_array($order->delivery['country']['iso_code_2'], array('CA', 'US')) ? zen_get_zone_code($order->delivery['country']['id'], $order->delivery['state'], '--') : '--');
PHP Code:
$province_code_ship = (in_array($order->delivery['country']['iso_code_2'], array('CA', 'US')) ? zen_get_zone_code($order->delivery['country']['id'], $order->delivery['zone_id'], $order->delivery['state']) : '--');
I'm trying to set up the Beanstream payment module in Zen Cart 1.5.4, Apache 2.2.29, Curl 7.12.1, MySQL 5.5.42-37.1, PHP 5.4.43.
Everything seems to be functioning well until I hit the final Confirm button to submit the order for processing. I get an error 324 and the prompt: "Error (324) Order quantity for product '5' greater then quantity available - Your credit card could not be authorized for this reason. Please correct the information and try again or contact us for further assistance."
I have verified that there is sufficient quantity of the product in stock and that the inventory on the Beanstream account site is empty. Beanstream support is asking for the exact query string I'm using to generate the request. Where would I find that? It's not kept in the debug files (just the response from the Beanstream server, which I had already provided) nor in the MySQL db, even with "Enable Database Storage" enabled. Can anyone help?
So the Beanstream guys say they know about this issue and anticipate the fix being ready first week of September.
Since upgrading to PHP 5.6.30 I'm getting the following error:
[07-Apr-2017 08:37:56 America/Vancouver] Request URI: /admin/orders.php?origin=index&page=1&oID=1967&action=edit, IP address: 64.180.94.185
#1 beanstream->admin_notification() called at [/home/public_html/admin/orders.php:594]
[07-Apr-2017 08:37:56 America/Vancouver] PHP Warning: Creating default object from empty value in /home/public_html/includes/modules/payment/beanstream.php on line 404
Any ideas?
1. Those are WARNINGS, not ERRORS.
2. To change the code to be more compatible with newer versions of PHP, edit the /includes/modules/payment/beanstream.php file and add the new line shown here:
Code:function admin_notification($zf_order_id) { global $db;
$output = '';
$trnData = new stdClass;
$trnData->fields = array();
require(DIR_FS_CATALOG . DIR_WS_MODULES . 'payment/beanstream/beanstream_admin_notification.php');
return $output;
}
Yes, sorry, a warning not an error.
Thank you for the edit!
Wow, I set this up for a customer over 8 years ago and all is still running great with this module and the Interac module. Thank you all!
A requirement to ensure they were using TLS 1.2 at a minimum brought me back here. My password had to be changed upon login, it's been over 8000 days since it was last changed. lol
Anyways, thanks again for the solid software!
Good to hear - but if you are running 1.3.8a, you really need to update; it has many well known vulnerabilities.
With the latest mod, I'm gettingIn code checking, one checker says things are fine, the other says WAY too many opening and closing parentheses. Checked both in PHP 5.6 and 7.1. PHP version made no difference in the results.Code:PHP Parse error: syntax error, unexpected ')', expecting :: (T_PAAMAYIM_NEKUDOTAYIM) in /home/theirSite/public_html/155f/includes/modules/payment/beanstream.php on line 73
The code for the function including line 73 isWith line 73 beingCode:function __construct() { global $order, $messageStack;
$this->enabled = ((MODULE_PAYMENT_BEANSTREAM_STATUS == 'True') ? true : false); // Whether the module is installed or not
$this->currency_code = 'CAD';
$this->code = 'beanstream';
$this->login = MODULE_PAYMENT_BEANSTREAM_CAD_LOGIN;
$this->title = MODULE_PAYMENT_BEANSTREAM_TEXT_CATALOG_TITLE; // Payment module title in Catalog
if (IS_ADMIN_FLAG === true) {
// Payment module title in Admin
$this->title = MODULE_PAYMENT_BEANSTREAM_TEXT_ADMIN_TITLE;
if (MODULE_PAYMENT_BEANSTREAM_STATUS == 'True' && ($this->login == '000000000' || !defined('MODULE_PAYMENT_BEANSTREAM_API_PASSCODE') || empty(MODULE_PAYMENT_BEANSTREAM_API_PASSCODE))) {
$this->title .= '<span class="alert"> (Not Configured)</span>';
}
if ($this->enabled && !function_exists('curl_init')) $messageStack->add_session(MODULE_PAYMENT_BEANSTREAM_TEXT_ERROR_CURL_NOT_FOUND, 'error');
$new_version_details = plugin_version_check_for_updates(612, $this->moduleVersion);
if ($new_version_details !== false) {
$this->title .= '<span class="alert">' . ' - NOTE: A NEW VERSION OF THIS PLUGIN IS AVAILABLE. <a href="' . $new_version_details['link'] . '" target="_blank">[Details]</a>' . '</span>';
}
}
$this->description = '<strong>Bambora Payments Module ' . $this->moduleVersion . '</strong><br><br>' . MODULE_PAYMENT_BEANSTREAM_TEXT_DESCRIPTION;
$this->sort_order = MODULE_PAYMENT_BEANSTREAM_SORT_ORDER; // Sort Order of this payment option on the customer payment page
$this->form_action_url = zen_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL', false); // Page to go to upon submitting page info
$this->order_status = (int)DEFAULT_ORDERS_STATUS_ID;
if ((int)MODULE_PAYMENT_BEANSTREAM_ORDER_STATUS_ID > 0) {
$this->order_status = (int)MODULE_PAYMENT_BEANSTREAM_ORDER_STATUS_ID;
}
$this->_logDir = DIR_FS_LOGS;
if (is_object($order)) $this->update_status();
}
Along with the debug file, this is causing a partial white page on the Admin >> Modules >> Payment page as would be expected.Code:if (MODULE_PAYMENT_BEANSTREAM_STATUS == 'True' && ($this->login == '000000000' || !defined('MODULE_PAYMENT_BEANSTREAM_API_PASSCODE') || empty(MODULE_PAYMENT_BEANSTREAM_API_PASSCODE))) {
BTW, another checker says the error is line 76The only thing unusual about this setup is that it was a new install of 155f using a database from 1.5.4 version of ZC.Code:FATAL ERROR syntax error, unexpected 'is' (T_STRING) on line number 76
Ideas anyone?
Download a fresh copy of the mod - you have messed up the files somehow. PHP syntax checking works fine on the latest version of the mod.
$ for i in `find . -name \*.php`; do php -l $i; done
No syntax errors detected in ./includes/languages/english/modules/payment/beanstream.php
No syntax errors detected in ./includes/modules/payment/beanstream/beanstream_admin_notification.php
No syntax errors detected in ./includes/modules/payment/beanstream.php
PHP version 5.6.
Did you do this? (Note from the plugin's page)
NOTE: You will need to add your API Access Passcode to the module after installing, else transactions will fail.
Did several downloads, file verifications between downloads, and verifications between downloaded files and files on server.
There is no method provided for removal other than using remove from the Modules >> Payments menu. Of course, with a new install updating a previous database, there is no listing in the Payments menu. Thus, no way to drop the mod without going into the database and attempt to remove settings by hand. Apparently, some of them are not tagged with "beanstream" as I have removed all that I could find that were not part of an order or other extraneous listing (mentioned in one EzPage).
Installing the files with the current database (cleared as best as I can tell) it still results in a blank page as soon as it attempts to write the module to the menu. This appears to be the function that is generating the error.
If there is some database setting not containing beanstream that is causing this, I can't find it. Would be nice to have an uninstall sql file.:(
1. The T_PAAMAYIM_NEKUDOTAYIM key is PHP internal jargon for "double colon" (in Hebrew). It has to do with objects referring to static properties, and I'm guessing that the test with $this->login (which is an attempt for the object to read the login property) is throwing up because of some extra-strict mode enabled somehow in your PHP config (which I cannot recreate). Despite its being set on line 67.
If that's the issue, you could "fix" it by declaring the property earlier, by adding a line like this:
2. A very quick "uninstall" would be the following, extracted from the remove() function of the module:Code:var $reportable_submit_data = array();
protected $login = '000000000';
function __construct() {
Code:delete from configuration where configuration_key like 'MODULE\_PAYMENT\_BEANSTREAM\_%';
NOTE: Bambora is sending emails to all merchants who are not passing a CVD (CVV) value with their transactions, because starting October 1, 2018 all transactions missing a CVD will fail.
TWO THINGS TO CHECK:
1. Admin->Modules->Payment->Bambora/Beanstream->Edit ... is your "Require CVD Number?" set to True?
(NOTE: This setting may not exist if you've upgraded to the Bambora v1.60 module, since the setting must always be True.)
2. Are you using v1.60 of the Bambora/Beanstream payment module? If not, Upgrade here.
You need Bambora module v1.50 or newer for 2 reasons:
a) in August 2018 Bambora required switching to use API transactions, and this support was added in v1.50.
b) v1.50 of the module forces the CVD setting to True.
and v1.60 of the module removed the CVD setting since it assumes it to be always True per Bambora's new requirements.
Note: v1.60 has been posted, which applies the fix proposed for dbltoe earlier, plus a number of PHP 7.2 compatibility updates. It also forces the CVD and removed the CVD setting altogether.
I'm getting the error:
PHP Fatal error: Call to undefined method beanstream::get_error() in / /public_html/includes/modules/pages/checkout_payment/header_php.php on line 117
when I enter an invalid CC number.
Any idea how to fix this?
I added this block of code back in from the original Beansteam module in beanstream.php, and all seems to be working again.
Code:/**
* Used to display error message details
*
* @return array
*/
function get_error() {
$error = array('title' => MODULE_PAYMENT_BEANSTREAM_TEXT_ERROR,
'error' => stripslashes(urldecode($_GET['error'])));
return $error;
}
I'm interested in using this module, and am wondering if it qualifies for PCI SAQ A compliance.
The Bambora website has a section for Custom Checkout which is PCI SAQ A compliant - https://dev.na.bambora.com/docs/guides/custom_checkout/
But I think the Zen Cart module is not using this Custom Checkout, but rather the API integration. So it's not clear whether API integration is PCI SAQ A compliant.
Also - when talking to a Bambora rep, they did not know about a Zen Cart partnership (to qualify for lower rates) as mentioned in the Zen Cart docs.
Thanks robraymond. I was also getting the same error and this fixes it. From the users perspective, they get a blank page if they enter the credit card number incorrectly - e.g. not enough digits.
It would be best if error detection could be handled by the javascript and get a popup notification, as is the case if you don't enter the CVV
We have finally gotten them to implement Visa Debit for our bambora account. How does this work? When I set the Interact Mod to "True" it just shows a Radio Button on the site with no Card Field. Do I use the CC field Above? Do I need to upgrade the mod? How do I tell which version we are using? It doesn't show in the Mod.
Thanks!
ZC 157c PHP 7.3
I've been getting the following warning when accessing admin->customers->orders->order edit:
The following change fixes this:Code:Illegal string offset of "id" includes/modules/payment/beanstream.php line 110
Around line 106 change this:
to this:Code:if (!isset($order->billing['country'])) return;
Code:if (!isset($order->billing['country']['id'])) return;