function Usecase()
{
    $merchant_id = "";
    // Your Merchant ID
    $merchant_key = "";
    // Your Merchant Key
    $server_type = "sandbox";
    $currency = "USD";
    $cart = new GoogleCart($merchant_id, $merchant_key, $server_type, $currency);
    $total_count = 1;
    $certificate_path = "";
    // set your SSL CA cert path
    //  Check this URL for more info about the two types of digital Delivery
    //  http://code.google.com/apis/checkout/developer/Google_Checkout_Digital_Delivery.html
    //  Key/URL delivery
    $item_1 = new GoogleItem("Download Digital Item1", "With S/N", $total_count, 10.99);
    // Unit price
    $item_1->SetURLDigitalContent('http://example.com/download.php?id=15', 'S/N: 123.123123-3213', "Download Item1");
    $cart->AddItem($item_1);
    //  Email delivery
    $item_2 = new GoogleItem("Email Digital Item2", "An email will be sent by the merchant", $total_count, 9.19);
    // Unit price
    $item_2->SetEmailDigitalDelivery('true');
    $cart->AddItem($item_2);
    // Add tax rules
    $tax_rule = new GoogleDefaultTaxRule(0.05);
    $tax_rule->SetStateAreas(array("MA", "FL", "CA"));
    $cart->AddDefaultTaxRules($tax_rule);
    // Specify <edit-cart-url>
    $cart->SetEditCartUrl("https://www.example.com/cart/");
    // Specify "Return to xyz" link
    $cart->SetContinueShoppingUrl("https://www.example.com/goods/");
    // Request buyer's phone number
    $cart->SetRequestBuyerPhone(true);
    // Add analytics data to the cart if its setted
    if (isset($_POST['analyticsdata']) && !empty($_POST['analyticsdata'])) {
        $cart->SetAnalyticsData($_POST['analyticsdata']);
    }
    // This will do a server-2-server cart post and send an HTTP 302 redirect status
    // This is the best way to do it if implementing digital delivery
    // More info http://code.google.com/apis/checkout/developer/index.html#alternate_technique
    list($status, $error) = $cart->CheckoutServer2Server('', $certificate_path);
    // if i reach this point, something was wrong
    echo "An error had ocurred: <br />HTTP Status: " . $status . ":";
    echo "<br />Error message:<br />";
    echo $error;
    //
}
 /**
  * Build the representation of the shopping cart using the google checkout objects
  *
  * @return void
  **/
 private function BuildCart()
 {
     if ($this->cart === null) {
         include_once dirname(__FILE__) . '/library/googlecart.php';
         include_once dirname(__FILE__) . '/library/googleitem.php';
         $id = $this->GetValue('merchantid');
         $key = $this->GetValue('merchanttoken');
         $currency = $this->GetDefaultCurrencyCode();
         $this->cart = new GoogleCart($id, $key, $this->_server_type, $currency);
         $this->cart->SetMerchantPrivateData($_COOKIE['SHOP_SESSION_TOKEN']);
         $this->cart->SetEditCartUrl($GLOBALS['ShopPathSSL'] . '/cart.php');
         $this->cart->SetContinueShoppingUrl($GLOBALS['ShopPath']);
         $this->cart->SetRequestBuyerPhone('true');
         // Add tax rules
         $this->AddTaxInformationToCart();
         // Add the analytics tracking to the cart
         $this->AddAnalyticsToCart();
         // Merchant calculations are only available for US based stores
         if ($this->GetDefaultCurrencyCode() == 'USD') {
             $this->cart->SetMerchantCalculations($this->xmlUrl, "true", "true", "true");
         } else {
             $this->cart->SetMerchantCalculations($this->xmlUrl, "false", "false", "false");
         }
         $coupon_discount = 0;
         $items_total = 0;
         $GLOBALS['ISC_CLASS_CART'] = GetClass('ISC_CART');
         $items = $GLOBALS['ISC_CLASS_CART']->api->GetProductsInCart();
         /*
         $cprint = print_r($items, true);     
         $q      = "INSERT INTO isc_orderlogs (`ordervalue`) VALUES ('$cprint')";
         $r      = $GLOBALS["ISC_CLASS_DB"]->Query($q);
         */
         foreach ($items as $item) {
             $item_price = $item['product_price'];
             if (GetConfig('TaxTypeSelected') == 2) {
                 // The product price is already 100% + tax rate, so we need to get it back to what
                 // it was before tax was applied
                 $item_price = $item_price / (100 + GetConfig('DefaultTaxRate')) * 100;
             }
             if (isset($item['discount_price'])) {
                 $coupon_discount += ($item['product_price'] - $item['discount_price']) * $item['quantity'];
                 //* $item['quantity'] Added by Simha to calculate discount for all quantity of the products
             }
             $items_total += $item_price * $item['quantity'];
             // Gift certificates won't have a weight set
             if (!isset($item['data']['prodweight'])) {
                 $item['data']['prodweight'] = 0;
             }
             // Build a description using the product variation data
             $description = "";
             if (isset($item['options']) && !empty($item['options'])) {
                 foreach ($item['options'] as $name => $value) {
                     if ($description != "") {
                         $description .= ", ";
                     }
                     $description .= $name . ": " . $value;
                 }
             }
             $google_item = new GoogleItem($item['product_name'], $description, $item['quantity'], $item_price, $item['data']['prodweight']);
             if ($item['data']['prodtype'] == PT_DIGITAL || $item['data']['prodtype'] == PT_GIFTCERTIFICATE) {
                 $google_item->SetEmailDigitalDelivery(true);
             }
             $this->cart->AddItem($google_item);
             /* To add complementary product to Google checkout -- Baskaran*/
             if ($item['compitem'] == 1) {
                 for ($y = 0; $y < count($item['complementary']); $y++) {
                     if ($item['product_id'] == $item['complementary'][$y]['comp_mainproductid']) {
                         $compprodname = $item['complementary'][$y]['comp_product_name'];
                         $compprodprice = $item['complementary'][$y]['comp_original_price'];
                         $compqty = $item['complementary'][$y]['quantity'];
                         $description = "Complementary Product";
                         $weight = 1;
                         $complementary_google_item = new GoogleItem($compprodname, $description, $compqty, $compprodprice, $weight);
                         if ($item['data']['prodtype'] == PT_DIGITAL || $item['data']['prodtype'] == PT_GIFTCERTIFICATE) {
                             $complementary_google_item->SetEmailDigitalDelivery(true);
                         }
                         $this->cart->AddItem($complementary_google_item);
                     }
                 }
             }
             /* Code Ends */
             // does this item have gift wrapping?
             if (isset($item['wrapping'])) {
                 $wrapping = $item['wrapping'];
                 $wrap_price = $wrapping['wrapprice'];
                 if (GetConfig('TaxTypeSelected') == 2) {
                     // The product price is already 100% + tax rate, so we need to get it back to what
                     // it was before tax was applied
                     $wrap_price = $wrap_price / (100 + GetConfig('DefaultTaxRate')) * 100;
                 }
                 $google_item = new GoogleItem("Gift Wrapping: " . $wrapping['wrapname'], $wrapping['wrapmessage'], $item['quantity'], $wrap_price);
                 $this->cart->AddItem($google_item);
             }
         }
         if (isset($_SESSION['CART']['GIFTCERTIFICATES']) && is_array($_SESSION['CART']['GIFTCERTIFICATES'])) {
             foreach ($_SESSION['CART']['GIFTCERTIFICATES'] as $giftcert) {
                 $giftcertname = GetLang('GiftCertificate') . ' (' . $giftcert['giftcertcode'] . ')';
                 $google_item = new GoogleItem($giftcertname, '', 1, min($giftcert['giftcertbalance'], $items_total) * -1);
                 $google_item->SetEmailDigitalDelivery(true);
                 $this->cart->AddItem($google_item);
             }
         }
         if ($coupon_discount > 0) {
             $google_item = new GoogleItem(GetLang('GoogleCheckoutDiscountFromCoupons'), '', 1, $coupon_discount * -1);
             $google_item->SetEmailDigitalDelivery(true);
             $this->cart->AddItem($google_item);
         }
         $GLOBALS['ISC_CLASS_CHECKOUT'] = GetClass('ISC_CHECKOUT');
         $orderSummary = $GLOBALS['ISC_CLASS_CHECKOUT']->CalculateOrderSummary();
         // Add shipping information
         if ($orderSummary['digitalOrder'] == 0) {
             $this->AddShippingInformationToCart();
         } else {
             $this->AddDigitalShippingInformationToCart();
         }
         $this->DebugLog($this->cart->GetXML());
     }
 }
function showCart()
{
    session_start();
    $user = $_SESSION['userid'];
    $cart = $_SESSION[$user . 'cart'];
    //No payment Checkout
    //----------------------------------
    $genericCart = new GenericCart();
    //----------------------------------
    //Google Checkout
    //----------------------------------
    $config_file = "checkout/google_checkout/google.conf";
    $comment = "#";
    $fp = fopen($config_file, "r");
    while (!feof($fp)) {
        $line = trim(fgets($fp));
        if ($line && !ereg("^{$comment}", $line)) {
            list($option, $value) = split("=", $line, 2);
            $config_values[$option] = $value;
        }
    }
    fclose($fp);
    $merchant_id = $config_values['CONFIG_MERCHANT_ID'];
    $merchant_key = $config_values['CONFIG_MERCHANT_KEY'];
    $server_type = $config_values['CONFIG_SERVER_TYPE'];
    $currency = $config_values['CONFIG_CURRENCY'];
    $editCartURL = $config_values['CONFIG_EDIT_URL'];
    $continueShoppingURL = $config_values['CONFIG_CONTINUE_URL'];
    $googlecart = new GoogleCart($merchant_id, $merchant_key, $server_type, $currency);
    $googlecart->SetEditCartUrl($editCartURL);
    $googlecart->SetContinueShoppingUrl($continueShoppingURL);
    //----------------------------------
    if ($cart) {
        $items = explode(',', $cart);
        $contents = array();
        foreach ($items as $item) {
            $contents[$item] = isset($contents[$item]) ? $contents[$item] + 1 : 1;
        }
        $formattedShopCartItems = array();
        $result = array();
        foreach ($contents as $i => $qty) {
            $type = substr($i, 0, 1);
            $id = substr($i, 2);
            $item = refactored_db_getItem($id);
            $subtotal = $item['price'] * $qty;
            $scitem = array($item['name'], $item['description'], $item['price'], $qty, $i, $subtotal, $item['id'], $type);
            array_push($formattedShopCartItems, $scitem);
            //No payment Checkout
            //----------------------------------
            if (!$item['billable']) {
                $genericItem = new GenericItem($item['name'], $item['description'], $qty, 0);
                // Unit price
                $genericCart->AddItem($genericItem);
            }
            //----------------------------------
            //Google Checkout
            //----------------------------------
            if ($item['billable']) {
                $googleitem = new GoogleItem($item['name'], $item['description'], $qty, $item['price']);
                // Unit price
                $googleitem->SetMerchantItemId($item['id']);
                //TODO:Change email to order email
                $googleitem->SetEmailDigitalDelivery("*****@*****.**");
                $googlecart->AddItem($googleitem);
            }
            //----------------------------------
        }
    }
    //Checkout Buttons
    $output[] = '<div id="checkoutButtonsContainer">';
    $buttonsCount = 0;
    if (count($genericCart->item_arr)) {
        $buttonsCount++;
        $output[] = $genericCart->CheckoutButtonCode();
    }
    if (count($googlecart->item_arr)) {
        $buttonsCount++;
        $output[] = $googlecart->CheckoutButtonCode("SMALL");
        $output[] = "<div class='ui-state-error' style='padding: 0pt 0.7em; float:left; width:30em;'><p><span class='ui-icon ui-icon-alert' style='float: left; margin-right: 0.3em;'></span>Please when you process the order with Google Checkout, <strong>DO NOT</strong> choose the option 'Keep my e-mail address confidential' because your order will be lost.</p></div>";
    }
    $output[] = '</div>';
    $shoppingCart = $formattedShopCartItems;
    $checkoutButtons = join('', $output);
    $response = array("shoppingCart" => json_encode($formattedShopCartItems), "checkoutButtons" => $checkoutButtons, "buttonsCount" => $buttonsCount);
    $_SESSION[$user . 'cart'] = $cart;
    return $response;
}
Exemple #4
0
            $tax_array[] = $tax_class_id;
            $tax_name_array[] = $tt;
        }
        $ot_value = $order_total['value'] * (strrpos($order_total['text'], '-') === false ? 1 : -1);
        //($order_total['text']{0}=='-'?-1:1);
        $Gitem = new GoogleItem($order_total['title'], '', '1', $currencies->get_value(DEFAULT_CURRENCY) * $ot_value, 'LB', 0);
        $Gitem->SetMerchantPrivateItemData(new MerchantPrivateItemData(array('order_total' => base64_encode(serialize($order_total)))));
        //print_r($order_total);
        if (!empty($tt)) {
            $Gitem->SetTaxTableSelector($tt);
        }
        // TaxTable with 0% Rate
        //    $Gitem->SetTaxTableSelector('_OT_cero_tax');
        //  This is a hack to avoid showing shipping when cart is virtual and an OT is added
        if ($cart->get_content_type() == 'virtual') {
            $Gitem->SetEmailDigitalDelivery('true');
        }
        $Gcart->AddItem($Gitem);
        $ot_used = true;
    }
}
//if($ot_used) {
//  $GAtaxTable_OT = new GoogleAlternateTaxTable('_OT_cero_tax');
//  $GAtaxRule = new GoogleAlternateTaxRule('0');
//  $GAtaxRule->SetWorldArea();
//  $GAtaxTable_OT->AddAlternateTaxRules($GAtaxRule);
//  $Gcart->AddAlternateTaxTables($GAtaxTable_OT);
//}
// Out of Stock
if (STOCK_ALLOW_CHECKOUT != 'true' && $flagAnyOutOfStock == true) {
    $Gcart->SetButtonVariant(false);