Ryan ma świetny kod, który możesz programowo utworzyć zamówienie
<?php
global $user;
$product_id = 1;
// Create the new order in checkout; you might also check first to
// see if your user already has an order to use instead of a new one.
$order = commerce_order_new($user->uid, 'checkout_checkout');
// Save the order to get its ID.
commerce_order_save($order);
// Load whatever product represents the item the customer will be
// paying for and create a line item for it.
$product = commerce_product_load($product_id);
$line_item = commerce_product_line_item_new($product, 1, $order->order_id);
// Save the line item to get its ID.
commerce_line_item_save($line_item);
// Add the line item to the order using fago's rockin' wrapper.
$order_wrapper = entity_metadata_wrapper('commerce_order', $order);
$order_wrapper->commerce_line_items[] = $line_item;
// Save the order again to update its line item reference field.
commerce_order_save($order);
// Redirect to the order's checkout form. Obviously, if this were a
// form submit handler, you'd just set $form_state['redirect'].
drupal_goto('checkout/' . $order->order_id);
?>
http://www.drupalcommerce.org/questions/3259/it-possible-drupal-commerce-work-without-cart-module
Mam witrynę, na której chcę pobierać anonimowe datki, więc mam dwa problemy.
- Jeśli użytkownik nie jest zalogowany na stronie, otrzyma komunikat odmowy dostępu
- Proces realizacji zamówienia wymaga podania nazwy, adresu itp.
Chcę mieć stronę, na której potwierdzisz kwotę, a następnie przejdziesz na stronę płatności. W tym przypadku korzystam z PayPal WPS, więc przekierowanie byłoby świetne.
Wszelkie porady, które możesz udzielić, będą mile widziane.
Odpowiedzi:
Możesz spróbować przetestować nowy moduł o nazwie Commerce Drush, który ma następującą składnię:
Rozwiązanie ręczne
Aby programowo utworzyć zamówienie w Commerce, możesz użyć następującego kodu (działa również z drush, np
drush -vd -u "$1" scr order_code-7.php
.). Należy pamiętać, żecommerce_payment_example
moduł jest wymagany.Uwaga: Zgodnie z sugestią w komentarzu, jeśli masz błąd o metodzie płatności jest nieznany podczas zapisywania zamówienia, upewnij się, że określono je, na przykład
źródło
Ten zmodyfikowany skrypt działa również dla anonimowych użytkowników:
źródło
Musisz dodać commerce_cart_order_session_save (), aby anonimowy użytkownik miał sesję, aby połączyć przeglądarkę z zawartością koszyka.
źródło
1. Jeśli użytkownik nie jest zalogowany na stronie, otrzyma komunikat odmowy dostępu
Mam coś działającego, ale bardzo wątpię, żeby to była najlepsza praktyka.
W końcu oszukałem. W moim formularzu, w którym podajesz swoje dane, w tym adres e-mail, tworzę konto użytkownika w locie, a następnie loguję się. Jeśli adres e-mail jest gotowy do użycia, loguję użytkownika. (Upewnij się, że nie używasz adres e-mail administratora).
Ponieważ moja witryna ma tylko stronę formularza darowizny, gdy trafisz na tę stronę, musisz się wylogować (jeśli nie jesteś administratorem). Po udanej transakcji wylogowuje Cię. Wyłączyłem historię zamówień / umieściłem przekierowania w miejscu, abyś mógł wchodzić tylko na strony, o których wiem, kiedy jestem zalogowany. Żadne dane osobowe nie są przechowywane i nie widzę dawnych datków
W mojej sytuacji jestem zadowolony z tego, jak to działa. To nie jest idealne i będzie działać tylko w kilku przypadkach.
2. W procesie kasowym wymagane jest podanie imienia i nazwiska, adresu itp.
Poszłam do
/ admin / commerce / config / checkout
I wyłączone
źródło