00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 class Mage_GoogleCheckout_Model_Api_Xml_Checkout extends Mage_GoogleCheckout_Model_Api_Xml_Abstract
00028 {
00029 protected $_currency;
00030 protected $_shippingCalculated = false;
00031
00032 protected function _getApiUrl()
00033 {
00034 $url = $this->_getBaseApiUrl();
00035 $url .= 'merchantCheckout/Merchant/'.$this->getMerchantId();
00036 return $url;
00037 }
00038
00039 public function checkout()
00040 {
00041 $quote = $this->getQuote();
00042
00043 if (!($quote instanceof Mage_Sales_Model_Quote)) {
00044 Mage::throwException('Invalid quote');
00045 }
00046
00047 $xml = <<<EOT
00048 <checkout-shopping-cart xmlns="http://checkout.google.com/schema/2">
00049 <shopping-cart>
00050 {$this->_getItemsXml()}
00051 {$this->_getMerchantPrivateDataXml()}
00052 {$this->_getCartExpirationXml()}
00053 </shopping-cart>
00054 <checkout-flow-support>
00055 {$this->_getMerchantCheckoutFlowSupportXml()}
00056 </checkout-flow-support>
00057 <order-processing-support>
00058 {$this->_getRequestInitialAuthDetailsXml()}
00059 </order-processing-support>
00060 </checkout-shopping-cart>
00061 EOT;
00062 #echo "<xmp>".$xml."</xmp>";
00063 $result = $this->_call($xml);
00064
00065 $this->setRedirectUrl($result->{'redirect-url'});
00066
00067 return $this;
00068 }
00069
00070 protected function _getItemsXml()
00071 {
00072 $xml = <<<EOT
00073 <items>
00074
00075 EOT;
00076 $weightUnit = 'LB';
00077 foreach ($this->getQuote()->getAllItems() as $item) {
00078 if ($item->getParentItem()) {
00079 continue;
00080 }
00081 $taxClass = ($item->getTaxClassId() == 0 ? 'none' : $item->getTaxClassId());
00082 $weight = (float) $item->getWeight();
00083
00084 $xml .= <<<EOT
00085 <item>
00086 <merchant-item-id><![CDATA[{$item->getSku()}]]></merchant-item-id>
00087 <item-name><![CDATA[{$item->getName()}]]></item-name>
00088 <item-description><![CDATA[{$item->getDescription()}]]></item-description>
00089 <unit-price currency="{$this->getCurrency()}">{$item->getBaseCalculationPrice()}</unit-price>
00090 <quantity>{$item->getQty()}</quantity>
00091 <item-weight unit="{$weightUnit}" value="{$weight}" />
00092 <tax-table-selector>{$taxClass}</tax-table-selector>
00093 {$this->_getDigitalContentXml($item->getIsVirtual())}
00094 {$this->_getMerchantPrivateItemDataXml($item)}
00095 </item>
00096
00097 EOT;
00098 }
00099
00100 $shippingDiscount = (float)$this->getQuote()->getShippingAddress()->getBaseDiscountAmount();
00101 $billingDiscount = (float)$this->getQuote()->getBillingAddress()->getBaseDiscountAmount();
00102 if ($discount = $billingDiscount + $shippingDiscount) {
00103 $discount = -$discount;
00104 $xml .= <<<EOT
00105 <item>
00106 <merchant-item-id>_INTERNAL_DISCOUNT_</merchant-item-id>
00107 <item-name>{$this->__('Cart Discount')}</item-name>
00108 <item-description>{$this->__('Virtual item to reflect discount total')}</item-description>
00109 <unit-price currency="{$this->getCurrency()}">{$discount}</unit-price>
00110 <quantity>1</quantity>
00111 <item-weight unit="{$weightUnit}" value="0.00" />
00112 <tax-table-selector>none</tax-table-selector>
00113 {$this->_getDigitalContentXml($this->getQuote()->isVirtual())}
00114 </item>
00115
00116 EOT;
00117 }
00118 $xml .= <<<EOT
00119 </items>
00120 EOT;
00121 return $xml;
00122 }
00123
00124 protected function _getDigitalContentXml($isVirtual)
00125 {
00126 if (!$isVirtual) {
00127 return '';
00128 }
00129
00130 $active = Mage::getStoreConfigFlag('google/checkout_shipping_virtual/active', $this->getQuote()->getStoreId());
00131 if (!$active) {
00132 return '';
00133 }
00134
00135 $schedule = Mage::getStoreConfig('google/checkout_shipping_virtual/schedule', $this->getQuote()->getStoreId());
00136 $method = Mage::getStoreConfig('google/checkout_shipping_virtual/method', $this->getQuote()->getStoreId());
00137
00138 $xml = "<display-disposition>{$schedule}</display-disposition>";
00139
00140 if ($method == 'email') {
00141 $xml .= "<email-delivery>true</email-delivery>";
00142 } elseif ($method == 'key_url') {
00143 } elseif ($method == 'description_based') {
00144 }
00145
00146 $xml = "<digital-content>{$xml}</digital-content>";
00147
00148 return $xml;
00149 }
00150
00151 protected function _getMerchantPrivateItemDataXml($item)
00152 {
00153 $xml = "<merchant-private-item-data><quote-item-id>{$item->getId()}</quote-item-id></merchant-private-item-data>";
00154 return $xml;
00155 }
00156 protected function _getMerchantPrivateDataXml()
00157 {
00158 $xml = <<<EOT
00159 <merchant-private-data>
00160 <quote-id><![CDATA[{$this->getQuote()->getId()}]]></quote-id>
00161 </merchant-private-data>
00162 EOT;
00163 return $xml;
00164 }
00165
00166 protected function _getCartExpirationXml()
00167 {
00168 $xml = <<<EOT
00169 EOT;
00170 return $xml;
00171 }
00172
00173 protected function _getMerchantCheckoutFlowSupportXml()
00174 {
00175 $xml = <<<EOT
00176 <merchant-checkout-flow-support>
00177 <edit-cart-url><![CDATA[{$this->_getEditCartUrl()}]]></edit-cart-url>
00178 <continue-shopping-url><![CDATA[{$this->_getContinueShoppingUrl()}]]></continue-shopping-url>
00179 {$this->_getRequestBuyerPhoneNumberXml()}
00180 {$this->_getMerchantCalculationsXml()}
00181 {$this->_getShippingMethodsXml()}
00182 {$this->_getAllTaxTablesXml()}
00183 {$this->_getParameterizedUrlsXml()}
00184 {$this->_getPlatformIdXml()}
00185 {$this->_getAnalyticsDataXml()}
00186 </merchant-checkout-flow-support>
00187 EOT;
00188 return $xml;
00189 }
00190
00191 protected function _getRequestBuyerPhoneNumberXml()
00192 {
00193 $requestPhone = Mage::getStoreConfig('google/checkout/request_phone', $this->getQuote()->getStoreId()) ? 'true' : 'false';
00194 $xml = <<<EOT
00195 <request-buyer-phone-number>{$requestPhone}</request-buyer-phone-number>
00196 EOT;
00197 return $xml;
00198 }
00199
00200 protected function _getMerchantCalculationsXml()
00201 {
00202 $xml = <<<EOT
00203 <merchant-calculations>
00204 <merchant-calculations-url><![CDATA[{$this->_getCalculationsUrl()}]]></merchant-calculations-url>
00205 </merchant-calculations>
00206 EOT;
00207 return $xml;
00208 }
00209
00210 protected function _getVirtualOrderShippingXml()
00211 {
00212 $title = Mage::helper('googlecheckout')->__('Free Shipping');
00213
00214 $xml = <<<EOT
00215 <shipping-methods>
00216 <flat-rate-shipping name="{$title}">
00217 <shipping-restrictions><allowed-areas><world-area /></allowed-areas></shipping-restrictions>
00218 <price currency="{$this->getCurrency()}">0</price>
00219 </flat-rate-shipping>
00220 </shipping-methods>
00221 EOT;
00222 return $xml;
00223 }
00224
00225 protected function _getShippingMethodsXml()
00226 {
00227 if ($this->_isOrderVirtual()) {
00228 return $this->_getVirtualOrderShippingXml();
00229 }
00230
00231 $xml = <<<EOT
00232 <shipping-methods>
00233 {$this->_getCarrierCalculatedShippingXml()}
00234 {$this->_getFlatRateShippingXml()}
00235 {$this->_getMerchantCalculatedShippingXml()}
00236 {$this->_getPickupXml()}
00237 </shipping-methods>
00238 EOT;
00239 return $xml;
00240 }
00241
00242 protected function _getCarrierCalculatedShippingXml()
00243 {
00244
00245
00246
00247 if ($this->_shippingCalculated) {
00248 return '';
00249 }
00250
00251 $active = Mage::getStoreConfigFlag('google/checkout_shipping_carrier/active', $this->getQuote()->getStoreId());
00252 $methods = Mage::getStoreConfig('google/checkout_shipping_carrier/methods', $this->getQuote()->getStoreId());
00253 if (!$active || !$methods) {
00254 return '';
00255 }
00256
00257 $country = Mage::getStoreConfig('shipping/origin/country_id', $this->getQuote()->getStoreId());
00258 $region = Mage::getStoreConfig('shipping/origin/region_id', $this->getQuote()->getStoreId());
00259 $postcode = Mage::getStoreConfig('shipping/origin/postcode', $this->getQuote()->getStoreId());
00260 $city = Mage::getStoreConfig('shipping/origin/city', $this->getQuote()->getStoreId());
00261
00262 $sizeUnit = 'IN';#Mage::getStoreConfig('google/checkout_shipping_carrier/default_unit');
00263 $defPrice = (float)Mage::getStoreConfig('google/checkout_shipping_carrier/default_price', $this->getQuote()->getStoreId());
00264 $width = Mage::getStoreConfig('google/checkout_shipping_carrier/default_width', $this->getQuote()->getStoreId());
00265 $height = Mage::getStoreConfig('google/checkout_shipping_carrier/default_height', $this->getQuote()->getStoreId());
00266 $length = Mage::getStoreConfig('google/checkout_shipping_carrier/default_length', $this->getQuote()->getStoreId());
00267
00268 $addressCategory = Mage::getStoreConfig('google/checkout_shipping_carrier/address_category', $this->getQuote()->getStoreId());
00269
00270 $defPrice = Mage::helper('tax')->getShippingPrice($defPrice, false, false);
00271
00272
00273
00274
00275 $xml = <<<EOT
00276 <carrier-calculated-shipping>
00277 <shipping-packages>
00278 <shipping-package>
00279 <ship-from id="Origin">
00280 <city>{$city}</city>
00281 <region>{$region}</region>
00282 <postal-code>{$postcode}</postal-code>
00283 <country-code>{$country}</country-code>
00284 </ship-from>
00285 <width unit="{$sizeUnit}" value="{$width}"/>
00286 <height unit="{$sizeUnit}" value="{$height}"/>
00287 <length unit="{$sizeUnit}" value="{$length}"/>
00288 <delivery-address-category>{$addressCategory}</delivery-address-category>
00289 </shipping-package>
00290 </shipping-packages>
00291 <carrier-calculated-shipping-options>
00292 EOT;
00293
00294 foreach (explode(',', $methods) as $method) {
00295 list($company, $type) = explode('/', $method);
00296 $xml .= <<<EOT
00297 <carrier-calculated-shipping-option>
00298 <shipping-company>{$company}</shipping-company>
00299 <shipping-type>{$type}</shipping-type>
00300 <price currency="{$this->getCurrency()}">{$defPrice}</price>
00301 </carrier-calculated-shipping-option>
00302 EOT;
00303 }
00304
00305 $xml .= <<<EOT
00306 </carrier-calculated-shipping-options>
00307 </carrier-calculated-shipping>
00308 EOT;
00309 $this->_shippingCalculated = true;
00310 return $xml;
00311 }
00312
00313 protected function _getFlatRateShippingXml()
00314 {
00315
00316
00317
00318 if ($this->_shippingCalculated) {
00319 return '';
00320 }
00321
00322 if (!Mage::getStoreConfigFlag('google/checkout_shipping_flatrate/active', $this->getQuote()->getStoreId())) {
00323 return '';
00324 }
00325
00326 for ($xml='', $i=1; $i<=3; $i++) {
00327 $allowSpecific = Mage::getStoreConfigFlag('google/checkout_shipping_flatrate/sallowspecific_'.$i, $this->getQuote()->getStoreId());
00328 $specificCountries = Mage::getStoreConfig('google/checkout_shipping_flatrate/specificcountry_'.$i, $this->getQuote()->getStoreId());
00329 $allowedAreasXml = $this->_getAllowedCountries($allowSpecific, $specificCountries);
00330
00331 $title = Mage::getStoreConfig('google/checkout_shipping_flatrate/title_'.$i, $this->getQuote()->getStoreId());
00332 $price = Mage::getStoreConfig('google/checkout_shipping_flatrate/price_'.$i, $this->getQuote()->getStoreId());
00333 $price = number_format($price, 2, '.','');
00334 $price = Mage::helper('tax')->getShippingPrice($price, false, false);
00335
00336 if (empty($title) || $price <= 0) {
00337 continue;
00338 }
00339
00340 $xml .= <<<EOT
00341 <flat-rate-shipping name="{$title}">
00342 <shipping-restrictions>
00343 <allowed-areas>
00344 {$allowedAreasXml}
00345 </allowed-areas>
00346 </shipping-restrictions>
00347 <price currency="{$this->getCurrency()}">{$price}</price>
00348 </flat-rate-shipping>
00349 EOT;
00350 }
00351 $this->_shippingCalculated = true;
00352 return $xml;
00353 }
00354
00355 protected function _getAllowedCountries($allowSpecific, $specific)
00356 {
00357 $xml = '';
00358 if ($allowSpecific == 1) {
00359 if($specific) {
00360 foreach (explode(',', $specific) as $country) {
00361 $xml .= "<postal-area><country-code>{$country}</country-code></postal-area>\n";
00362 }
00363 }
00364 }
00365
00366 if ($xml) {
00367 return $xml;
00368 }
00369
00370 return '<world-area />';
00371 }
00372
00373 protected function _getMerchantCalculatedShippingXml()
00374 {
00375
00376
00377
00378 if ($this->_shippingCalculated) {
00379 return '';
00380 }
00381
00382 $active = Mage::getStoreConfigFlag('google/checkout_shipping_merchant/active', $this->getQuote()->getStoreId());
00383 $methods = Mage::getStoreConfig('google/checkout_shipping_merchant/allowed_methods', $this->getQuote()->getStoreId());
00384
00385 if (!$active || !$methods) {
00386 return '';
00387 }
00388
00389 $methods = unserialize($methods);
00390
00391 $xml = '';
00392 foreach ($methods['method'] as $i=>$method) {
00393 if (!$i || !$method) {
00394 continue;
00395 }
00396 list($carrierCode, $methodCode) = explode('/', $method);
00397 if ($carrierCode) {
00398 $carrier = Mage::getModel('shipping/shipping')->getCarrierByCode($carrierCode);
00399 if ($carrier) {
00400 $allowedMethods = $carrier->getAllowedMethods();
00401
00402 if (isset($allowedMethods[$methodCode])) {
00403 $method = Mage::getStoreConfig('carriers/'.$carrierCode.'/title', $this->getQuote()->getStoreId());
00404 $method .= ' - '.$allowedMethods[$methodCode];
00405 }
00406
00407 $defaultPrice = $methods['price'][$i];
00408 $defaultPrice = Mage::helper('tax')->getShippingPrice($defaultPrice, false, false);
00409
00410 $allowedAreasXml = $this->_getAllowedCountries($carrier->getConfigData('sallowspecific'), $carrier->getConfigData('specificcountry'));
00411
00412 $xml .= <<<EOT
00413 <merchant-calculated-shipping name="{$method}">
00414 <address-filters>
00415 <allowed-areas>
00416 {$allowedAreasXml}
00417 </allowed-areas>
00418 </address-filters>
00419 <price currency="{$this->getCurrency()}">{$defaultPrice}</price>
00420 </merchant-calculated-shipping>
00421 EOT;
00422 }
00423 }
00424 }
00425 $this->_shippingCalculated = true;
00426 return $xml;
00427 }
00428
00429 protected function _getPickupXml()
00430 {
00431 if (!Mage::getStoreConfig('google/checkout_shipping_pickup/active', $this->getQuote()->getStoreId())) {
00432 return '';
00433 }
00434
00435 $title = Mage::getStoreConfig('google/checkout_shipping_pickup/title', $this->getQuote()->getStoreId());
00436 $price = Mage::getStoreConfig('google/checkout_shipping_pickup/price', $this->getQuote()->getStoreId());
00437 $price = Mage::helper('tax')->getShippingPrice($price, false, false);
00438
00439 $xml = <<<EOT
00440 <pickup name="{$title}">
00441 <price currency="{$this->getCurrency()}">{$price}</price>
00442 </pickup>
00443 EOT;
00444 return $xml;
00445 }
00446
00447 protected function _getTaxTableXml($rules, $type)
00448 {
00449 $xml = '';
00450 if (is_array($rules)) {
00451 foreach ($rules as $group=>$taxRates) {
00452 if ($type != 'default') {
00453 $nameAttribute = "name=\"{$group}\"";
00454 $standaloneAttribute = "standalone=\"true\"";
00455 $rulesTag = "{$type}-tax-rules";
00456 $shippingTaxed = false;
00457 } else {
00458 $nameAttribute = '';
00459 $standaloneAttribute = '';
00460 $rulesTag = "tax-rules";
00461 $shippingTaxed = true;
00462 }
00463
00464
00465 $xml .= <<<EOT
00466 <{$type}-tax-table {$nameAttribute} {$standaloneAttribute}>
00467 <{$rulesTag}>
00468 EOT;
00469 if (is_array($taxRates)) {
00470 foreach ($taxRates as $rate) {
00471 $xml .= <<<EOT
00472 <{$type}-tax-rule>
00473 <tax-area>
00474
00475 EOT;
00476 if ($rate['country']==='US') {
00477 if (!empty($rate['postcode']) && $rate['postcode']!=='*') {
00478 $xml .= <<<EOT
00479 <us-zip-area>
00480 <zip-pattern>{$rate['postcode']}</zip-pattern>
00481 </us-zip-area>
00482
00483 EOT;
00484 } elseif (!empty($rate['state'])) {
00485 $xml .= <<<EOT
00486 <us-state-area>
00487 <state>{$rate['state']}</state>
00488 </us-state-area>
00489
00490 EOT;
00491 } else {
00492 $xml .= <<<EOT
00493 <us-zip-area>
00494 <zip-pattern>*</zip-pattern>
00495 </us-zip-area>
00496
00497 EOT;
00498 }
00499 } else {
00500 if (!empty($rate['postcode'])) {
00501 $xml .= <<<EOT
00502 <postal-area>
00503 <country-code>{$rate['country']}</country-code>
00504 EOT;
00505 if (!empty($rate['postcode']) && $rate['postcode']!=='*') {
00506 $xml .= <<<EOT
00507 <postal-code-pattern>{$rate['postcode']}</postal-code-pattern>
00508
00509 EOT;
00510 }
00511 $xml .= <<<EOT
00512 </postal-area>
00513
00514 EOT;
00515 }
00516 }
00517 $xml .= <<<EOT
00518 </tax-area>
00519 <rate>{$rate['value']}</rate>
00520 EOT;
00521 if ($shippingTaxed) {
00522 $xml .= '<shipping-taxed>true</shipping-taxed>';
00523 }
00524 $xml .= "</{$type}-tax-rule>";
00525 }
00526
00527 } else {
00528 $taxRate = $taxRates/100;
00529 $xml .= <<<EOT
00530 <{$type}-tax-rule>
00531 <tax-area>
00532 <world-area/>
00533 </tax-area>
00534 <rate>{$taxRate}</rate>
00535 EOT;
00536 if ($shippingTaxed) {
00537 $xml .= '<shipping-taxed>true</shipping-taxed>';
00538 }
00539 $xml .= "</{$type}-tax-rule>";
00540 }
00541
00542 $xml .= <<<EOT
00543 </$rulesTag>
00544 </{$type}-tax-table>
00545 EOT;
00546 }
00547 } else {
00548 if (is_numeric($rules)) {
00549 $taxRate = $rules/100;
00550
00551 $xml .= <<<EOT
00552 <{$type}-tax-table>
00553 <tax-rules>
00554 <{$type}-tax-rule>
00555 <tax-area>
00556 <world-area/>
00557 </tax-area>
00558 <rate>{$taxRate}</rate>
00559 <shipping-taxed>true</shipping-taxed>
00560 </{$type}-tax-rule>
00561 </tax-rules>
00562 </{$type}-tax-table>
00563 EOT;
00564 }
00565 }
00566
00567 return $xml;
00568 }
00569
00570 protected function _getAllTaxTablesXml()
00571 {
00572 if (Mage::getStoreConfigFlag('google/checkout/disable_default_tax_tables', $this->getQuote()->getStoreId())) {
00573 return '<tax-tables merchant-calculated="true" />';
00574 }
00575
00576
00577 $xml = <<<EOT
00578 <tax-tables merchant-calculated="true">
00579 {$this->_getTaxTableXml($this->_getShippingTaxRules(), 'default')}
00580
00581 <!-- default-tax-table>
00582 <tax-rules>
00583 <default-tax-rule>
00584 </default-tax-rule>
00585 </tax-rules>
00586 </default-tax-table -->
00587
00588 <alternate-tax-tables>
00589 <alternate-tax-table name="none" standalone="true">
00590 <alternate-tax-rules>
00591 <alternate-tax-rule>
00592 <tax-area>
00593 <world-area/>
00594 </tax-area>
00595 <rate>0</rate>
00596 </alternate-tax-rule>
00597 </alternate-tax-rules>
00598 </alternate-tax-table>
00599 {$this->_getTaxTableXml($this->_getTaxRules(), 'alternate')}
00600 </alternate-tax-tables>
00601 </tax-tables>
00602 EOT;
00603 return $xml;
00604 }
00605
00606 protected function _getCustomerTaxClass()
00607 {
00608 $customerGroup = $this->getQuote()->getCustomerGroupId();
00609 if (!$customerGroup) {
00610 $customerGroup = Mage::getStoreConfig('customer/create_account/default_group', $this->getQuote()->getStoreId());
00611 }
00612 return Mage::getModel('customer/group')->load($customerGroup)->getTaxClassId();
00613 }
00614
00615 protected function _getShippingTaxRules()
00616 {
00617 $customerTaxClass = $this->_getCustomerTaxClass();
00618 if ($shippingTaxClass = Mage::getStoreConfig(Mage_Tax_Model_Config::CONFIG_XML_PATH_SHIPPING_TAX_CLASS, $this->getQuote()->getStoreId())) {
00619 if (Mage::helper('tax')->getTaxBasedOn() == 'origin') {
00620 $request = Mage::getSingleton('tax/calculation')->getRateRequest();
00621 $request
00622 ->setCustomerClassId($customerTaxClass)
00623 ->setProductClassId($shippingTaxClass);
00624
00625 return Mage::getSingleton('tax/calculation')->getRate($request);
00626 }
00627 $customerRules = Mage::getSingleton('tax/calculation')->getRatesByCustomerAndProductTaxClasses($customerTaxClass, $shippingTaxClass);
00628 $rules = array();
00629 foreach ($customerRules as $rule) {
00630 $rules[$rule['product_class']][] = $rule;
00631 }
00632 return $rules;
00633 } else {
00634 return array();
00635 }
00636 }
00637
00638 protected function _getTaxRules()
00639 {
00640 $customerTaxClass = $this->_getCustomerTaxClass();
00641 if (Mage::helper('tax')->getTaxBasedOn() == 'origin') {
00642 $request = Mage::getSingleton('tax/calculation')->getRateRequest();
00643 return Mage::getSingleton('tax/calculation')->getRatesForAllProductTaxClasses($request->setCustomerClassId($customerTaxClass));
00644 } else {
00645 $customerRules = Mage::getSingleton('tax/calculation')->getRatesByCustomerTaxClass($customerTaxClass);
00646 $rules = array();
00647 foreach ($customerRules as $rule) {
00648 $rules[$rule['product_class']][] = $rule;
00649 }
00650 return $rules;
00651 }
00652 }
00653
00654 protected function _getRequestInitialAuthDetailsXml()
00655 {
00656 $xml = <<<EOT
00657 <request-initial-auth-details>true</request-initial-auth-details>
00658 EOT;
00659 return $xml;
00660 }
00661
00662 protected function _getParameterizedUrlsXml()
00663 {
00664 return '';
00665 $xml = <<<EOT
00666 <parameterized-urls>
00667 <parameterized-url url="{$this->_getParameterizedUrl()}" />
00668 </parameterized-urls>
00669 EOT;
00670 return $xml;
00671 }
00672
00673 protected function _getPlatformIdXml()
00674 {
00675 $xml = <<<EOT
00676 <platform-id>473325629220583</platform-id>
00677 EOT;
00678 return $xml;
00679 }
00680
00681 protected function _getAnalyticsDataXml()
00682 {
00683 if (!($analytics = $this->getApi()->getAnalyticsData())) {
00684 return '';
00685 }
00686 $xml = <<<EOT
00687 <analytics-data><![CDATA[{$analytics}]]></analytics-data>
00688 EOT;
00689 return $xml;
00690 }
00691
00692 protected function _getEditCartUrl()
00693 {
00694 return Mage::getUrl('googlecheckout/redirect/cart');
00695 }
00696
00697 protected function _getContinueShoppingUrl()
00698 {
00699 return Mage::getUrl('googlecheckout/redirect/continue');
00700 }
00701
00702 protected function _getNotificationsUrl()
00703 {
00704 return $this->_getCallbackUrl();
00705 }
00706
00707 protected function _getCalculationsUrl()
00708 {
00709 return $this->_getCallbackUrl();
00710 }
00711
00712 protected function _getParameterizedUrl()
00713 {
00714 return Mage::getUrl('googlecheckout/api/beacon');
00715 }
00716
00717 protected function _isOrderVirtual()
00718 {
00719 $orderIsVirual = true;
00720 foreach ($this->getQuote()->getAllItems() as $item) {
00721 if (!$item->getIsVirtual()) {
00722 $orderIsVirual = false;
00723 break;
00724 }
00725 }
00726 return $orderIsVirual;
00727 }
00728 }