当前位置: 首页>>代码示例>>PHP>>正文


PHP ShoppingCart::get方法代码示例

本文整理汇总了PHP中ShoppingCart::get方法的典型用法代码示例。如果您正苦于以下问题:PHP ShoppingCart::get方法的具体用法?PHP ShoppingCart::get怎么用?PHP ShoppingCart::get使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ShoppingCart的用法示例。


在下文中一共展示了ShoppingCart::get方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: onlyDownloadable

 /**
  * Check to see if the shopping cart only contains downloadable
  * products.
  *
  * @return Boolean
  */
 public function onlyDownloadable()
 {
     $cart = ShoppingCart::get();
     foreach ($cart->getItems() as $item) {
         if (!$item->FindStockItem() instanceof DownloadableProduct) {
             return false;
         }
     }
     return true;
 }
开发者ID:i-lateral,项目名称:silverstripe-commerce-downloadableproduct,代码行数:16,代码来源:DownloadableCheckoutExtension.php

示例2: index

 public function index($request)
 {
     $this->extend('onBeforeIndex');
     $site = SiteConfig::current_site_config();
     $order = $this->getOrderData();
     $cart = ShoppingCart::get();
     // Setup the paypal gateway URL
     if (Director::isDev()) {
         $gateway_url = "https://www.sandbox.paypal.com/cgi-bin/webscr";
     } else {
         $gateway_url = "https://www.paypal.com/cgi-bin/webscr";
     }
     $callback_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, "callback", $this->payment_gateway->ID);
     $success_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete');
     $error_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete', 'error');
     $back_url = Controller::join_links(Director::absoluteBaseURL(), Checkout_Controller::config()->url_segment, "finish");
     $fields = new FieldList(HiddenField::create('business', null, $this->payment_gateway->BusinessID), HiddenField::create('item_name', null, $site->Title), HiddenField::create('cmd', null, "_cart"), HiddenField::create('paymentaction', null, "sale"), HiddenField::create('invoice', null, $order->OrderNumber), HiddenField::create('custom', null, $order->OrderNumber), HiddenField::create('upload', null, 1), HiddenField::create('discount_amount_cart', null, number_format($cart->DiscountAmount, 2)), HiddenField::create('currency_code', null, Checkout::config()->currency_code), HiddenField::create('first_name', null, $order->FirstName), HiddenField::create('last_name', null, $order->Surname), HiddenField::create('address1', null, $order->Address1), HiddenField::create('address2', null, $order->Address2), HiddenField::create('city', null, $order->City), HiddenField::create('zip', null, $order->PostCode), HiddenField::create('country', null, $order->Country), HiddenField::create('email', null, $order->Email), HiddenField::create('return', null, $success_url), HiddenField::create('notify_url', null, $callback_url), HiddenField::create('cancel_return', null, $error_url));
     if (!Checkout::config()->simple_checkout && !$cart->isCollection()) {
         // Shipping Details
         $fields->add(HiddenField::create('shipping_addressee_name', null, $order->DeliveryFirstnames . " " . $order->DeliverySurname));
         $fields->add(HiddenField::create('shipping_address1', null, $order->DeliveryAddress1));
         $fields->add(HiddenField::create('shipping_address2', null, $order->DeliveryAddress2));
         $fields->add(HiddenField::create('shipping_city', null, $order->DeliveryCity));
         $fields->add(HiddenField::create('shipping_zip', null, $order->DeliveryPostCode));
         $fields->add(HiddenField::create('shipping_country', null, $order->DeliveryCountry));
     }
     $i = 1;
     foreach ($cart->getItems() as $item) {
         $fields->add(HiddenField::create('item_name_' . $i, null, $item->Title));
         $fields->add(HiddenField::create('amount_' . $i, null, number_format($item->Price, 2)));
         $fields->add(HiddenField::create('quantity_' . $i, null, $item->Quantity));
         $i++;
     }
     if (!Checkout::config()->simple_checkout && !$cart->isCollection()) {
         // Add shipping as an extra product
         $fields->add(HiddenField::create('item_name_' . $i, null, $order->PostageType));
         $fields->add(HiddenField::create('amount_' . $i, null, number_format($cart->PostageCost, 2)));
         $fields->add(HiddenField::create('quantity_' . $i, null, "1"));
     }
     // Add tax (if needed) else just total
     if ($cart->TaxCost) {
         $fields->add(HiddenField::create('tax_cart', null, number_format($cart->TaxCost, 2)));
     }
     $actions = FieldList::create(LiteralField::create('BackButton', '<a href="' . $back_url . '" class="btn btn-red checkout-action-back">' . _t('Checkout.Back', 'Back') . '</a>'), FormAction::create('Submit', _t('Checkout.ConfirmPay', 'Confirm and Pay'))->addExtraClass('btn')->addExtraClass('btn-green'));
     $form = Form::create($this, 'Form', $fields, $actions)->addExtraClass('forms')->setFormMethod('POST')->setFormAction($gateway_url);
     $this->customise(array("Title" => _t('Checkout.Summary', "Summary"), "MetaTitle" => _t('Checkout.Summary', "Summary"), "Form" => $form, "Order" => $order));
     $this->extend('onAfterIndex');
     return $this->renderWith(array("PayPal", "Payment", "Checkout", "Page"));
 }
开发者ID:helpfulrobot,项目名称:i-lateral-silverstripe-checkout,代码行数:49,代码来源:PayPalHandler.php

示例3: callback

 /**
  * Process the callback data from the payment provider
  */
 public function callback($request)
 {
     if (Director::isDev()) {
         $secret_key = StripePayment::config()->test_secret_key;
         $publish_key = StripePayment::config()->test_publish_key;
     } else {
         $secret_key = StripePayment::config()->live_secret_key;
         $publish_key = StripePayment::config()->live_publish_key;
     }
     Stripe::setApiKey($secret_key);
     $site = SiteConfig::current_site_config();
     $order = $this->getOrderData();
     $cart = ShoppingCart::get();
     $this->extend('onBeforeCallback');
     $error_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete', 'error');
     $data = $this->request->postVars();
     $status = "error";
     // Get the credit card details submitted by the form
     $token = $data['stripeToken'];
     $order_no = Session::get("StripePayment.OrderNumber");
     $order = Estimate::get()->filter("OrderNumber", $order_no)->first();
     if ($order_no && $order) {
         // Create the charge on Stripe's servers - this will charge
         // the user's card
         try {
             $success_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete', $order_no);
             $charge = StripeCharge::create(array("amount" => round($order->Total->Value * 100), "currency" => strtolower(Checkout::config()->currency_code), "source" => $token, "metadata" => array("Order" => $order_no)));
             $order->convertToOrder();
             $order->write();
             $order = Order::get()->byID($order->ID);
             $order->Status = "paid";
             $order->PaymentProvider = "Stripe";
             $order->PaymentNo = $charge->id;
             $order->write();
             return $this->redirect($success_url);
         } catch (Exception $e) {
             $order->Status = "failed";
             $order->write();
             return $this->redirect($error_url);
         }
     } else {
         return $this->redirect($error_url);
     }
 }
开发者ID:i-lateral,项目名称:silverstripe-checkout-stripe,代码行数:47,代码来源:StripePaymentHandler.php

示例4: index

 public function index($request)
 {
     $this->extend('onBeforeIndex');
     // Setup payment gateway form
     $order = $this->getOrderData();
     $cart = ShoppingCart::get();
     // Setup the gateway URL
     if (Director::isDev()) {
         $gateway_url = "https://secure-test.worldpay.com/wcc/purchase";
     } else {
         $gateway_url = "https://secure.worldpay.com/wcc/purchase ";
     }
     $callback_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, "callback", $this->payment_gateway->ID);
     $back_url = Controller::join_links(Director::absoluteBaseURL(), Checkout_Controller::config()->url_segment, "finish");
     $fields = FieldList::create(HiddenField::create('instId', null, $this->payment_gateway->InstallID), HiddenField::create('cartId', null, $order->OrderNumber), HiddenField::create('MC_callback', null, $callback_url), HiddenField::create('amount', null, number_format($cart->TotalCost, 2)), HiddenField::create('currency', null, Checkout::config()->currency_code), HiddenField::create('name', null, $order->FirstName . " " . $order->Surname), HiddenField::create('address1', null, $order->Address1), HiddenField::create('address2', null, $order->Address2), HiddenField::create('town', null, $order->City), HiddenField::create('region', null, $order->Country), HiddenField::create('postcode', null, $order->PostCode), HiddenField::create('country', null, $order->Country), HiddenField::create('email', null, $order->Email), HiddenField::create('tel', null, $order->PhoneNumber));
     // Create a string of items ordered (to manage the order via WorldPay)
     $desc_string = "";
     foreach ($cart->getItems() as $item) {
         $desc_string .= $item->Title . ' x ' . $item->Quantity . ', ';
     }
     if (!Checkout::config()->simple_checkout && !$cart->isCollection()) {
         // Add postage type to description
         $desc_string .= _t("Checkout.Postage", "Postage") . ': ' . $order->PostageType . '; ';
         // Add postage address to description
         $desc_string .= _t("Checkout.PostTo", "Post to") . ': ';
         $desc_string .= $order->DeliveryFirstnames . " " . $order->DeliverySurname . ', ';
         $desc_string .= $order->DeliveryAddress1 . ', ';
         $desc_string .= $order->DeliveryAddress2 ? $order->DeliveryAddress2 . ', ' : '';
         $desc_string .= $order->DeliveryCity . ', ';
         $desc_string .= $order->DeliveryCountry ? $order->DeliveryCountry . ', ' : '';
         $desc_string .= $order->DeliveryPostCode . ', ';
         $desc_string .= $order->DeliveryCountry;
     }
     $fields->add(HiddenField::create('desc', null, $desc_string));
     if (Director::isDev()) {
         $fields->add(HiddenField::create('testMode', null, '100'));
     }
     $actions = FieldList::create(LiteralField::create('BackButton', '<a href="' . $back_url . '" class="btn btn-red checkout-action-back">' . _t('Checkout.Back', 'Back') . '</a>'), FormAction::create('Submit', _t('Checkout.ConfirmPay', 'Confirm and Pay'))->addExtraClass('btn')->addExtraClass('btn-green'));
     $form = Form::create($this, 'Form', $fields, $actions)->addExtraClass('forms')->setFormMethod('POST')->setFormAction($gateway_url);
     $this->customise(array("Title" => _t('Checkout.Summary', "Summary"), "MetaTitle" => _t('Checkout.Summary', "Summary"), "Form" => $form, "Order" => $order));
     $this->extend("onAfterIndex");
     return $this->renderWith(array("Worldpay", "Payment", "Checkout", "Page"));
 }
开发者ID:helpfulrobot,项目名称:i-lateral-silverstripe-checkout,代码行数:43,代码来源:WorldPayHandler.php

示例5: index

 public function index($request)
 {
     $this->extend('onBeforeIndex');
     // Setup payment gateway form
     $site = SiteConfig::current_site_config();
     $order = $this->getOrderData();
     $cart = ShoppingCart::get();
     $pw = $this->payment_gateway->SHA;
     $sha_data = "";
     // Setup the gateway URL
     if (Director::isDev()) {
         $gateway_url = "https://mdepayments.epdq.co.uk/ncol/test/orderstandard.asp";
     } else {
         $gateway_url = "https://payments.epdq.co.uk/ncol/prod/orderstandard.asp";
     }
     $success_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete');
     $error_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete', 'error');
     $back_url = Controller::join_links(Director::absoluteBaseURL(), Checkout_Controller::config()->url_segment, "finish");
     $template_url = Controller::join_links(Director::absoluteBaseURL(), "BarclaycardEpdqDynamicTemplate");
     // Get an array of details, so we can generate a hash and convert
     // to hidden fields
     $data = array("PSPID" => $this->payment_gateway->PSPID, "ORDERID" => $order->OrderNumber, "AMOUNT" => round($cart->TotalCost * 100), "CURRENCY" => Checkout::config()->currency_code, "LANGUAGE" => i18n::get_locale(), "CN" => $order->FirstName . " " . $order->Surname, "EMAIL" => $order->Email, "OWNERADDRESS" => $order->Address1, "OWNERTOWN" => $order->City, "OWNERZIP" => $order->PostCode, "OWNERCTY" => $order->Country, "TITLE" => $site->Title, "BGCOLOR" => $this->payment_gateway->Background, "TXTCOLOR" => $this->payment_gateway->Text, "TBLBGCOLOR" => $this->payment_gateway->TableBackground, "TBLTXTCOLOR" => $this->payment_gateway->TableText, "BUTTONBGCOLOR" => $this->payment_gateway->ButtonBackground, "BUTTONTXTCOLOR" => $this->payment_gateway->ButtonText, "ACCEPTURL" => $success_url, "DECLINEURL" => $error_url, "EXCEPTIONURL" => $error_url, "CANCELURL" => $error_url, "TP" => $template_url);
     // Account for the fact the phone number might not be set
     if ($order->PhoneNumber) {
         $data["OWNERTELNO"] = $order->PhoneNumber;
     }
     $fields = FieldList::create();
     ksort($data);
     // Generate our SHA Key and add fields
     foreach ($data as $k => $v) {
         $fields->push(HiddenField::create($k, null, $v));
         $sha_data .= sprintf("%s=%s%s", $k, $v, $pw);
     }
     $hashed_data = strtoupper(hash("sha1", $sha_data));
     // Finally add out hashed data
     $fields->push(HiddenField::create("SHASign", null, $hashed_data));
     $actions = FieldList::create(LiteralField::create('BackButton', '<a href="' . $back_url . '" class="btn btn-red checkout-action-back">' . _t('Checkout.Back', 'Back') . '</a>'), FormAction::create('Submit', _t('Checkout.ConfirmPay', 'Confirm and Pay'))->addExtraClass('btn')->addExtraClass('btn-green'));
     $form = Form::create($this, 'Form', $fields, $actions)->addExtraClass('forms')->setFormMethod('POST')->setFormAction($gateway_url);
     $this->customise(array("Title" => _t('Checkout.Summary', "Summary"), "MetaTitle" => _t('Checkout.Summary', "Summary"), "Form" => $form, "Order" => $order));
     $this->extend("onAfterIndex");
     return $this->renderWith(array("BarclaysEpqd", "Payment", "Checkout", "Page"));
 }
开发者ID:helpfulrobot,项目名称:i-lateral-silverstripe-checkout-barclaycard-epdq,代码行数:42,代码来源:BarclaycardEpdqHandler.php

示例6: __construct

 public function __construct($controller, $name = "BillingDetailsForm")
 {
     $personal_fields = CompositeField::create(HeaderField::create('PersonalHeader', _t('Checkout.PersonalDetails', 'Personal Details'), 3), TextField::create('FirstName', _t('Checkout.FirstName', 'First Name(s)')), TextField::create('Surname', _t('Checkout.Surname', 'Surname')), TextField::create("Company", _t('Checkout.Company', "Company"))->setRightTitle(_t("Checkout.Optional", "Optional")), EmailField::create('Email', _t('Checkout.Email', 'Email')), TextField::create('PhoneNumber', _t('Checkout.Phone', 'Phone Number')))->setName("PersonalFields")->addExtraClass('unit')->addExtraClass('size1of2')->addExtraClass('unit-50');
     $address_fields = CompositeField::create(HeaderField::create('AddressHeader', _t('Checkout.Address', 'Address'), 3), TextField::create('Address1', _t('Checkout.Address1', 'Address Line 1')), TextField::create('Address2', _t('Checkout.Address2', 'Address Line 2'))->setRightTitle(_t("Checkout.Optional", "Optional")), TextField::create('City', _t('Checkout.City', 'City')), TextField::create('PostCode', _t('Checkout.PostCode', 'Post Code')), CountryDropdownField::create('Country', _t('Checkout.Country', 'Country'), null, 'GB'))->setName("AddressFields")->addExtraClass('unit')->addExtraClass('size1of2')->addExtraClass('unit-50');
     $fields = FieldList::create(CompositeField::create($personal_fields, $address_fields)->setName("BillingFields")->addExtraClass('line')->addExtraClass('units-row'));
     // Add a save address for later checkbox if a user is logged in
     if (Member::currentUserID()) {
         $fields->add(CompositeField::create(CheckboxField::create("SaveAddress", _t('Checkout.SaveAddress', 'Save this address for later')))->setName("SaveAddressHolder")->addExtraClass('line')->addExtraClass('units-row'));
     }
     $back_url = Controller::join_links(BASE_URL, ShoppingCart::config()->url_segment);
     $actions = FieldList::create(LiteralField::create('BackButton', '<a href="' . $back_url . '" class="btn btn-red checkout-action-back">' . _t('Checkout.Back', 'Back') . '</a>'));
     if (ShoppingCart::get()->isCollection()) {
         $actions->add(FormAction::create('doSetDelivery', _t('Checkout.UseTheseDetails', 'Use these details'))->addExtraClass('btn')->addExtraClass('btn-green')->addExtraClass('checkout-action-next'));
     } else {
         $actions->add(FormAction::create('doSetDelivery', _t('Checkout.SetDeliveryAddress', 'Deliver to another address'))->addExtraClass('btn')->addExtraClass('checkout-action-next'));
         $actions->add(FormAction::create('doContinue', _t('Checkout.DeliverThisAddress', 'Deliver to this address'))->addExtraClass('btn')->addExtraClass('checkout-action-next')->addExtraClass('btn-green'));
     }
     $validator = new RequiredFields('FirstName', 'Surname', 'Address1', 'City', 'PostCode', 'Country', 'Email', 'PhoneNumber');
     parent::__construct($controller, $name, $fields, $actions, $validator);
 }
开发者ID:helpfulrobot,项目名称:i-lateral-silverstripe-checkout,代码行数:20,代码来源:BillingDetailsForm.php

示例7: index

 public function index($request)
 {
     $this->extend("onBeforeIndex");
     $site = SiteConfig::current_site_config();
     $order = $this->getOrderData();
     $cart = ShoppingCart::get();
     $key = $this->payment_gateway->ConfigKey;
     $merchant_id = Director::isDev() ? "TEST" : $this->payment_gateway->MerchantID;
     $callback_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, "callback", $this->payment_gateway->ID);
     $return_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete');
     $back_url = Controller::join_links(Director::absoluteBaseURL(), Checkout_Controller::config()->url_segment, "finish");
     $payment_details = array('username' => $this->payment_gateway->Username, 'password' => $this->payment_gateway->Password, 'biller_code' => $this->payment_gateway->BillerCode, 'merchant_id' => $merchant_id, 'receipt_address' => $order->Email, 'payment_amount' => number_format($cart->TotalCost, 2), 'payment_reference' => $order->OrderNumber, 'payment_reference_minimum_length' => 10, 'payment_reference_maximum_length' => 20, 'payment_reference_text' => _t("PayWay.PaymentReferenceText", "Order Number"), 'return_link_url' => $return_url, 'reply_link_url' => $callback_url, 'reply_link_email' => $this->payment_gateway->PaymentReplyEmail, 'reply_link_post_type' => 'extended');
     foreach ($cart->getItems() as $item) {
         $payment_details[$item->Title] = $item->Quantity . ',' . number_format($item->Price, 2);
     }
     if (!Checkout::config()->simple_checkout) {
         $payment_details[$order->PostageType] = number_format($cart->PostageCost, 2);
     }
     // Add tax (if needed) else just total
     if ($cart->TaxCost) {
         $payment_details[_t("PayWay.Tax", 'Tax')] = number_format($cart->TaxCost, 2);
     }
     // If we cannot get payway's token, generate a friendly error
     try {
         $token = $this->get_token($payment_details);
     } catch (Exception $e) {
         error_log("Exception caught: " . $e->getMessage());
         $content = "<p>";
         $content = _t("PayWay.UnableToPayContent", "Please return to the previous page and try again");
         $content = "</p>";
         $content = '<p><a href="' . $back_url . '" class="btn">Back</a></p>';
         $this->customise(array("Title" => _t("PayWay.UnableToPay", "Unable to take payment"), "MetaTitle" => _t("PayWay.UnableToPay", "Unable to take payment"), "Content" => $content));
         return $this->renderWith(array("Page"));
     }
     $hand_off_url = Controller::join_links($this->config()->gateway_url, "MakePayment");
     $hand_off_url .= "?biller_code=" . $this->payment_gateway->BillerCode;
     $hand_off_url .= "&token=" . urlencode($token);
     $this->extend('onAfterIndex');
     return $this->redirect($hand_off_url);
 }
开发者ID:helpfulrobot,项目名称:i-lateral-silverstripe-checkout-payway,代码行数:40,代码来源:PayWayHandler.php

示例8: index

 public function index($request)
 {
     $this->extend('onBeforeIndex');
     $site = SiteConfig::current_site_config();
     $order = $this->getOrderData();
     $cart = ShoppingCart::get();
     $key = $this->payment_gateway->ConfigKey;
     $sofort = new SofortMultipayPayment($key);
     $sofort->setAmount(number_format($cart->TotalCost, 2));
     $sofort->setCurrencyCode(Checkout::config()->currency_code);
     $callback_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, "callback", $this->payment_gateway->ID);
     $success_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete', $order->OrderNumber);
     $error_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete', 'error');
     $back_url = Controller::join_links(Director::absoluteBaseURL(), Checkout_Controller::config()->url_segment, "finish");
     $sofort->setSuccessUrl($success_url, true);
     $sofort->setAbortUrl($error_url);
     $sofort->setNotificationUrl($callback_url);
     $desc_string = "";
     foreach ($cart->getItems() as $item) {
         $desc_string .= $item->Title . ' x ' . $item->Quantity . ', ';
     }
     $sofort->setReason($desc_string);
     $sofort->sendRequest();
     $fields = new FieldList();
     $i = 1;
     $actions = FieldList::create(LiteralField::create('BackButton', '<a href="' . $back_url . '" class="btn btn-red checkout-action-back">' . _t('Checkout.Back', 'Back') . '</a>'));
     $form = Form::create($this, 'Form', $fields, $actions)->addExtraClass('forms')->setFormMethod('GET');
     if ($sofort->getPaymentUrl()) {
         $actions->add(FormAction::create('Submit', _t('Checkout.ConfirmPay', 'Confirm and Pay'))->addExtraClass('btn')->addExtraClass('btn-green'));
         $form->setFormAction($sofort->getPaymentUrl());
         // Set the Payment No to our order data (accessable by
         // onAfterIndex)
         $order->PaymentID = $sofort->getTransactionId();
     } else {
         $actions->add(LiteralField::create('BackButton', '<strong class="error">' . _t('Sofort.TransactionError', 'Error with transaction') . '</strong>'));
     }
     $this->customise(array("Title" => _t('Checkout.Summary', "Summary"), "MetaTitle" => _t('Checkout.Summary', "Summary"), "Form" => $form, "Order" => $order));
     $this->extend("onAfterIndex");
     return $this->renderWith(array("Sofort", "Payment", "Checkout", "Page"));
 }
开发者ID:i-lateral,项目名称:silverstripe-checkout-sofort,代码行数:40,代码来源:SofortHandler.php

示例9: doAddItemToCart

 public function doAddItemToCart($data, $form)
 {
     $classname = $data["ClassName"];
     $id = $data["ID"];
     $customisations = array();
     $cart = ShoppingCart::get();
     if ($object = $classname::get()->byID($id)) {
         $price = $object->Price;
         foreach ($data as $key => $value) {
             if (!(strpos($key, 'customise') === false) && $value) {
                 $custom_data = explode("_", $key);
                 if ($custom_item = ProductCustomisation::get()->byID($custom_data[1])) {
                     $modify_price = 0;
                     // Check if the current selected option has a price modification
                     if ($custom_item->Options()->exists()) {
                         $option = $custom_item->Options()->filter("Title", $value)->first();
                     }
                     $customisations[] = array("Title" => $custom_item->Title, "Value" => $value, "Price" => $option->ModifyPrice);
                 }
             }
         }
         if ($object->TaxRateID && $object->TaxRate()->Amount) {
             $tax_rate = $object->TaxRate()->Amount;
         } else {
             $tax_rate = 0;
         }
         $item_to_add = array("Key" => (int) $data['ID'] . ':' . base64_encode(json_encode($customisations)), "Title" => $object->Title, "Content" => $object->Content, "BasePrice" => $price, "TaxRate" => $tax_rate, "CustomisationArray" => $customisations, "Image" => $object->Images()->first(), "StockID" => $object->StockID, "ID" => $object->ID, "ClassName" => $object->ClassName);
         $cart->add($item_to_add, $data['Quantity']);
         $cart->save();
         $message = _t('Checkout.AddedItemToCart', 'Added item to your shopping cart');
         $message .= ' <a href="' . $cart->Link() . '">';
         $message .= _t('Checkout.ViewCart', 'View cart');
         $message .= '</a>';
         $this->setSessionMessage("success", $message);
     } else {
         $this->owner->setSessionMessage("bad", _t("Checkout.ThereWasAnError", "There was an error"));
     }
     return $this->redirectBack();
 }
开发者ID:helpfulrobot,项目名称:i-lateral-silverstripe-commerce-customisableproduct,代码行数:39,代码来源:CustomisableProduct_Controller.php

示例10: doAddItemToCart

 public function doAddItemToCart($data, $form)
 {
     $classname = $data["ClassName"];
     $id = $data["ID"];
     $cart = ShoppingCart::get();
     $object = $classname::get()->byID($id);
     $parent = $object->ProductGroup();
     if ($object && $parent) {
         if ($parent->TaxRateID && $parent->TaxRate()->Amount) {
             $tax_rate = $parent->TaxRate()->Amount;
         } else {
             $tax_rate = 0;
         }
         $price = (int) $object->Price ? $object->Price : $parent->Price;
         $image = $object->Images()->exists() ? $object->SortedImages()->first() : $parent->SortedImages()->first();
         $weight = $object->Weight ? $object->Weight : $parent->Weight;
         $item_to_add = array("Key" => $object->ID, "Title" => $parent->Title . " - " . $object->Title, "Content" => $object->Content, "BasePrice" => $price, "TaxRate" => $tax_rate, "Image" => $image, "StockID" => $object->StockID, "ID" => $object->ID, "Weight" => $weight, "ClassName" => $object->ClassName);
         // Try and add item to cart, return any exceptions raised
         // as a message
         try {
             $cart->add($item_to_add, $data['Quantity']);
             $cart->save();
             $message = _t('GroupedProduct.AddedItemToCart', 'Added item to your shopping cart');
             $message .= ' <a href="' . $cart->Link() . '">';
             $message .= _t('GroupedProduct.ViewCartNow', 'View cart now');
             $message .= '</a>';
             $this->owner->setSessionMessage("success", $message);
         } catch (ValidationException $e) {
             $this->owner->setSessionMessage("bad", $e->getMessage());
         } catch (Exception $e) {
             $this->owner->setSessionMessage("bad", $e->getMessage());
         }
     } else {
         $this->setSessionMessage("bad", _t("GroupedProduct.ThereWasAnError", "There was an error"));
     }
     return $this->redirectBack();
 }
开发者ID:helpfulrobot,项目名称:i-lateral-silverstripe-commerce-groupedproduct,代码行数:37,代码来源:GroupedProduct_Controller.php

示例11: complete

 public function complete()
 {
     $site = SiteConfig::current_site_config();
     $id = $this->request->param('ID');
     if ($id == "error") {
         $return = $this->error_data();
     } else {
         $return = $this->success_data();
     }
     $this->customise($return);
     // Extend our completion process, to allow for custom completion
     // templates
     $this->extend("onBeforeComplete");
     // Clear our session data
     if (isset($_SESSION)) {
         ShoppingCart::get()->clear();
         unset($_SESSION['Checkout.PostageID']);
         unset($_SESSION['Checkout.PaymentMethod']);
     }
     return $this->renderWith(array("Payment_complete_" . $this->payment_handler, "Payment_complete", "Checkout", "Page"));
 }
开发者ID:i-lateral,项目名称:silverstripe-checkout,代码行数:21,代码来源:Payment_Controller.php

示例12: complete

 public function complete()
 {
     $site = SiteConfig::current_site_config();
     $order = $this->getOrder();
     $id = $this->request->param('ID');
     if ($id == "error") {
         $return = $this->error_data();
     } else {
         $return = $this->success_data();
     }
     if ($order) {
         $return['CommerceOrderSuccess'] = true;
         $return['Order'] = $order;
     } else {
         $return['CommerceOrderSuccess'] = false;
         $return['Order'] = false;
     }
     // Clear our session data
     if (isset($_SESSION)) {
         ShoppingCart::get()->clear();
         unset($_SESSION['Commerce.Order']);
         unset($_SESSION['Commerce.PostageID']);
         unset($_SESSION['Commerce.PaymentMethod']);
     }
     return $this->customise($return)->renderWith(array("Payment_Response", 'Page'));
 }
开发者ID:helpfulrobot,项目名称:i-lateral-silverstripe-commerce,代码行数:26,代码来源:Payment_Controller.php

示例13: doAddItemToCart

 public function doAddItemToCart($data, $form)
 {
     $classname = $data["ClassName"];
     $id = $data["ID"];
     $customisations = array();
     $cart = ShoppingCart::get();
     if ($object = $classname::get()->byID($id)) {
         $price = $object->Price;
         foreach ($data as $key => $value) {
             if (!(strpos($key, 'customise') === false) && $value) {
                 $custom_data = explode("_", $key);
                 if ($custom_item = ProductCustomisation::get()->byID($custom_data[1])) {
                     $modify_price = 0;
                     // Deal with checkbox set fields to ensure data is a string
                     if (is_array($value)) {
                         $custom_value = implode(",", $value);
                     } else {
                         $custom_value = $value;
                     }
                     // Check if the current selected option has a price modification
                     if ($custom_item->Options()->exists()) {
                         $options = $custom_item->Options()->filter("Title", $value);
                         // If dealing with multiple results collect them, or return a single value
                         if ($options->exists() && $options->count() > 1) {
                             $custom_value = "";
                             foreach ($options as $option) {
                                 $modify_price = $modify_price + $option->ModifyPrice;
                                 $custom_value .= $option->Title;
                             }
                         } elseif ($options->exists()) {
                             $option = $options->first();
                             $modify_price = $option->ModifyPrice;
                         }
                     }
                     $customisations[] = array("Title" => $custom_item->Title, "Value" => $custom_value, "Price" => $modify_price);
                 }
             }
         }
         if ($object->TaxRateID && $object->TaxRate()->Amount) {
             $tax_rate = $object->TaxRate()->Amount;
         } else {
             $tax_rate = 0;
         }
         $item_to_add = array("Key" => (int) $data['ID'] . ':' . base64_encode(json_encode($customisations)), "Title" => $object->Title, "Content" => $object->Content, "BasePrice" => $price, "TaxRate" => $tax_rate, "CustomisationArray" => $customisations, "Image" => $object->Images()->first(), "StockID" => $object->StockID, "ID" => $object->ID, "ClassName" => $object->ClassName);
         // Try and add item to cart, return any exceptions raised
         // as a message
         try {
             $cart->add($item_to_add, $data['Quantity']);
             $cart->save();
             $message = _t('Commerce.AddedItemToCart', 'Added item to your shopping cart');
             $message .= ' <a href="' . $cart->Link() . '">';
             $message .= _t('Commerce.ViewCartNow', 'View cart now');
             $message .= '</a>';
             $this->setSessionMessage("success", $message);
         } catch (ValidationException $e) {
             $this->setSessionMessage("bad", $e->getMessage());
         } catch (Exception $e) {
             $this->setSessionMessage("bad", $e->getMessage());
         }
     } else {
         $this->setSessionMessage("bad", _t("Checkout.ThereWasAnError", "There was an error"));
     }
     return $this->redirectBack();
 }
开发者ID:i-lateral,项目名称:silverstripe-commerce-customisableproduct,代码行数:64,代码来源:CustomisableProduct_Controller.php

示例14: delivery

 /**
  * Use to catch the users delivery details, if different to their billing
  * details
  *
  * @var array
  */
 public function delivery()
 {
     // If we are using simple checkout, skip
     if (Checkout::config()->simple_checkout) {
         return $this->redirect($this->Link('finish'));
     }
     // If customer is collecting, skip
     if (ShoppingCart::get()->isCollection()) {
         return $this->redirect($this->Link('finish'));
     }
     // Check permissions for guest checkout
     if (!Member::currentUserID() && !Checkout::config()->guest_checkout) {
         return $this->redirect($this->Link('index'));
     }
     $this->customise(array('Title' => _t('Checkout.DeliveryDetails', "Delivery Details"), 'Form' => $this->DeliveryForm()));
     $this->extend("onBeforeDelivery");
     return $this->renderWith(array('Checkout_delivery', 'Checkout', 'Page'));
 }
开发者ID:i-lateral,项目名称:silverstripe-checkout,代码行数:24,代码来源:Checkout_Controller.php

示例15: getDiscount

 /**
  * Find the total discount amount for this line item
  * 
  * @return Float
  */
 public function getDiscount()
 {
     $amount = 0;
     $cart = ShoppingCart::get();
     $items = $cart->TotalItems;
     $discount = $cart->getDiscount();
     if ($this->BasePrice && $discount && $discount->Amount) {
         if ($discount->Type == "Fixed") {
             $amount = $discount->Amount / $items * $this->Quantity;
         } elseif ($discount->Type == "Percentage") {
             $amount = $this->Price / 100 * $discount->Amount * $this->Quantity;
         }
     }
     return $amount;
 }
开发者ID:i-lateral,项目名称:silverstripe-checkout,代码行数:20,代码来源:ShoppingCartItem.php


注:本文中的ShoppingCart::get方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。