News:

Looking for documentation? Take a look on our wiki

Main Menu

Fixed? PayPal Website Payments Pro

Started by Comenius, February 15, 2006, 05:13:38 AM

Previous topic - Next topic

Comenius

I edited the backend config file to use either YES or NO (all caps), so hopefully that will help fix that one problem.  I've uploaded a new paypal.zip containing the updated file. 

-David

Comenius

#31
Hi Fidel,

You're right you definitely need to reference your PEAR directory in your .htaccess directory.  The following line needs to be added to the end of the .htaccess file at the root of your Joomla install:


php_value include_path ".:/usr/local/lib/php:/mnt/webhosting/sites/o/openenglishworld.com/includes/PEAR"


It consists of two parts.  Your server PHP path, and your Joomla PEAR path.  They are seperated by colons.  So for me, /usr/local/lib/php is where my server has PHP installed.  /mnt/webhosting/sites/o/openenglishworld.com/includes/PEAR is where I placed the pear directory for my Joomla site.  Note that there is a period at the very beginning. 

So, the correct string is built "[period][colon][server php path][colon][joomla pear path]"

You can find your server PHP path by using the Joomla administrator backend.  System Menu -> System Info.  Click the PHP Info tab.  Under the Configuration/PHP Core section, look for "include_path".  That's the value you need to use for your server PHP path.  Your Joomla PHP path will depend on you. 

Hope this helps.  Good luck!!   :)

-David

fidel

Thank you for the quick and detailed response. I am guessing I have the .htaccess file configured wrong, since I am getting the following error when trying to access the front page:


Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator and inform them of the time the error occurred, and anything you might have done that may have caused the error.


My actual .htaccess file looks like this with I get the Internal Server Error:

##
# @version $Id: htaccess.txt 1570 2005-12-29 05:53:33Z eddieajau $
# @package Joomla
# @copyright Copyright (C) 2005 Open Source Matters. All rights reserved.
# @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
# Joomla! is Free Software
##

Options +FollowSymLinks

#
#  mod_rewrite in use
#

RewriteEngine On

##
## NOTE!
## When using multiple Joomla sites or other web applications in sub-folders,
## you must explicitly turn the RewriteEngine off or use the settings
## recommended for the application
##

#  Uncomment following line if your webserver's URL
#  is not directly related to physical file paths.
#  Update YourJoomlaDirectory (just / for root)

RewriteBase /home/u1/XXXXXX/XXXXXX.com/html/race

#
#  Rules
#

RewriteCond %{REQUEST_FILENAME} !\.(jpg|jpeg|gif|png|css|js|pl|txt)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php
php_value include_path ".:/usr/local/lib/php:/home/u1/XXXXX/XXXXX.com/html/race/includes/PEAR"


Upon the PHP File Info, here are the various referrences I have. I am uncertain exactly which one you are referrring to, since I do not see an exact match for the information you referrenced.

Configuration File (php.ini) Path /home/u1/XXXXXX/php.ini
'
Under "Configuration PHP Core" I have the following referrences:

extension_dir /usr/local/lib/php/20020429 /usr/local/lib/php/20020429

and only this:

include_path .: .:

fidel

In the event it is needed, here is some additional information from the system info tab:

Relevant PHP Settings:   
Safe Mode: OFF
Open basedir: none
Display Errors: OFF
Short Open Tags: ON
File Uploads: ON
Magic Quotes: OFF
Register Globals: ON
Output Buffering: OFF
Session save path: /tmp
Session auto start: 0
XML enabled: Yes
Zlib enabled: Yes
Disabled Functions: none
WYSIWYG Editor: No WYSIWYG Editor

Comenius

Interesting.

If your server PHP include_path is only ".:", then I would think your string might be:

php_value include_path ".::/home/u1/XXXXX/XXXXX.com/html/race/includes/PEAR"

or maybe just:

php_value include_path ".:/home/u1/XXXXX/XXXXX.com/html/race/includes/PEAR"

Do either of those work?

-David

fidel

I am now working on a funky computer whose FTP is a bit strange and can't see the .htaccess file. Nevertheless, I loaded it with the various changes to the file and each renders an internal server error.

simbo1905

#36
i ran the openzion code for a number of months against the early mambo version of virtuemart on some live stores. his forums have lost all of the original posts - i guess that he lost them during an upgrade.

on his forum i had pointed out that the PayPal Pro is both PayPal Direct Payment ("credit card on your site") and PayPal Express Checkout ("choose shipping addresses on the paypal site, no billing details on your site, choose source of payment funds at paypal site"). if you read the PayPal Pro PDF documentation it states that "Direct Payment is not a stand alone product. You must impliment Express Checkout if you wish to use Direct Payment".

the openzion module only impliments Direct Payment. on his forums we had talked about Express Checkout. at one point in time he said that he did not think that Express Checkout could be done. i don't know what his current opinion is - and with his forum being empty you cannot see the history of the discussion (as he is a developer it is strange that the forum is empty - perhaps he does not want anyone to see the debate about the legality of his payment module] :-(

i had a go at developing the full PayPal Pro solution by writing an Express Checkout module. i gave up. see this post as to why:

http://virtuemart.net/index.php?option=com_smf&Itemid=71&topic=16348.0

there is some talk that PayPal may "turn a blind eye" if you use Direct Payment ("credit card on your site") but not Express Checkout ("choose shipping addresses on the paypal site, no billing details on your site, choose source of payment funds at paypal site"). i have no idea if that really is the case. i cannot afford to risk it. certainly if a lawyer reads the terms and conditions they will say it is black and white. you cannot use Direct Payment (hense the openzion code) unless you impliment Express Checkout (which is much harder) without breaching the terms and conditions of the PayPal Pro agreement.

fidel

Quote from: Comenius on March 08, 2006, 18:00:39 PM
If your server PHP include_path is only ".:", then I would think your string might be:
php_value include_path ".::/home/u1/XXXXX/XXXXX.com/html/race/includes/PEAR"
or maybe just:
php_value include_path ".:/home/u1/XXXXX/XXXXX.com/html/race/includes/PEAR"
Do either of those work?
-David

David,

Neither of these options work and render an internal server error. I have some ideas as to what may be the problem.

php_value include_path ".:/usr/local/lib/php:/home/u1/XXXXX/XXXXX.com/html/race/includes/PEAR"

As you have referrenced here to your initial path, it is not the same as mine, since mine seems to be made empty. The first segment seems to be left empty on mine. Looking at this, though, one would think the path referrences a directory. I do not have a directory anywhere with that name. All my php.ini files, if this matters, are located in the usr directory.

I'm still working on it. But need a few hours of sleep.

".:/usr/local/lib/php:/home/u1/XXXXX/XXXXX.com/html/race/includes/PEAR"

".:/usr/local/lib/php:/home/u1/XXXXX/XXXXX.com/html/race/includes/PEAR"


simbo1905

#38
Quote from: fidel on March 24, 2006, 12:56:44 PM
php_value include_path ".:/usr/local/lib/php:/home/u1/XXXXX/XXXXX.com/html/race/includes/PEAR"

As you have referrenced here to your initial path, it is not the same as mine, since mine seems to be made empty. The first segment seems to be left empty on mine. Looking at this, though, one would think the path referrences a directory. I do not have a directory anywhere with that name. All my php.ini files, if this matters, are located in the usr directory.

you are correct that it is unlikely that his path and your path are the same. also it might not be easy to figure out where pear is on the server and the servers version of pear may be out of date - getting it up to date can be hard if it is a shared host.

i took the approach of overriding the servers php.ini by setting the include path at the top of the .cfg.php script with

ini_set("include_path", ".:../:./include:../include");

where i used *relative* paths to folders *within my site* that is to say a private copy of my own version of pear in my site.

it took a bit of jiggery stupid card gamey to get all of the correct pear items into my site, and to set the location to the directory to be correct from all the script locations in my site (e.g. ./pear:../pear:../../pear) but the net effect is that if the servers version of pear gets upgraded it does not kill that site.

even if you control the server it is useful that sites can be on different versions of pear so that you can install new pear features on new sites without risking breaking your older sites.

good luck.

fidel

Thanks for the info, I am beginning to believe that your recommendations are beyond my skills. I have spent too many hours of too many days trying to get this to work.

Now, to top it off, I can no longer save any functions within Joomla or Virtuemart using the control panel. Joomla control panel isn't showing in the control panel, only the Virtuemart control panel. Although I performed an upgrade earlier in the evening to Joomla 1.0.8 and Virtuemart 1.0.3, I tested all functions and it seemed to be working then.

I tried reinstalling the upgrades, thinking I deleted some files. I am left to deleting the site and database and reverting to backup, unless one of you might now what may have happened. Anyhow, I give up on PayPal Website Payments Pro. The site worked perfectly prior to this. I would be better off getting SSL when the site goes live and processing them by hand or enlisting help that is more adept in these operations.

simbo1905

Quote from: fidel on March 24, 2006, 13:38:43 PM
Thanks for the info, I am beginning to believe that your recommendations are beyond my skills. I have spent too many hours of too many days trying to get this to work.
[::snip::]
I would be better off getting SSL when the site goes live and processing them by hand or enlisting help that is more adept in these operations.

sorry to hear that. as i said i moved from paypal pro to authorize.net (thru RBSLynx and CharterOne). i have been helping folks out with that on these forums. it does not need pear. there are pros and cons to the different services but at the moment authorize.net is a good solution (it uses curl also but has a much simpler wire protocol).

if you would like we can buddy up at the business level - the more partners the better. i currently host my own site on my own server and taking payments for clients into my own business account in the states. teaming up with other independent guys means more business both ways and more support for both our clients all round.

:)

luthien

Hello,

I got the following error, any idea of how to solve it?

thanks!

object(errortype)(9) { ["_elements"]=> array(5) { ["ShortMessage"]=> array(3) { ["required"]=> bool(true) ["type"]=> string(6) "string" ["namespace"]=> string(31) "urn:ebay:apis:eBLBaseComponents" } ["LongMessage"]=> array(3) { ["required"]=> bool(false) ["type"]=> string(6) "string" ["namespace"]=> string(31) "urn:ebay:apis:eBLBaseComponents" } ["ErrorCode"]=> array(3) { ["required"]=> bool(true) ["type"]=> string(5) "token" ["namespace"]=> string(31) "urn:ebay:apis:eBLBaseComponents" } ["SeverityCode"]=> array(3) { ["required"]=> bool(true) ["type"]=> string(16) "SeverityCodeType" ["namespace"]=> string(31) "urn:ebay:apis:eBLBaseComponents" } ["ErrorParameters"]=> array(3) { ["required"]=> bool(false) ["type"]=> string(18) "ErrorParameterType" ["namespace"]=> string(31) "urn:ebay:apis:eBLBaseComponents" } } ["_attributes"]=> array(0) { } ["_attributeValues"]=> array(0) { } ["_namespace"]=> string(31) "urn:ebay:apis:eBLBaseComponents" ["ShortMessage"]=> string(27) "Inactive Billing Agreement." ["LongMessage"]=> string(149) "The transaction was refused because your billing agreement is inactive. Log into PayPal to check your billing agreement or contact customer service." ["ErrorCode"]=> string(5) "10501" ["SeverityCode"]=> string(5) "Error" ["ErrorParameters"]=> NULL }
Failure in Processing the Payment:

The transaction was refused because your billing agreement is inactive. Log into PayPal to check your billing agreement or contact customer service.
Error: Failure in Processing the Payment (ps_pdp)


Failure in Processing the Payment:

The transaction was refused because your billing agreement is inactive. Log into PayPal to check your billing agreement or contact customer service.

koltz

I just updated to VirtueMart 1.04 and when checking out I get the following error:

QuoteError: Credit Card Type not found.

For Credit Card Type:, it is now blank, no selection box?

Corey

luthien

Quote from: luthien on March 25, 2006, 16:30:42 PM
Failure in Processing the Payment:

The transaction was refused because your billing agreement is inactive. Log into PayPal to check your billing agreement or contact customer service.
Error: Failure in Processing the Payment (ps_pdp)

Failure in Processing the Payment:

The transaction was refused because your billing agreement is inactive. Log into PayPal to check your billing agreement or contact customer service.

Oh well, now is working. That was the error: the billing agreement was inactive. It's working fine and the only problem I can see is the order status showing Pending instead of Confirmed.

AnyTimeCoMM, LLC.

To now avail and to all the hard luck tries with all of this I still receive the following!

Fatal error: Call to undefined function: getack() in /var/www/vhosts/xxxxxxxx.com/httpdocs/administrator/components/com_virtuemart/classes/payment/ps_pdp.php on line 229

I have followed every reply in this thread and I think PAM was the closets but I am not going to put this live until I know it is working.. Any ideas on why I still receive the ACK..

btw we have figured this out so far..

                 // BEGIN
                 // comment out this line and it works
                 // and replace it with to see it work but that means
                 // NO error processing
                 //if ("1" == "Failure") {
                 // END
                 if ($response->getAck() == "Failure") {
                        $errors = $response->getErrors();