Re: WorldPay Module for ZenCartv1.3x
Soundstream,
When you put through a 'Successful' test transaction everything should happen as would on a live transaction EXCEPT no payment should be made. So the customer should receive two emails, one from your Zencart and one from WorldPay and the merchant should also receive two emails, one from Zencart and one from WorldPay. The TEST order should appear in your Zencart Admin as would a LIVE order.
The shopper response pages are 'grabbed' (technical term) by WorldPay and displayed on their server hence their domain and not yours appears in the address window of your browser.
If you want to see how all this works in action make a test purchase on my test site at rcm.testingit.net This is currently in permanent test mode. Just ignore the warning message about the Security Certificate problem. Zencart have installed a security certificate for a different domain from their test URL domain which is causing the warning. It doesn't happen with a live transaction so it isn't a big issue. I have reported it to WorldPay but have had no response as yet.
If you open an account on my test site remember, no matter what junk you enter for your personal details, use a valid email address so that you can receive the response emails.
The Zencart module on my test site is a prototype re-write of the module so it may look slightly different from yours. I have two live sites running correctly with the currently downloadable version of the module so you should be able to get everything working with the current version.
Hope this helps,
Alan
Re: WorldPay Module for ZenCartv1.3x
After doing some further readin, yes, you are right, I should see the order show up if the transaction was successful.
What I have found since my previous post ...
- The reason for the unsuccesful page being displayed was due to a change I made where someone suggested trying to change the line of code that checks $transStatus. So I have reset that back to what it was.
- while my site not appears to have regressed, it is actually more correctly setup. The page that starts to load just simply "dies" and the PHP code just kind of ends abruptly (see snippet):
Code:
<img src="includes/templates/theme041/images/spacer.gif" alt="" width="1px" height="7px" /><br><!--// eof: whatsnew //-->
</div>
</td>
<td width="1px" class="l5_c3"><img src="includes/templates/theme041/images/spacer.gif" alt="" width="1px" height="1px" /></td>
<td valign="top" class="l5_c4"><div class="l5_c44">
<!-- bof breadcrumb -->
<!-- eof breadcrumb -->
<!-- bof upload alerts -->
<!-- eof upload alerts -->
What I have discovered is that the $transStatus comes back as "Y" and it starts to work it's way through the tpl_wpcallback_default.php module. It gets to the first line that says:
Code:
require(DIR_WS_MODULES . 'checkout_process.php');
It is inside checkout_process.php where it appears to die. From my crude debugging it somehow loses the $SESSION['customer_id'] and then attempts a re-direct to the timeout page. After that I see nothing happening and the page just dies.
If anyone can be of assistance, I am willing to pay to have this problem solved. I am very close to completing this site, and this is the only piece that is holding me up.
Re: WorldPay Module for ZenCartv1.3x
duncanad, your PM boxes are full. Can you please clean out some room (either in your Inbox or your Sent Items), as I have a response for you.
Thanks
Re: WorldPay Module for ZenCartv1.3x
Hello,
I received another response from WorldPay:
You have a callback URL of http://<wpdisplay item="MC_callback"> set for installation 14115 so you should not be passing http or https in the value of MC_callback, can you confirm that $callback_url populates the value of MC_callback.
Anyone understands this better than me..?
Thank you...
Re: WorldPay Module for ZenCartv1.3x
Loutka,
The following lines of code define the value of the callback URL which is passed to WorldPay as "MC_callback"
includes/modules/payment/worldpay.php lines 128 and 129
Code:
$callback_url = zen_href_link(FILENAME_WPCALLBACK, $zenId);
$worldpay_callback = explode('http://', $callback_url);
and at line 148
Code:
zen_draw_hidden_field('MC_callback', $worldpay_callback[1]);
The function zen_href_link() is defined in includes/functions/html_output.php as follows:
Code:
zen_href_link($page = '', $parameters = '', $connection = 'NONSSL', $add_session_id = true, $search_engine_safe = true, $static = false, $use_dir_ws_catalog = true)
If any of the variables are not included then the default value is used so basically line 128 defines $callback_url as the full non-ssl path to the callback script as defined (FILENAME_WPCALLBACK). This might look something like this:
Code:
http://www.yourdomain.com/index.php?main_page=wpcallback&zenid=2e9b83e61e7dd9d3c63ea1bb15e0b58f&zenid=2e9b83e61e7dd9d3c63ea1bb15e0b58f
Note $zen_id is not strictly required since this is the session_id which by default is included anyway hence it is included twice in the url.
Line 129 splits $callback_url into an array with two values:
Code:
$worldpay_callback[0] = http://
$worldpay_callback[1] = www.yourdomain.com/index.php?main_page=wpcallback&zenid=2e9b83e61e7dd9d3c63ea1bb15e0b58f&zenid=2e9b83e61e7dd9d3c63ea1bb15e0b58f
and line 148 passes $worldpay_callback[1] to WorldPay as "MC_callback"
Therefore the short answers to WorldPay's questions are that neither http:// nor https:// is passed in the value of MC_callback and it is not $callback_url that populates MC_callback but $worldpay_callback[1].
If you want to pass a secure URL as MC_callback you firstly must have SSL set up on your server and SSL enabled and your secure path defined in your configuration files. Lines 128 and 129 then become:
Code:
$callback_url = zen_href_link(FILENAME_WPCALLBACK, $zenId, 'SSL');
$worldpay_callback = explode('https://', $callback_url);
This sets $callback_url to something like:
Code:
https://www.yoursecuredomain.com/index.php?main_page=wpcallback&zenid=2e9b83e61e7dd9d3c63ea1bb15e0b58f&zenid=2e9b83e61e7dd9d3c63ea1bb15e0b58f
and $worldpay_callback[1] becomes
Code:
www.yoursecuredomain.com/index.php?main_page=wpcallback&zenid=2e9b83e61e7dd9d3c63ea1bb15e0b58f&zenid=2e9b83e61e7dd9d3c63ea1bb15e0b58f
and this is passed to WorldPay as MC_callback.
Of course if you are using secure callback you must set the callback URL in you WorldPay control panel as https://<wpdisplay item="MC_callback">
I hope this explains things,
Alan
Re: WorldPay Module for ZenCartv1.3x
Thank you Alan very much!
I thought it works this way and you reassured me.
I just changed HTTP to HTTPS in Zen-Cart, but I'm not able to change it in Installation Details in WP Administration. It says:
ERROR: Failed to update installation due to database error
ERROR: Due to error(s) Installation Not Saved
SUCCESS: Payment Response URL set
Integration Setup: TEST
I have contacted WP support with this issue, but they didn't come back to me yet.
I will keep you posted as soon as I have their answer, unless you think problem is on my side..?
Loutka
Re: WorldPay Module for ZenCartv1.3x
Loutka,
Are you sure you haven't managed to change the URL in WorldPay admin?
Quote:
SUCCESS: Payment Response URL set
This would indicate that you have.
I'd keep trying. I have had ERROR messages and when I have tried again it worked.
Alan
Re: WorldPay Module for ZenCartv1.3x
Quote:
Originally Posted by
duncanad
Are you sure you haven't managed to change the URL in WorldPay admin?
This would indicate that you have.
Yes I'm sure... I tried many times and always when I came back it's same -http :-(
So I don't know what is wrong...
Loutka
Re: WorldPay Module for ZenCartv1.3x
HI
Is the worldpay mod working ok on zen cart 1.3.8,I installed it ok but
when I make a test transaction I do not seem to get a callback so there is no order details in my admin?, just a small point this is just my zen cart test site I am using the worldpay id as for my easywebstore that works fine on that(could this be doing it)., but with zen cart when I have made a test transaction I get take back to a blank page on my website. :huh:
Re: WorldPay Module for ZenCartv1.3x
I have read the entire thread before posting.
I installed the WP mod in February and had many successful test transactions. WorldPay then upgraded (I am currently applying for a WP account for the first time) and since then I get the message to the effect of "you are trying to access the production site with a test transaction - click here to re-direct to test".
When I then click on the redirect button I get the following message:
Secure Payment Page
Sorry, there was an error in processing this transaction:
The information sent from the merchant's site is invalid or incomplete. Please send the following information to the merchant:
The transaction cannot be processed due to one or more of the following:
the merchant account is suspended
the currency you selected is not supported
the authorisation mode is incorrect
test mode is unavailable
the installation is not live
Server information 23/Mar/2008 19:58:42 Server ID mg1imscs5pa (WPReq-88952)
Clearly this is something at WorldPay's end - just wanted to know if anyone's encountered this?