PHP - From Shopping To Checkout
This is part PHP, part MySQL question, but since I'm more interested in the process-flow, I'll ask here. I am ready to start coding the e-commerce module of my website, which features mostly paid subscriptions.
Do the below steps sound like the correct sequence to do things in...
- Anonymous shopper adds subscription to Shopping Cart - Shopper goes to check out - Shopper completes checkout form which includes setting up the account and entering payment details Now for the important stuff... - System takes Shopping Cart details - which include the PHPSessionID - System creates Member record - System takes Shopping Cart details associated with PHPSessionID and links them to the new Member record - System creates Order and Order Details records - System runs the payment - System hopefully gets back a "success" message from Payment Processor - System activates the Member's account
How does that sound at a high-level?
Really what I'm trying to validate is if I should create the Member record 1st, then create the Order records 2nd, and worry about the payment last. (Originally I was going to run the payment first, but I'm thinking it's better to capture the anonymous shopper's details in a Member record and Order records first, because even if the paymnt fails, you want something to work off of - like reaching out to the person and getting another valid payment.)
Thoughts?
Similar TutorialsHi, I'm building a webshop and im stuck at the checkout. I'm using this Shopping Cart class http://www.webforcecart.com/manual.html The cart is stored as an object in $_SESSION[cart]. This method Code: [Select] print_r($cart->get_contents());would get this as output: Array ( => Array ( [id] => 7 [qty] => 1 [price] => 11.00 [info] => Test [subtotal] => 11 ) [1] => Array ( [id] => 6 [qty] => 2 [price] => 19.00 [info] => White 0 [subtotal] => 38 ) ) In the table Order I would like to store order-id customer-id total products total quantity total price date In the table Orderrow I would like to sto order-id, product-id, product-name, quantity, price, subtotal I know i can get the order-id with the function mysql_insert_id() but how can i store each product in the array with their info in the table Orderrow? Or is there a better way to do this? please advice me, thank you. Hi, I was wondering if someone can help. I am trying to implement a server to server Google checkout system on my website. I have built my own custom shopping basket which meets my needs however I need to get my data in the correct format to send off for the payment to be taken by Google checkout. At present I have a sql table called basket which stores all of the items that a user adds to thier basket. The google checkout examle requires the data in the below format: Code: [Select] $item_1 = new GoogleItem("product name ", // Item name "With S/N", // Item description $total_count, // Quantity 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); The above code is obviously for just the one item. Is it best to store the basket in a sql database and if so how would I go about retrieving the information from the database and then sending it to google in the above format bearing in mind there can be multiple items in the cart? Thanks in advance Edd hi, I'm integrating google checkout on my website using php. anyone have any idea if google checkout take payment on website just like paypal payment pro??? Looking forward. Best regards I could use some suggestion on how to model the Checkout Process for my e-commerce site. As I see it, when a person "checks out" there are 5 steps... 1.) Create an Account/Log-In 2.) Enter Addresses 3.) Choose Shipping Options 4.) Enter Payment Details 5.) Review & Place Order I'm trying to avoid having gigantic "God classes" and struggling to figure out how to abstract things in good OOP terms. My Head First: Design Patterns book talked about the "State Pattern" and I'm wondering if that might be a good approach? Maybe each of the 5 steps above could be a "state" in the Checkout Process? What do you think? TomTees Hey guys! I need your help with some issues. Firstly, I have an own website with a database filled with products, and also a template page(template.php) for each product. Problem is that I don't know how to generate each product from the database in the template.php file using their id from the database. How can I do this? Second problem, I got an own checkout and I don't know how to redirect the customer to a "thank you for buying" page after clicking "Finish Order". It sends the customer to a white page where it says: "Thanks for buying!". Third and last thing, do you guys know where can I find a php checkout template to follow? Thanks in advance for your answers! Cheers! Hi, I have set up a simple shopping cart with a coupon code function. I am having an issue with the Update basket and Checkout buttons, when you click update basket it loads the /checkout/ page but then redirects back to the /cart/ after a couple of seconds when it should just load a new page saying 'Shopping basket successfully updated' - also, when you click the proceed to checkout button it does the same, loads the /checkout/ page (which is correct) but then redirects back to /cart/. Here is the php code I have setup: // View Shopping Basket if (!isset($_GET['action']) || $_GET['action'] == 'products') { // Check if the shopping basket is empty if ($cart->get_num_products(session_id()) <= 0) { output('Your shopping basket contains no products!'); } else { if (!isset($_POST['submit'])) { $tpl->set('body', $body->fetch('index.tpl.php')); } else { $cart->update_contents(session_id()); output('Shopping basket successfully updated!'); redirect('/cart/', 2); } } } // Add Product to Cart if (isset($_GET['action']) && $_GET['action'] == 'add_product') { $product_id = isset($_GET['product_id']) && is_numeric($_GET['product_id']) ? (int) $_GET['product_id'] : 0; $cart->add_product(session_id(), $product_id, 1); output('Product successfully added! Please wait while we redirect you to your shopping basket.'); redirect('/cart/', 2); } if (isset($_SESSION['coupon_code'])){ unset($_SESSION['coupon_code']); } if (isset($_POST['go']) && $_POST['go'] != ''){ $_SESSION['coupon_code'] = $_POST['coupon_code']; header("location:/checkout/"); } Here is the HTML for the form: Code: [Select] <h1>My Basket</h1> <form method="post" action="/cart/"> <input type="hidden" name="submit" value="Update" /> <input type="hidden" name="go" value="true" /> <table class="tableGrid"> <tr> <th width="10%"><strong>Remove:</strong></th> <th width="60%"><strong>Product Name:</strong></th> <th width="10%"><strong>Price:</strong></th> <th width="10%"><strong>Qty:</strong></th> <th width="10%"><strong>Total:</strong></th> </tr> <?php foreach ($GLOBALS['cart']->get_contents(session_id()) as $product) { ?> <tr> <td align="center" width="10%"><input type="checkbox" name="delete<?php echo $product['cart_id']; ?>" value="yes" /></td> <td width="60%"><a href="<?php echo get_url('/products/', $product['category_id'], $product['product_id'], $product['product_name']); ?>"><?php echo $product['product_name']; ?></a> <span class="important">* <?php echo $product['stock'] >= $product['quantity'] ? 'Available' : 'Not Enough In Stock'; ?></span></td> <td width="10%" align="center"><?php echo get_price($product['price']); ?></td> <td width="10%" align="center"><input type="text" name="quantity<?php echo $product['cart_id']; ?>" value="<?php echo $product['quantity']; ?>" maxlength="10" style="width: 30px;" /></td> <td width="10%" align="center"><?php echo get_price($product['price'] * $product['quantity']); ?></td> </tr> <?php } ?> </table><br /> <div class="main_box" style="height: 26px;"> <div style="float: right;">Subtotal: <strong><?php echo get_price($GLOBALS['cart']->get_cart_total(session_id())); ?></strong></div> <div style="float: left;"> <label><strong>If you have a promotion voucher code please enter it he </strong></label> <input type="text" name="coupon_code" id="coupon_code" value="" /> </div> </div><br /> <div align="center"><input type="image" src="<?php echo '/' . $config['image_path']; ?>button_cart_update.gif" border="0" alt="Update Shopping Basket" /> <a href="/shop-11/"><img src="<?php echo '/' . $config['image_path']; ?>button_continue.gif" border="0" alt="Continue Shopping" /></a> <input type="image" name="checkout" src="<?php echo '/' . $config['image_path']; ?>button_checkout.gif" border="0" alt="Proceed to Checkout" /></div> </form> If anybody can spot whats wrong I would really appreciate it. - It is probably something so simple but I am finding ti quite frustrating. Thanks, Paul Hi all, I am looking to integrate Paypal Express checkout on my site and have been working with the API today. I have got the code working in a static state with predefined payment amounts but I am having trouble making this dynamic. When you first submit a request to set up an express checkout you send the payment amount along with it. The paypal server then makes the checkout and the user is redirected to the paypal site to login and authenticate. From here they click to be redirected back to my site where I have a pay button which when clicked submits the final request to confirm the payment. I am sure there must be a simple solution to this because so many people use paypal already but when you submit the final confirmation request, you have to send the payment amount again, but because the page redirects onto the paypal page inbetween, I can't use a session variable to store the amount. How have other people overcome this? Thanks This topic has been moved to Other Libraries and Frameworks. http://www.phpfreaks.com/forums/index.php?topic=306254.0 Hi, Firstly, apologies if this is in the wrong place in the forum to post this. I have a website, I use PHP in various places to pull/push info from/to a mySQL database, i'm fairly happy with PHP and its uses. I've recently started to use the Google checkout widget on the site for a proposed webstore (to go live at a later date), this has the ability to 'sell' download URL's or keys. I like the idea of a customer being able to purchase multiple MP3 downloads and them being given a URL that gives them the links for the MP3's selected. This is probably beyond anything i've ever done with PHP though so I need to understand the architecture........I understand that, given a list of items from the store, I can run a query to display a list of stored URL's for those items - and I'm sure I can find code that will give me a random URL that will 'expire' after an amount of time. My question is, how to get the list of items ordered from the google checkout?? I'm sure this has something to do with API's - but I don't know what they are, presumably there is some kind of table in Google that I can tap into to get the product info?? any help would be very much appreciated. ....oh, and i'm sure people are going to ask "why are you using Google checkout", the answer being, for me, it seems simple, effective and free! (but i'm open to suggestions.) Darren Dear forum, I`m always trying hard, but after 5 hours I really need some help in php coding. My problem deals with my checkout page for woocommerce. At the moment, my legal terms are above the total-order-table where u can find the booked product, order-subtotal, order-total and tex-total. But I need to display the legal terms under my total-order table. I need the terms directly above the "Buy now" button. Do you guys know which file to modify ? I tried everything. Nothing worked for me. You will find a picture in this post. There you can see my problem. Would be pretty nice if you can give me some information. Kind regards,
Need some help on developing the steps below I am working on a website money collection system that consist of stores affiliating to the website and sales their products in the website as independent stores. But I am not sure how to collect the percentage I will deduct per transaction for the stores. I have elaborated two plans but I don't know is those a good ideas in terms of bringing more store in to the website and have them comfortable by the way the website hold business with their stores owners. 1- I was thinking of collecting all the money of transactions into a single paypal account and then try to pay them weekly or in a monthly basis. (I am not sure about this first option because I don't know whether the store owners will be thinking to much into it at the time of making a decision to register and to sell their products in the website. I guess they might think whether the website administrator will delivery the money every week, or if the website administrators are going to steal them etc. So this option I don't know if with some changes can be implemented. 2- The second option was to let each store administer each transaction with their credit/debit machine they have at the store and make the transaction right there and then on a monthly or weekly basis the website administrator charge them for the amount of transaction done during that time period in the website. 3- Third option is create a paypal account for each store and at the moment of the transaction to transfer the money to each store account and have the website paypal account deduct its percentage from the transaction and have the store owner paypal account deduct its part. For healthy business purpose and website grow in terms of acquiring more stores into the website which of those three options would be the best option to choose or if there is another idea even better for business grow and comfortability among stores owner that you guys might have in mind share it. Is selecting an option relevant to the grow of the website or it is? co.ador Hey all not been on here for a few years, been out of work. i am back and throwing ,myself straight into the deep end. Is it hard to integrate a shopping cart into a website. Any good example snippets of code to look at? I have a little search but someone always seems to know a better one. Why are almost all tutorials these days you have to pay for (times are getting hard ). Hi everyone, I am building a shopping cart for a group of friends' website. It is a pay-per-view workout website. Basically, they want to let people find workout videos and pay on a per-day basis (1 day, 3 days, 7 days and depending on the video pricing will be different). I have set them up everything except I am having some difficulty with the shopping cart. I took the basics of the shopping cart script from a tutorial I found online and then modified it. The only problem is that most shopping carts send an action and a product id through the URL and into the session for the shopping cart. Well, I need to also send a price id variable so that the cart will know which price to use. This is because they want to offer pricing on a per-day basis. How would I modify the cart.php page to accomplish this? I have tried, but cannot get the entire thing to work. All help is appreciated. Below is my code: Code: [Select] <?php // if no session is set, initiate one if (!isset($_SESSION)) { session_start(); } // see if the customer is logged in //if (!isset($_SESSION['customer_id'])) //{ //header("location:login.php"); //} // connect to the database require_once('connect.php'); // select the database mysql_select_db($database, $connect); // get the video information if (isset($_GET['video_id'])) { $video_id = $_GET['video_id']; } else { $video_id = 1; } // get the action if (isset($_GET['action'])) { $action = $_GET['action']; } else { $action = "empty"; } // get the video pricing information if (isset($_GET['price_id'])) { $price_id = $_GET['price_id']; } else { $price_id = ""; } // do the following code based on the action switch($action) { // if the action is add then add the product id to the cart session array case "add": if (isset($_SESSION['cart'][$video_id])) { $_SESSION['cart'][$video_id]++; } else { $_SESSION['cart'][$video_id] = 1; } break; // if the action is remove then remove the product id from the cart session array case "remove": if (isset($_SESSION['cart'][$video_id])) { $_SESSION['cart'][$video_id]--; if ($_SESSION['cart'][$video_id]==0) { unset($_SESSION['cart']); } } break; // if the action is empty then remove the cart session array completely case "empty": unset($_SESSION['cart']); break; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta name="Description" content="Information architecture, Web Design, Web Standards." /> <meta name="Keywords" content="your, keywords" /> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link rel="stylesheet" href="layout.css" type="text/css" /> <title>Straight Muscle Videos...Pay-Per-View Alpha Male Muscle Worship Videos</title> </head> <body> <!--wrap starts here--> <div id="wrap"> <?php include('header.php'); ?> <?php include('menu.php'); ?> <!--content-wrap starts here--> <div id="content-wrap" class="two-col"> <?php include('sidebar.php'); ?> <!--main content starts here--> <div id="main"> <h1>Shopping Cart</h1> <br /> <?php if (isset($_SESSION['cart'])) { $total = 0; ?> <table width="95%" border="0" cellspacing="0" cellpadding="5"> <?php foreach($_SESSION['cart'] as $video_id => $x) { $query = mysql_query("SELECT VideoId, VideoTitle, PriceId, PriceVideoId, PriceAmount, PriceTimeId, TimeId, TimeTitle, TimeLength FROM Video, Price, Time WHERE VideoId = $video_id AND PriceId = $price_id AND PriceVideoId = $video_id AND PriceTimeId = TimeId", $connect); $row = mysql_fetch_array($query); $video_name = $row['VideoTitle']; $order_length = $row['TimeTitle']; $video_price = $row['PriceAmount']; $line_cost = $video_price * $x; $total_cost = $total + $line_cost; ?> <tr> <td align="left" valign="middle"><?php echo $video_name; ?></td> <td align="center" valign="middle"><?php echo $order_length; ?></td> <td align="center" valign="middle"><?php echo "$".$line_cost; ?></td> <td align="center" valign="middle"><a href="cart.php?action=remove&video_id=<?php echo $video_id; ?>&price_id=<?php echo $price_id; ?>">Remove</a></td> </tr> <?php } ?> <tr> <td colspan="4" bgcolor="#666666"><span class="shopping_cart">Purchase Total: $<?php echo $total_cost; ?></span></td> </tr> </table> <div align="center"> <form id="shopping_cart" method="post" action="confirm.php"> <input type="submit" name="place_order" id="place_order" value="Place Order" /> </form> </div> <div align="center"> <p><a href="search.php">Continue Shopping</a></p> <p><a href="cart.php?action=empty">Empty Cart</a></p> </div> <?php } else { echo "<br /><br /><div align='center'>There are no items in your cart.</div>"; } ?> <!--main content ends here--> </div> <!--content-wrap ends here--> </div> <?php include('footer.php'); ?> <!--wrap ends here--> </div> </body> </html> Can someone give me name of free shopping cart with auctions(offers) like Open Classifieds ? i make a shopping cart,but it dont show the product i have choose. it suppose to show the product i choose at the cart table but its still show the "Your Cart is empty" result..im still new.i follow the instruction from the youtube.sorry for my bad english.
here is the index2.php code
<? session_start(); require("connection.php"); if(isset($_GET['page'])){ $pages=array("products", "cart"); if(in_array($_GET['page'], $pages)) { $_page=$_GET['page']; }else{ $_page="products"; } }else{ $_page="products"; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Untitled Document</title> <body> </body> </html> <link rel="stylesheet" href="style2.css" /> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script> <script type="text/javascript"> $(function() { }); </script> </head> <body> <div id="container"> <div id="main"> <?php require($_page.".php"); ?> </div> <div id="sidebar"> <h1>Cart</h1> <?php if(isset($_SESSION['cart'])){ $sql="SELECT * FROM products WHERE id_product IN ("; foreach($_SESSION['cart'] as $id => $value) { $sql.=$id.","; } $sql=substr($sql, 0, -1).") ORDER BY name ASC"; $query=mysql_query($sql); while($row=mysql_fetch_array($query)){ ?> <p><?php echo $row['name'] ?> x <?php echo $_SESSION['cart'][$row['id_product']]['quantity'] ?></p> <?php } }else{ echo "<p>Your Cart is empty</p>"; } ?> </div> </div> </body>and this is the products.php code <?php if(isset($_GET['action']) && $_GET['action']=="add"){ $id=intval($_GET['id']); if(isset($_SESSION['cart'][$id])){ $_SESSION['cart'][$id]['quantity']++; }else{ $sql_s="SELECT * FROM products WHERE id_product={$id}"; $query_s=mysql_query($sql_s); if(mysql_num_rows($query_s)!=0){ $row_s=mysql_fetch_array($query_s); $_SESSION['cart'][$row_s['id_product']]=array( "quantity" => 1, "price" => $row_s['price'] ); }else{ $message="This product id it's invalid!"; } } } ?> <h1>Product List</h1> <?php if(isset($message)){ echo "<h2>$message</h2>"; } ?> <table> <tr> <th>Name</th> <th>Description</th> <th>Price</th> <th>Action</th> </tr> <?php $sql="SELECT * FROM products ORDER BY name ASC"; $query=mysql_query($sql); while ($row=mysql_fetch_array($query)) { ?> <tr> <td><?php echo $row['name'] ?></td> <td><?php echo $row['description'] ?></td> <td><?php echo $row['price'] ?></td> <td><a href="index2.php?page=products&action=add$id=<?php echo $row['id_product'] ?>">Add To Cart</a></td> </tr> <?php } ?> </table> Hi All I have my shopping cart working correctly, just a small tweak which i would like to make to it. Here is the code i currently use... Code: [Select] echo '<p>' . $fldname . ' <a href="cart.php?action=add&id=' . $row['idinfo'] . '">Add to report</a></p>'; But i want it so that when i click 'Add to report' is does not take me to cart.php, but it still adds the item into the shopping cart. kind of just refeshs the current page? Im sure it is only a small tweak which needs to be done.. Any help would be great -Dream I'm not a programmer but can get buy a little with PHP. My need is a "Shopping Cart" and this is what I would like to see.
I have a MotoCMS web site and would like to but a shopping cart in one page all I need is a "Buy Now" button that can hold the "Item Name" "Price" and "Quantity" and Maybe a selectable option? And a "Cart" for my PayPal that I can put anywhere on the page. If I have to use a database that is OK.
I can put the product pictures and info on the page and then a Buy Now link button would be great.
Does anyone know of a shopping cart that I can use to do this?
Lon
Edited by Lon, 28 September 2014 - 09:07 PM. Hey, I'm having some problems getting my store website to show the contents of a shopping cart. At the moment all the IDs of the items that have been added to the basket are being stored as $basket = $_SESSIONS['basket']. This is the function I have to show those items, but it's not showing up anything. Can anywhere see the problem or offer some help? Thanks Code: [Select] function showBasket() { $basket = $_SESSION['basket']; if ($basket) { $items = explode(',',$basket); $contents = array(); foreach ($items as $item) { $contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1; } $output[] = '<form action="basket.php?action=update" method="post" id="basket">'; $output[] = '<table>'; foreach ($contents as $id=>$qty) { $sql = 'SELECT * FROM store WHERE id = '.$id; $result = $db->query($sql); $row = $result->fetch(); extract($row); $output[] = '<tr>'; $output[] = '<td><a href="basket.php?action=delete&id='.$id.'" class="r">Remove</a></td>'; $output[] = '<td>'.$title.' by '.$author.'</td>'; $output[] = '<td>£'.$price.'</td>'; $output[] = '<td><input type="text" name="qty'.$id.'" value="'.$qty.'" size="3" maxlength="3" /></td>'; $output[] = '<td>£'.($price * $qty).'</td>'; $total += $price * $qty; $output[] = '</tr>'; } $output[] = '</table>'; $output[] = '<p>Grand total: <strong>£'.$total.'</strong></p>'; $output[] = '<div><button type="submit">Update basket</button></div>'; $output[] = '</form>'; } else { $output[] = '<p>You shopping basket is empty.</p>'; } return join('',$output); } |