Okay, here are the three shipping modules that I use:
flat550.php
flat650.php
flat1950.php
These are all setup in my cart correctly and located in the same exact folders as the flat.php which comes with ZenCart..
Printable View
Okay, here are the three shipping modules that I use:
flat550.php
flat650.php
flat1950.php
These are all setup in my cart correctly and located in the same exact folders as the flat.php which comes with ZenCart..
Hi ropu,
As you requested here is my config:
In my shipping module I have only Zone Rates enabled with 3 zones
In payment module -> GoogleCheckout I have:
.htaccess Basic Authentication Mode: false
MultiSocket Shipping Quotes Retrieval: true
Default Values for Real Time Shipping Rates: Zone Rates: default 2.95
Do you need any more info?
Below is the code as I changed it.. Im getting a line 151 error when I try and bring it up in the Admin/modules/payment screen..
<?php
/*
Copyright (C) 2006 Google Inc.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
/* GOOGLE CHECKOUT
* Class provided in modules dir to add googlecheckout as a payment option
* Member variables refer to currently set paramter values from the database
*/
class googlecheckout extends base {
var $code, $title, $description, $merchantid, $merchantkey, $mode,
$enabled, $shipping_support, $variant;
var $schema_url, $base_url, $checkout_url, $checkout_diagnose_url,
$request_url, $request_diagnose_url;
var $table_name = "google_checkout", $table_order = "google_orders";
// class constructor
function googlecheckout() {
global $order;
require_once(DIR_FS_CATALOG.'includes/languages/'. $_SESSION['language'] .
'/modules/payment/googlecheckout.php');
$this->code = 'googlecheckout';
$this->title = MODULE_PAYMENT_GOOGLECHECKOUT_TEXT_TITLE;
$this->description = MODULE_PAYMENT_GOOGLECHECKOUT_TEXT_DESCRIPTION;
$this->sort_order = MODULE_PAYMENT_GOOGLECHECKOUT_SORT_ORDER;
$this->mode= MODULE_PAYMENT_GOOGLECHECKOUT_STATUS;
$this->merchantid = MODULE_PAYMENT_GOOGLECHECKOUT_MERCHANTID;
$this->merchantkey = MODULE_PAYMENT_GOOGLECHECKOUT_MERCHANTKEY;
$this->mode = MODULE_PAYMENT_GOOGLECHECKOUT_MODE;
$this->enabled = ((MODULE_PAYMENT_GOOGLECHECKOUT_STATUS == 'True') ? true : false);
$this->shipping_support = array("flat", "item", "table", "First Class", "Priority", "Express Overnight");
$this->shipping_display = array(GOOGLECHECKOUT_FLAT_RATE_SHIPPING, GOOGLECHECKOUT_ITEM_RATE_SHIPPING, GOOGLECHECKOUT_TABLE_RATE_SHIPPING, GOOGLECHECKOUT_FIRST_CLASS_SHIPPING, GOOGLECHECKOUT_PRIORITY_SHIPPING,GOOGLECHECKOUT_EXPRESS_OVERNIGHT_SHIPPING);
$this->ship_flat_ui = "Standard flat-rate shipping";
$this->schema_url = "http://checkout.google.com/schema/2";
$this->base_url = $this->mode."cws/v2/Merchant/" . $this->merchantid;
$this->checkout_url = $this->base_url . "/checkout";
$this->checkout_diagnose_url = $this->base_url . "/checkout/diagnose";
$this->request_url = $this->base_url . "/request";
$this->request_diagnose_url = $this->base_url . "/request/diagnose";
$this->variant = 'text';
if ((int)MODULE_PAYMENT_GOOGLECHECKOUT_ORDER_STATUS_ID > 0) {
$this->order_status = MODULE_PAYMENT_GOOGLECHECKOUT_ORDER_STATUS_ID;
}
}
//Function used from Google sample code to sign the cart contents with the merchant key
function CalcHmacSha1($data) {
$key = $this->merchantkey;
$blocksize = 64;
$hashfunc = 'sha1';
if (strlen($key) > $blocksize) {
$key = pack('H*', $hashfunc($key));
}
$key = str_pad($key, $blocksize, chr(0x00));
$ipad = str_repeat(chr(0x36), $blocksize);
$opad = str_repeat(chr(0x5c), $blocksize);
$hmac = pack(
'H*', $hashfunc(
($key^$opad).pack(
'H*', $hashfunc(
($key^$ipad).$data
)
)
)
);
return $hmac;
}
//Decides the shipping name to be used
// May not call this if the same name is to be used
// Useful if some one wants to map to Google checkout shoppign types(flat, pickup or merchant calculate)
function getShippingType($shipping_option) {
switch($shipping_option) {
case GOOGLECHECKOUT_FLAT_RATE_SHIPPING: return $this->ship_flat_ui."- Flat Rate";
case GOOGLECHECKOUT_ITEM_RATE_SHIPPING: return $this->ship_flat_ui."- Item Rate";
case GOOGLECHECKOUT_TABLE_RATE_SHIPPING: return $this->ship_flat_ui."- Table Rate";
case GOOGLECHECKOUT_FIRST_CLASS_SHIPPING: return $this->ship_flat_ui."- First Class";
case GOOGLECHECKOUT_PRIORITY_SHIPPING: return $this->ship_flat_ui."- Priority";
case GOOGLECHECKOUT_EXPRESS_OVERNIGHT_SHIPPING: return $this->ship_flat_ui."- Express Overnight";
default: return "";
}
}
// Function used to compute the actual price for shipping depending upon the shipping type
// selected
function getShippingPrice($ship_option, $cart, $actual_price, $handling=0, $table_mode="") {
switch($ship_option) {
case GOOGLECHECKOUT_FLAT_RATE_SHIPPING: {
return $actual_price;
}
case GOOGLECHECKOUT_ITEM_RATE_SHIPPING: {
return ($actual_price * $cart->count_contents()) + $handling ;
}
case GOOGLECHECKOUT_TABLE_RATE_SHIPPING: {
}
case GOOGLECHECKOUT_FIRST_CLASS_SHIPPING: {
return $actual_price;
}
case GOOGLECHECKOUT_PRIORITY_SHIPPING: {
return $actual_price;
}
case GOOGLECHECKOUT_EXPRESS_OVERNIGHT_SHIPPING: {
return $actual_price;
}
//Check the mode to be used for pricing the shipping
if($table_mode == "price")
$table_size = $cart->show_total();
else if ($table_mode == "weight")
$table_size = $cart->show_weight();
// Parse the price (value1:price1,value2:price2)
$tok = strtok($actual_price, ",");
$tab_data = array();
while($tok != FALSE) {
$tab_data[] = $tok;
$tok = strtok(",");
}
$initial_val=0;
foreach($tab_data as $curr) {
$final_val = strtok($curr, ":");
$pricing = strtok(":");
if($table_size >= $initial_val && $table_size <= $final_val) {
$price = $pricing + $handling;
break;
}
$initial_val = $final_val;
}
return $price;
}
default: return 0;
}
}
// class methods
function update_status() {
}
function javascript_validation() {
return false;
}
function selection() {
return array('id' => $this->code,'module' => $this->title);
}
function pre_confirmation_check() {
return false;
}
function confirmation() {
return false;
}
function process_button() {
}
function before_process() {
return false;
}
function after_process() {
return false;
}
function output_error() {
return false;
}
function check() {
global $db;
if (!isset($this->_check)) {
$check_query = $db->Execute("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_GOOGLECHECKOUT_STATUS'");
$this->_check = $check_query->RecordCount();
}
return $this->_check;
}
function install() {
global $db;
$language = $_SESSION['language'];
require_once(DIR_FS_CATALOG.'includes/languages/'. $language . '/modules/payment/googlecheckout.php');
$shipping_list .= "array(";
foreach($this->shipping_display as $ship) {
$shipping_list .= "\'".$ship."\',";
}
$shipping_list = substr($shipping_list,0,strlen($shipping_list)-1);
$shipping_list .= ")";
$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable GoogleCheckout Module', 'MODULE_PAYMENT_GOOGLECHECKOUT_STATUS', 'True', 'Accepts payments through Google Checkout on your site', '6', '3', 'zen_cfg_select_option(array(\'True\', \'False\'), ', now())");
$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Merchant ID', 'MODULE_PAYMENT_GOOGLECHECKOUT_MERCHANTID', '', 'Your merchant ID is listed on the \"Integration\" page under the \"Settings\" tab', '6', '1', now())");
$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Merchant Key', 'MODULE_PAYMENT_GOOGLECHECKOUT_MERCHANTKEY', '', 'Your merchant key is also listed on the \"Integration\" page under the \"Settings\" tab', '6', '2', now())");
$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Select Mode of Operation', 'MODULE_PAYMENT_GOOGLECHECKOUT_MODE', 'https://sandbox.google.com/', 'Select either the Developer\'s Sandbox or live Production environment', '6', '3', 'zen_cfg_select_option(array(\'https://sandbox.google.com/\', \'https://checkout.google.com/\'),',now())");
$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Select shipping options.', 'MODULE_PAYMENT_GOOGLECHECKOUT_SHIPPING', '', 'Select your shipping option(s), and make sure to configure them under the Shipping Modules section', '6', '0',\"zen_cfg_select_multioption($shipping_list, \",now())");
$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_GOOGLECHECKOUT_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");
$db->Execute("create table if not exists " . $this->table_name . " (customers_id int(11), buyer_id bigint(20) )");
$db->Execute("create table if not exists " . $this->table_order ." (orders_id int(11), google_order_number bigint(20), order_amount decimal(15,4) )");
}
// If it is requried to delete these tables on removing the module, the two lines below
// could be uncommented
function remove() {
global $db;
$db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
//$db->Execute("drop table " . $this->table_name);
//$db->Execute("drop table " . $this->table_order);
}
function keys() {
return array('MODULE_PAYMENT_GOOGLECHECKOUT_STATUS', 'MODULE_PAYMENT_GOOGLECHECKOUT_MERCHANTID', 'MODULE_PAYMENT_GOOGLECHECKOUT_MERCHANTKEY', 'MODULE_PAYMENT_GOOGLECHECKOUT_MODE','MODULE_PAYMENT_GOOGLECHECKOUT_SHIPPING','M ODULE_PAYMENT_GOOGLECHECKOUT_SORT_ORDER');
}
}
// ** END GOOGLE CHECKOUT **
?>
Ropu
I did a new install over the weekend. I changed the database and directory. I got the same error when I followed the instructions in the installation readme. I decided to use winmerge to compare the files in my template directory to the existing system files for ZC, i.e., the tpl_checkout_payment_default.php, tpl_shopping_cart_default.php and tpl_login_default.php. When I was done, I got the google checkout button to appear without any errors, but now the paypal express checkout button disappeared. I guess it has to do with these files more than anything else. Can you give some guidance here? Would you like me to post the code for these files?
Thanks
Blum
At this time I am only accepting google payments. But... when someone goes to checkout they are faced with two checkout buttons how do I hide or get rid of the extra checkout button that goes no where.
Thanks,
Angel
add to line 50
andPHP Code:
$this->shipping_support = array(..., "flat550","flat650","flat1950");
have a too to the "..."PHP Code:
$this->mc_shipping_methods = array(
...
'flat550' => array(
'domestic_types' =>
array(
'flat550' => 'Flat 550'
),
'international_types' =>
array(
),
),
'flat560' => array(
'domestic_types' =>
array(
'flat560' => 'Flat 560'
),
'international_types' =>
array(
),
),
'flat1950' => array(
'domestic_types' =>
array(
'flat1950' => 'Flat 1950'
),
'international_types' =>
array(
),
)
);
$this->mc_shipping_methods_names = array(
...
'flat550' => 'Flat 550',
'flat650' => 'Flat 550',
'flat1950' => 'Flat 550'
);
this means that you should append the code im sending to the one already there!
any doubt, ask me !
ropu
blum, im pretty sure that Paypal overrides GC mods to those templates.
yuo should merge PP and GC templates... i can help you if you want.
PM me with more details. when fixed, we'll post the solution here. Lets avoid posting to much code here that can confuse merchants.
ropu
Angel, you should do two things.
First disable the default checkout button,.
in default installation includes/templates/YOUR_TEMPLATE/templates/tpl_shopping_cart_default.php
line 132
Then in the login page you should also add a redirect to index.php?main_page=shopping_cart this will avoid buyer to enter regular checkout through there.
im pretty sure thats all you need to do.
you can also remove from googlecheckout/gcheckout.php line 521 this code
so - Or use - string is not shownHTML Code:<td align="right" valign="middle" class = "main">
<B><?php echo MODULE_PAYMENT_GOOGLECHECKOUT_TEXT_OPTION ?> </B>
</td>
ropu