• Welcome to KonaKart Community Forum. Please login or sign up.
June 25, 2019, 07:32:44 pm


KonaKart v8.9 - Released Aug-2018 - see KonaKart website for details

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - innes

Hi all

I see a number of posts (including a previous one from myself) relating to multi-currency support.  However, these seem to relate to reasonably old versions of KK, so I thought I would ask the question again to get the latest guidance.

My customer wants to enable multi-currency in KK using the existing multi-currency setup but with the additional step of also passing across the user selected currency and associated Order value to PayPal.

I notice from previous postings that KonaKart made the design decision not to expose this, as it is not guaranteed that all Payment Gateways support multi-currencies.

Debugging the checkout process suggests that the default currency & value are set in the Order in com.konakart.bl.OrderMgr.createOrderWithOptions, which is not part of the KK Open Source code.

Is there a recommended way to customise KK to support this functionality?

I have looked at a number of approaches (using custom fields, adding a conversion in the PayPal module) but the Order Total is used in multiple places like Order History & customer emails which means I need to make changes in multiple places to ensure consistent messages to the customer.  Ideally, I would like to change one place that works with the existing KK code to replace the default currency & value in the Order with the customer selected currency & value.


I tried installing the latest version of dotCMS with the KonaKart plugin but this fails (see http://tech.groups.yahoo.com/group/dotcms/message/10144) & leaves the installation corrupted.

I notice from the README that this is only tested with
Tested with Versions:
   0.1  Konakart 5.0.0
   0.2  dotCMS

Are there any plans to upgrade the plugin to support the latest versions of dotCMS?  I appreciate that the plugin is "as is" however it will quickly become irrelevant if it cannot be run with the latest dotCMS.


I am trying to run the tests using the Ant script, however the "start-server-for-tests" target has the following:

<copy file="tomcat/conf/server-tests.xml" tofile="tomcat/conf/server.xml" overwrite="true"/>

This file does not exist in the dotCMS installation I have checked out fron SVN.

I tried commenting out this step & just use the default server.xml but every test fails with:
java.net.ConnectException: Connection refused
   at java.net.PlainSocketImpl.socketConnect(Native Method)
   at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
   at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
   at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
   at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)
   at java.net.Socket.connect(Socket.java:529)
   at java.net.Socket.connect(Socket.java:478)
   at java.net.Socket.<init>(Socket.java:375)
   at java.net.Socket.<init>(Socket.java:189)
   at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:86)
   at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:652)
   at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:628)
   at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:526)
   at org.apache.cactus.internal.client.connector.http.HttpClientConnectionHelper.connect_aroundBody0(HttpClientConnectionHelper.java:144)
   at org.apache.cactus.internal.client.connector.http.HttpClientConnectionHelper.connect_aroundBody1$advice(HttpClientConnectionHelper.java:307)
   at org.apache.cactus.internal.client.connector.http.HttpClientConnectionHelper.connect(HttpClientConnectionHelper.java:1)
   at org.apache.cactus.internal.client.connector.http.DefaultHttpClient.callRunTest(DefaultHttpClient.java:163)
   at org.apache.cactus.internal.client.connector.http.DefaultHttpClient.doTest_aroundBody0(DefaultHttpClient.java:81)
   at org.apache.cactus.internal.client.connector.http.DefaultHttpClient.doTest_aroundBody1$advice(DefaultHttpClient.java:307)
   at org.apache.cactus.internal.client.connector.http.DefaultHttpClient.doTest(DefaultHttpClient.java:1)
   at org.apache.cactus.internal.client.connector.http.HttpProtocolHandler.runWebTest(HttpProtocolHandler.java:164)
   at org.apache.cactus.internal.client.connector.http.HttpProtocolHandler.runTest_aroundBody0(HttpProtocolHandler.java:83)
   at org.apache.cactus.internal.client.connector.http.HttpProtocolHandler.runTest_aroundBody1$advice(HttpProtocolHandler.java:307)
   at org.apache.cactus.internal.client.connector.http.HttpProtocolHandler.runTest(HttpProtocolHandler.java:1)
   at org.apache.cactus.internal.client.ClientTestCaseCaller.runTest(ClientTestCaseCaller.java:145)
   at org.apache.cactus.internal.AbstractCactusTestCase.runBareClient(AbstractCactusTestCase.java:218)
   at org.apache.cactus.internal.AbstractCactusTestCase.runBare(AbstractCactusTestCase.java:134)
   at junit.framework.TestResult$1.protect(TestResult.java:106)
   at junit.framework.TestResult.runProtected(TestResult.java:124)
   at junit.framework.TestResult.run(TestResult.java:109)
   at junit.framework.TestCase.run(TestCase.java:120)
   at junit.framework.TestSuite.runTest(TestSuite.java:230)
   at junit.framework.TestSuite.run(TestSuite.java:225)
   at junit.framework.TestSuite.runTest(TestSuite.java:230)
   at junit.framework.TestSuite.run(TestSuite.java:225)
   at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
   at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

Is there anything in the server-tests.xml that I need?


I am looking at the dotcms plugin & want to extend the checkout to support the payment providers in my KK Admin (especially PayPal). Can you provide the recommended steps to do this?

Should I use the downloaded plugin (it looks like there is source code & Ant script* provided) as a starting point and then extend it to support the additional KK functionality I require?

How do I add my additional code to the dotCMS installation?  Do I run the dotCMS Ant script to refresh the plugins?

Is there an tutorial that explains how to customise the plugin?  This would be really useful as the plugin is a good example of how a KK & dotCMS could interact but to get it into production we will need to customise it.  This would also be required if we are to benefit from new KK functionality in the future


ps Ant script consist of:

<project name="KonaKart plugin" default="build">   
   <import file="../common.xml"/>   

but common.xml isn't in zip file?
We are prototyping integrating dotCMS & KonaKart.

How would I upgrade the KK plugin & dotCms/KK themselves without losing existing setup but also gaining new functionality/bug fixes?  How do we handle the scenario where we need to edit the "view" defined in the plugin to suite our requirements? For example from the evaluations we have done so far, the plugin expects 4 images on the product detail page but we normally only have one.  This results in the missing image icon being displayed. We can edit this locally but the more changes we introduce to the plugin the greater the cost in upgrading to new versions (that I assume will be required for newer versions of Kk). 

The raises an assumption on our part:  will the plugin be maintained going forward or is it purely designed as framework that we then run with?

We are prototyping integrating dotCMS & KonaKart.  We wish to provide edit rights to manufacturers to maintain their own pages (microsites). Ideally they wouldn't have one login for dotcms and another for KK.  How would this work?

In addition, could they work with 3rd party platforms like Google, Facebook, Twitter to enable social login (eg http://www.janrain.com).

What migration (if any) would we need to think about if we were moving existing customers from the default KK authentication?

Feature Requests / Digital Download - bundle support
February 22, 2011, 09:29:08 am

We run a digital distribution company & sell both individual products and album (music, images, teaching, etc) products. 

We are looking for a performant way to add the album layer into the Product Listing & Details pages.  Ideally, we would like the hierarchy to look something like Main Category (eg music, images, teaching, ebook), Category (genres of music, etc), Manufacturer (Artist/Author/Teacher), Bundle (Album, Series), Individual products.

I have looked at using the custom fields however I am concerned this will have a performance impact as I may need to iterate over all Categories/Manufacturers/Products to display all the relationships.


Configuration of KonaKart / Loadbalance Konakart
March 24, 2009, 10:13:13 pm

I have loadbalanced Konakart ( using Apache (Apache/2.2.3) & mod_jk talking to 2 tomcats (apache-tomcat-6.0.14) and running on Debian etch.  Both Tomcats are configured to talk to the same MySQL database but with different users.

When I run the instances seperately (Apache-mod_jk-tomcat-MySQL) everything works perfectly.  However, when I run both tomcat instances all the sub-categories disappear from the left hand side.

I can still see the top level categories but when I select one I get the "products.body.there.are.no.products.to.list.in.this.category=There are no products" message.  The log file says I have 10 categories.

The rest of the site seems to work fine.

Are there any gotchas with Konakart and load balancing?


I am planning to use Paypal for my payment gateway, however I have some free digital download products and I do not want to send my Customers to Paypal and back (not even sure how PayPal handles a free product) in order to enable the download link.

My solution (which may not be the best) was to create a Free payment gateway and a wrapper gateway that delegated to PayPal if the value is greater than zero or Free otherwise.

However, I get a null pointer when I call Paypal from my code.

The error is:
09-Jun 12:23:45 DEBUG (Eatacd.java:getPaymentDetails:115) Use PayPal Payment Gateway. Amount = 1.79000
09-Jun 12:23:45 ERROR (Eatacd.java:getPaymentDetails:124) Error getting Payment details (amount =  1.79000)
   at com.konakart.bl.modules.payment.paypal.Paypal.getPaymentDetails(Paypal.java:291)
   at com.konakart.bl.modules.payment.eatacd.Eatacd.getPaymentDetails(Eatacd.java:117)
   at com.konakart.bl.modules.payment.PaymentMgr.getPaymentGatewaysPrivate(Unknown Source)
   at com.konakart.bl.modules.payment.PaymentMgr.getPaymentGateways(Unknown Source)
   at com.konakart.app.KKEng.getPaymentGateways(Unknown Source)
   at com.konakart.app.GetPaymentGateways.getPaymentGateways(Unknown Source)
   at com.konakart.app.KKCustomEng.getPaymentGateways(KKCustomEng.java:2612)
   at com.konakart.server.KKGWTServiceImpl.getPaymentGateways(Unknown Source)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
   at java.lang.reflect.Method.invoke(Unknown Source)
   at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:528)
   at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:265)
   at com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:187)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
   at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
   at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
   at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
   at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
   at java.lang.Thread.run(Unknown Source)
09-Jun 12:23:45 INFO  (Eatacd.java:getPaymentDetails:127) Payment Details: null

My code is:

public PaymentDetails getPaymentDetails(Order order, PaymentInfo info)
         throws Exception {

      log.info("Order: " + order.getId());

       * Set PaymentInfo to require full details. Not sure why I need to
       * do this, suspect that it relates to disabling Free & PayPal and using
       * the EATCD Payment Gateway.
      log.info("PaymentInfo: " + info.getStoreName() + " "
            + info.isReturnDetails() + " " + info.getLocale());
      PaymentDetails paymentDetails = null;
      BigDecimal amount = order.getTotalIncTax();

      try {
         if (amount.compareTo(BigDecimal.ZERO) == 0) {
            log.debug("Use Free Download Payment Gateway. Amount = "
                  + amount.toString());
            paymentDetails = this.freePaymentGateway.getPaymentDetails(
                  order, info);
         } else {
            log.debug("Use PayPal Payment Gateway. Amount = "
                  + amount.toString());
            paymentDetails = this.paypalPaymentGateway.getPaymentDetails(
                  order, info);
      } catch (KKException e) {
         log.error("Error getting Payment details (amount =  "
               + amount.toString() + ")", e);
      } catch (Exception e) {
         log.error("Error getting Payment details (amount =  "
               + amount.toString() + ")", e);
      log.info("Payment Details: " + paymentDetails);
      log.info("Order : " + order.toString());
      return paymentDetails;

The error seems to be thrown at line 291 in Paypal.java:
for (int i = 0; i < order.getOrderTotals().length; i++)

I have tried following stack trace back to find where orderTotals is initialised but it seems to be in KKGWTServiceImpl?

Can you provide any guidance as to where orderTotals is initialised?

Couple of other things:  I have installed all 3 payment gateways (so their configurations are all in the DB) but have disabled Paypal and Free so that they are not provided in the Drop Down list on the confirmation page.


Configuration of KonaKart / Digital Product Bundles
June 09, 2008, 11:46:10 am

I set up a bundle containing Digital Downloads and got the attached error

I tried this with Physical products as well and then also on the demo website and received the same error.

How should the Bundles be configured so that a Shipping Method is defined?  I also tried adding other products to teh cart but this failed too.

Feature Requests / Konakart 2.2.06 & Multi-Currency
June 01, 2008, 11:21:11 pm

First of all...great job with the new version.

But...always a but :-)

Is there any way to customise the formatPrice methods in the com.konakart.al.KKAppEng class?

I have a requirement for USD, GBP & EUR depending on where the Customer lives.  I have implemented this using Customer Groups, Product Price Ids and mapping Country Ids to a Currency Id.  My Payment Gateways will use the Customer's Currency.

The last thing is to format the price displayed to reflect the Customer's Currency.  In version I had created my own version of the KKAppEng class that had a defaultCurrency and an activeCurrency.  I had hoped that v2.2.0.6 would allow me to customise this in the same way as other methods.

Do you have any suggestions or should I continue with my alternative KKAppEng class?



ps. This started as a feature request, but on reflection became a programming question.  Feel free to move if there is a more appropriate section.