Jump to content


  • Content count

  • Joined

  • Last visited

Posts posted by Carbon

  1. Hi Carbon!


    Did you write if for VSP Server or VSP Direct?

    More than happy to look at it! (Especially Server)






    It uses the VSP Direct protocol 2.23


    If you'd like to test, just follow the instructions in the original post.


    Many thanks



  2. Probably best posted in the feedback forum: http://forums.oscommerce.com/index.php?showforum=14




    I didn't post in the feedback forum as most posts there seem to be quite generalised (Please review my site etc), where as I'm after feedback on what occurs between clicking "Confirm" and reaching the success page only.


    In other words, just the payment gateway code for which I thought this forum would be a better place to post.


    Apologies if I got it wrong and feel free to move the topic if you feel I'll get more/better feedback elsewhere.





  3. Hi,

    I have developed my own SagePay payment module and gateway and would like some feedback on the presentation and implementation.


    Before you begin...


    1: The site is NOT live so there is no risk of accidentally placing a real order.

    2: All product images/descriptions/prices are temporary place-holders.

    3: The gateway only connects to the SagePay simulator server at present.


    ...for your convenience, here's a quick guide to get you to checkout as quickly as possible.


    STEP 1: Visit the order site using this url: https://www.microbuild.com/order.html


    STEP 2: Click the Information button for any of the four PC systems.




    STEP 3: Click the Add to Order button.




    STEP 4: Click the Place Order button.




    STEP 5: Click the My Details tab or panel.




    STEP 6: Enter real or fake details. To receive confirmation you will need to enter a real email address.




    STEP 7: Click the Payment tab or panel.




    STEP 8: Click the Debit/Credit Card payment option button.




    STEP 9: Enter your test-card details (e.g. 4111111111111111).




    STEP 10: Click any of the Confirm Order buttons.




    STEP 11: Click any response button in the SagePay simulated 3DSecure popup window.




    STEP 12: Provided everything is okay, you'll be redirected to the success page - all done.




    If you're feeling particularly adventurous you might want to try the following missions...


    1: Process an order using Step-by-Step checkout mode.

    2: Process an order using By-Section checkout mode.

    3: Switch the Place Order page to scrolling display layout.

    4: Process an order that contains a Custom PC.

    5: Process an order that contains a Bespoke PC.

    6: Process an order that has a selection of Preconfigured, Custom and Bespoke PCs.



    Thanks in advance for any useful feedback you can offer.





  4. The PROTX simulator now only works with the very latest version of the PROTX API.


    No contribution has been written as yet to support the new API therefore the only way to test is to have a test account at the moment. Test accounts still work with the older API.




    I'm not using any contributions and have written my own payment module and payment process. As stated, everything was peachy until last night with NO code changes my end. Plus of course, I have no influence over the availability of the simulator login page which simultaneously went offline.





  5. Hi,


    Yesterday at approx 18:30 the Protx simulator was returning an INVALID status in response to the initial registration post. Knowing that I hadn't changed anything I tried to log into my simulator account using my usual url of... https://ukvpstest.protx.com/VSPSimulator/loginpage.asp and found that it was unavailable with HTTP 500 Internal Server Error.


    I was expecting the issue to be resolved over night but the issue is still present today. Interestingly, I also had this simulator login url... https://test.sagepay.com/simulator/ so out of curiosity I tried it and was able to log into my account and access transactions, vpsdirect, account etc as normal. The page looks slightly different from usual with "Sage" branding.


    To test further I checked my debug output and discovered that the simulator was no longer recognising my IP address (which is strange as my server has a fixed IP) and that the IP address it suggested I add seemed out of range compared to the previously working one.


    Any ideas what's going on here?


    Many thanks



  6. Hi Guys,


    I've managed to create a hybrid version of CCC that starts with a Preconfigured system.


    If the customer then clicks the Add to Order button the CCC adds it to your order as a normal product from your catalouges.


    If the customer then changes any of the default selections the Preconfigured system is automatically converted into a Custom system.


    If the customer specifies (i.e. not in catalogues) any component then the system is automatically converted into a Quote.


    Click here to see an example






    PS: I'm looking for testers so pm if interested.

  7. Hey guys great mod. Just wondering what other people have done with this mod to make it suit there needs. Im wanting to use this mod but change a few things one thing is send the items as there own product to the shopping cart not as a bundled product. Just wondering if anyone has had any luck with doing that?


    Hi Glycerine (Cool handle btw),


    I'm guessing that you dont have OSC (OSCommerce) or CCC (Custom Computer Configurator) installed as your question is a bit confusing. By default OSC is designed to sell individual items, so you could easily sell a single component or multiples. When you add the CCC modification it adds the ability to group products from within OSC and create a new product based on the customer's selections.


    Hope that answers your question.



  8. Hi Guys,


    It's been a while so I thought I'd drop by and let you know what I've managed to do with my CCC installation. The latest addition is the ability to let the customer tailor their Windows Desktop environment (Wallpaper, pointers etc).


    Anyhoo, the interesting bit is that I came up with a unique spin on the old "Radio Button" problem (ie nobody can get the buggers to work). What I did was to create a wrapper that acts as a go-between the presentational code (nice image buttons) and the original <select> dropdown menu (which is then hidden).


    If you're interested in taking a look, testing or commenting then read this article and follow the link...


    Read the news article

  9. Because I don't have to sign up to any lengthy contracts I have decided to try PayPal, although this is just to test it for myself so I'm not ruling out other solutions.


    I have signed up and been approved for PayPal Website Payment Pro. I have completed all of their requirements and I'm now at the point where you would normally start to upload files to test, and there's the rub.


    There seems to be very little in the way of documentation about, so next question...


    What contribution do I need?


    Is it this one? http://addons.oscommerce.com/info/6244


    or this one? http://addons.oscommerce.com/info/3647


    or something else?



    Thanks for any help, and apologies if this is old news but I wanted to ask before I spend time researching as there's no point in re-inventing the wheel.



  10. Cheers Alex, I'll check them out (no pun intended).


    I've heard that PayPal can be a bit ruthless when it comes to disputes and that they will reverse the payment if the customer so much as raises an arm but won't do a thing for the retailer even if they are right. I've also heard of a lot of retailers having their PayPal account frozen and assets seized.





  11. Hi,


    Which payment gateway provider would you recommend?


    1: I'm a UK based business.

    2: Custom PC sales, so each order will generally be one item with high value.

    3: Business bank account currently with LLoyds TSB Plc.

    4: Needs to accept all major credit/debit cards.

    5: Must NOT redirect the customer to a different site.

    6: Must be able to style any additional pages to match site.

    7: Must charge reasonable rates.

    8: Must have a good reputation (and hopefully a recognisable brand).

    9: Funds available from my account quickly.

    10: Ideally, they store the CC info on their servers.

    11: Terminal facilities in case I have to refund or add additional cost.


    Thanks in advance



  12. Hi Carbon


    Your code information work just fine, thanks for yur help.

    Now I found another little problem, when i pass the information from custom_checkout.php to shopping_cart.php, the total values from the build, is greater than the totals of the build plus the tax.These problem only happens with custom computer, the other regular products the totals are correct.

    I think that the problem lies on the about line 188 of the shopping_cart.php.


    But I can't understand very well that part of code, specialy the relation bettween the currencies variavel and that function dsplay_price, and in what file is located the fuction.

    This problem repeats through the rest of the process of the order.

    If you could bring me some light in this matter I will be greatful.

    Thanks onceagain your cooperation and pacience.


    Hi Mribeiro,


    Whenever I get stuck like this I follow the "code path" from it's source to the target page and place javascript alerts along the way to test for things like correct variables.


    So in this case the code begins in build.php with...

    <input type="hidden" name="Total" id="Total">

    ...around line 227 (notice the capital T in Total), so to check what's in there I would place the following bit of temp code somewhere on the page...

    <a href="java script: alert(document.getElementById('Total'))">TEST</a>


    Once you have confirmed that the expected value is present we then continue to follow the "code route" to custom_checkout.php. The "Total" variable is injected into custom_checkout.php around line 55 with...

    $products_total = $HTTP_POST_VARS['Total'];

    ...so again place some temp checking code like...

    echo $products_total;

    ...and again check to see if the value is the same as it was in build.php.


    The next thing that happens to the variable (now a php string $products_total) is it gets manipulated if you have "Build" and/or "Warranty" enabled so make sure these are turned off, 1: because you want to keep the "code route" as clean as possible, 2: because I have experienced incorrect tax with these two items and 3: because I say so ;)


    Now that "Build" and "Warranty" are disabled the next thing that happens is the variable is prepared for insertion into the database around line 81...

    						 'products_price' => $products_total,

    ...and actually inserted around line 99...

    	 tep_db_perform(TABLE_PRODUCTS, $product_array);


    Nothing else happens to $products_total on this page but it would be worth putting some test code in the html body and turning build and warranty back on to see if the value is different from earlier...

    <script>alert('<?php echo $products_total;?>');</script>

    ... my money is on build and/or warranty but if not get back to me and I'll continue with the next page shopping_cart.php


    Good luck




  13. hello,


    Sorry i am back again, but i cant seem to edit existing posts.


    Now i have just discovered that every time i build a system, that this is added as a new product in the database. Very annoying, but if i turn this function out, it does not add to the cart. How can i get around this?






    Hi Matt,


    I looked at the "build price" and "warranty" during early development and came to the conclusion that it was a bit buggy (in my case it was incorrectly calculating tax) and seeing as I didn't need them I didn't investigate further so I won't be able to assist directly, however... thinking outside of the box, you could just create a fake product called "build" and have build.php add it to the total cost just like a normal component.


    This method would also allow you to offer variants like "build with/without cable management" etc and would also allow you to offer further information from the "More Info" button. You could also offer different types of warranty ( 1, 2 and 3 years etc) so I think it would be a much better solution than a single radio button.


    Hope this helps





    EDIT: Ref your problem with custom builds showing up as new products in OSC, which has cropped many times before... What you will need to do is first identify all pages that are effected and then find the bit of code that displays the product and use something like this...


    if ($products[$i]['model'] != "Custom"){
    Enclose the product rendering code here


    The $products bit might not be correct (depends on the page) so you will have to determine what the code loop is referencing.

  14. hi,


    I have installed the contrib now, and it seems to work, but once i go on to put the system in my cart, my cart shows empty.


    So what i do is selecting each part. The total amount is correct and on top is a list of my configuration. I click on submit form, i come to the page that correctly mentions all parts i have selected, then i click add to cart, but my cart shows up empty. What could be wrong?






    Hi Matt,


    Thanks for the positive feedback above. Have you set the V.A.T. (Tax) rate? There's a bit of code that basically takes the total value of your build (custom pc) and multiplies it by the tax rate just before the build gets added to the shopping cart so if the tax rate is 0 (zero)... £999 X 0 = 0.


    In the admin panel of OSC click the "Locations / Taxes" menu in the left panel and configure the tax rate.


    Good luck



  15. Hi Carbon

    My problem with the quantity box is, where hi should put the code, inside the get parts function in custom_computer.php or in the build.php near the get_parts_fucntion?

    And what function should be fired after a change is made in the quantity box?

    Another thing is passing this information along to the next files (custom_chekout.php and so on).

    Could you give me some guidance in this matter.

    In the past I've another problem with the total price don't pass to the custom_chekout.php file, and to solve it I've lost 2 weeks.

    So because that I'm asking you some clues and ideas where should I start the modifications, preventing my self from being lost on the code, and to mess with it.


    Thanks in advance for your cooperation and pacience.


    Hi Mribeiro,


    Here's some (untested) code to get you started...


    1: In build.php, locate the following around line 110...

    		<td class="infoBoxContents" width="80%" colspan="4"><div id="drop<?php echo $i;?>"><?php echo tep_get_parts_list('new'. $i, $count['cat_id'], ${'new' . $i}, $systype, $fsb);?></div></td>

    ... and replace with...

    		<td class="infoBoxContents" width="10%"><input type="text" size="2" maxlength="2" id="itemqty<?php echo $count;?>" name="itemqty<?php echo $count;?>" value="1"></td>
    	<td class="infoBoxContents" width="70%" colspan="3"><div id="drop<?php echo $i;?>"><?php echo tep_get_parts_list('new'. $i, $count['cat_id'], ${'new' . $i}, $systype, $fsb);?></div></td>


    2: In java.php, locate the following around line 161...

    echo "var _y" . $j . " = eval(_x" . $j . ")\n";

    ... and replace with...

    echo "var itemqty" . $j . " = document.builds.itemqty" . $j . ".getAttribute(\"value\")\n";
    echo "var _y" . $j . " = eval(_x" . $j . ")*itemqty" . $j . "\n";


    3: In custom_checkout.php, locate the following around line 50...

    		   $message .= '<tr><td class="smallText">' . $count['cat_name'] . ':</td><td class="smallText">' . $HTTP_POST_VARS['new' . $i] .'</td></tr>';

    ... and replace with...

    		   $message .= '<tr><td class="smallText">' . $count['cat_name'] . ':</td><td class="smallText">' . $HTTP_POST_VARS['itemqty' . $i] .'×' . $HTTP_POST_VARS['new' . $i] .'</td></tr>';


    That should be enought to start with but like I said, I haven't tested it as I don't have a "default" instalation online. The only prob I can see is that item quantities will be reset to 1 if the customer edits the build after it has been added to the shopping cart.


    Good luck



  16. Hi I'm tring to do the same thing that is to put a text box for quantity in front of the drop down list for how do you do it, I've revised the code and I can't find the solution.

    Can you help me in this matter.


    Thanks in advance


    Hi Mribeiro,


    As you're probably aware, I have suggested how to achieve this goal in other posts. The answers and suggestions that I posted assumed a level of php coding that may be higher than your level. If you need a little help I'll do what I can. so perhaps you can elaborate on which bits elude you.




    PS: Just out of curiosity, how many of you want the "radio buttons instead of drop down menu <select>" ?

  17. Hi All,


    I got this PM from mribeiro and I thought it might helps others so I'm posting it here...


    Hi carbon

    I've tested your site and the design is suberb, I'm tryindg to customize my CCC but I've some problems that i can resolv for my self, and with this messsage i hope that you can give some ideas.

    The problems that I have on CCC is that when the client passes from the sheckout_custom page to the shopping cart page, the price that is displayed on the Shopping cart is 0.00, but in the buid shows the corrrect price.

    The other problem is that the client only receives the email confirmation with the name of configuration, and not is description.

    The pending orders table seems to be empty, nothing is added to that table.

    This is the problems that i'm trieng to solve to put my site onlin.


    Could you give some help on these matters.




    1: NO PRICE IN SHOPPING CART. This is probably due to not setting up tax in OSC, as a test try hard-wiring a price into custom_checkout.php to see if it shows up in the shopping cart...


    Find in custom_checkout.php around line 72...
     $message .= '</table>'; 
    if ($HTTP_GET_VARS['action'] == 'confirm'){  
    and temp replace with
     $message .= '</table>'; 
    if ($HTTP_GET_VARS['action'] == 'confirm'){


    If your next test custom pc shows up in the shopping cart with a price of 999 we know that build is working and that it is a tax, warranty or build cost issue. If the test doesn't work then it's a form rendering issue, let me know the result of the test and I'll see what can be done.


    2: EMAIL DOESN'T HAVE BUILD PARTS LIST. Ok the parts list is stored as a plain text description in a newly created product, so the first test for you is to determine the products_id of your last test custom pc (you should be able to get this from the hypertext url (status bar) when hovering over the "Edit" build button (if not let me know). Once you have this id try injecting it into the product_info.php page as if you were viewing a normal product. Now the test is... is the parts list in the description part of the page? If yes then we know that the custom pc parts list (description) is being correctly written to the database, if not then the problem either lies with the creation of said description (custom_checkout.php) or the actual email text composition (checkout_process.php)... let me know results of test.


    3: PENDING BUILDS PAGE DOESN'T WORK. The following modifications should fix this page...


    In admin/pending.php around line 62 find...
    <?php echo tep_draw_form('clean', tep_href_link(FILENAME_CCC_PENDING, 'action=clean'));?>
    and replace it with...
    <?php echo tep_draw_form('clean', FILENAME_CCC_PENDING, 'action=clean');?>
    around line 87 find...
    $pending_query = tep_db_query('select op.products_name, op.orders_id, o.orders_id, o.customers_name from ccc_pending cp, orders_products op, orders o where op.products_name = "Custom Computer" && op.orders_id = o.orders_id && cp.orders_id = o.orders_id && cp.orders_status != "3"');
    and replace with...
    $pending_query = tep_db_query('select op.products_model, op.orders_id, o.orders_id, o.customers_name from ccc_pending cp, orders_products op, orders o where op.products_model = "Custom" && op.orders_id = o.orders_id && cp.orders_id = o.orders_id && cp.orders_status != "3"');


    Thanks for the feedback



  18. i fiddled till clicked add to cart but left it at that just so i thought i'd save bogus orders coming through lol , hows cools that you got it to bounce a sms to you're mobile!! nice job!!... :D


    Getting OSC to txt me was real easy, I just added my Orange email to the admin list of who to email when orders etc occur and then on the Orange website I just ticked the option to txt me whenever I'm emailed. I'm sure other mobile network operators offer this feature too.


    The cool feature is that I then have the option of downloading the email to my mobile and even cooler is that I have modded OSC to include the type of order and value in the subject which I can see in the txt alert.



  19. i love it!... i think the only thing i personally would change (if i was good enough lol... which i'm not) is hide/remove the scroll bar so it looks as though the customers needs to go through one step at a time selecting next/previous as they go.


    but apart from that it looks fantastic! is this what the custom computer creator does? once customized to you're site that is ;)




    Thanks for the feedback, I did toy with the idea of removing the scrollbars (<body scroll="no">) but ultimately I decided it was a no-no to remove browser functionality especially when it concerns navigation which is very important.


    So, how far into "testing" did you go? I know you didn't do a test order otherwise the site would have sent me a txt msg to my mobile ;)


    Anyone else game? The site isn't live so you can play as much as you like and give fake info to place an order.





  20. Hi All,


    After loads of blood, sweat and tears I have finally completed the "Design a System" section of the secure order site and would really appreciate it if you guys could test it for me.


    Here's the related news article...


    The User Specified Design system goes live for testing. If you’ve been reading our Website news articles you’ll be familiar with this unique feature, for those that haven’t here’s a quick recap... If a customer just wants to buy a ready made package they can “Select” one of our preconfigured systems, or changes can be made by choosing “Customise” but what if the customer wants something that isn’t available?


    This is where the “Design” system comes in as it allows customers to either select known components or specify their own which means that they get what they want and we don’t miss a sale. Because each system created this way is totally unique we have developed a system that automatically confirms the request and begins the quotation process which includes regular updates and an interactive online history. Design revisions can be made either before or after quoting with automatic approval requests and dynamic expiry dates.


    If you would like to try the Design system click here.





  21. basicliy yeah , but after selecting a case and then having an additional select multi dropdown menu ( multi selecting menu ) to select the colours

    like case: atx colour: red,black,green (selected).

    and if it could be any attribute will have his own qty ( no calculate prices to the attributes ) it will be the best thing every.


    the main idea is that i want to make like a recipe menu to order

    like choose


    dropdown menu with the cakes type.

    then after i choose cake type like : chocalte cake.

    it will open a multi dropdown menu with the attribute like , bitter choclate cake ( own qty ) , milk cake ( own qty)

    and so on for all products.


    now the qty for the master product is working great. so all i need is to show in the cart under the master product with it own qty.


    let me know if something like that can be done with this contrib ??


    thanks alot man.



    I had a look at the files involved and couldn't see an easy way to do it.


    It looks like everytime you add a product (depending on the page), OSC checks to see if there are attributes for that product. If it finds attributes it redirects to the product_info.php page which has the additional code to render the attributes drop-down menus, so step 1 would be to transplant that code into build.php, here is the unmodified code...


      $products_options_name_query = tep_db_query("select distinct popt.products_options_id, popt.products_options_name from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . (int)$HTTP_GET_VARS['products_id'] . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . (int)$languages_id . "' order by popt.products_options_name");
      while ($products_options_name = tep_db_fetch_array($products_options_name_query)) {
    	$products_options_array = array();
    	$products_options_query = tep_db_query("select pov.products_options_values_id, pov.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov where pa.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and pa.options_id = '" . (int)$products_options_name['products_options_id'] . "' and pa.options_values_id = pov.products_options_values_id and pov.language_id = '" . (int)$languages_id . "'");
    	while ($products_options = tep_db_fetch_array($products_options_query)) {
    	  $products_options_array[] = array('id' => $products_options['products_options_values_id'], 'text' => $products_options['products_options_values_name']);
    	  if ($products_options['options_values_price'] != '0') {
    		$products_options_array[sizeof($products_options_array)-1]['text'] .= ' (' . $products_options['price_prefix'] . $currencies->display_price($products_options['options_values_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) .') ';
    	if (isset($cart->contents[$HTTP_GET_VARS['products_id']]['attributes'][$products_options_name['products_options_id']])) {
    	  $selected_attribute = $cart->contents[$HTTP_GET_VARS['products_id']]['attributes'][$products_options_name['products_options_id']];
    	} else {
    	  $selected_attribute = false;
    		  <td class="main"><?php echo $products_options_name['products_options_name'] . ':'; ?></td>
    		  <td class="main"><?php echo tep_draw_pull_down_menu('id[' . $products_options_name['products_options_id'] . ']', $products_options_array, $selected_attribute); ?></td>


    ... it looks like the only thing you have to inject into it is the product_id which is easy.


    Next you will need to examine how product_info.php processes the attributes. You will need to look at includes/classes/shopping_cart.php and look for the function add_cart.


    This should be enough to figure out how to display, select and update the attributes but you will still need to follow the code trail to incorporate the extra info (attributes) into the custom PC (or cake in your case).


    Here's a quick rundown...


    build.php is where you select components which then gets passed to...

    custom_checkout.php which creates a NEW product with all the component choices written as a description.


    If the NEW product is loaded into a normal OSC page it will refer to it as a normal product using products_id.

    If the NEW product is loaded into a CCC page it will use the fsb variable to retreive product data AND selections.


    So... seeing as your attributes won't affect pricing I would see how to use custom_checkout.php to modify the description in a similar way you did to add quantities. If you then edit the PC (cake) by re-loading back into build.php then it should retrieve your attributes selections and any updates/changes will happen when custom_checkout.php re-creates the description.


    Hope this helps