ID #141

The pfpro pfpro_process() function keeps giving me Error 31

Applies to: Grid System

The Pfpro User Annotations mention that a cert path error occurs if pfpro cannot find a payflow certificate and that this can be resolved by supplying an environmental variable that sets the cert path. Since the payflow certificate that pfpro is looking for is located at:


you can set that path in your script's environment like so:


Another option is to create your own "certs" directory under the directory where your pfpro code is located (for example htdocs/www/certs/) and copy the f73e89fd.0 cert file above in there so that pfpro will find it.

The f73e89fd.0 cert file is included with the Verisign SDK which is available after you login to (assuming you are a Payflow client) and clicking the "Downloads" navigation link. Also available from their Downloads area is the Payflow Developers Guide.

Page 11 of the Guide says:

Setting the Certificate Path
For the client to authenticate the VeriSign Payment Services server, the PFPRO_CERT_PATH environment variable must point to the certs directory (included in the SDK that you downloaded). For specific information on setting PFPRO_CERT_PATH, see the Readme file and example applications in the SDK that you downloaded.

The cert file f73e89fd.0 is located in the "certs" subdirectory of the SDK.

Last update: 2010-09-29 17:09
Author: FAQ Admin
Revision: 1.2

Digg it! Share on Facebook Print this record Send FAQ to a friend Show this as PDF file
Please rate this FAQ:

Average rating: 0 (0 Votes)

completely useless 1 2 3 4 5 most valuable

You can comment this FAQ

Comment of Anonymous:
This error also happened when the PHP file was corrupted with CNTRL+M characters due to uploading it with FTP in binary instead of ascii mode or saving the file with "Windows" line endings instead of "Unix" format.

Open the file on the server in an editor at a shell prompt and edit it with pico, ex, or vi and you will see the CNTRL+M characters. If you see them, try running the "dos2unix" program on the file from your shell prompt:

dos2unix /htdocs/www/certs/f73e89fd.0

If that does not fix it, delete the file and start over.
Added at: 2003-03-28 11:07

Comment of Anonymous:
If yo cannot get your script to find the system copy of the payflow cert by following the FAQ above, then just create a directory named "certs" 1 level below your payflow script and copy the 1 required payflow cert into it.

The system copy of the cert is at /usr/share/ssl/certs/f73e89fd.0

For example, if the parent script (the one that calls all other scripts by include()'s or require()'s) that does Payflow transactions is at


then you should do this at a shell prompt:

mkdir /htdocs/www/myapp/certs
cd /htdocs/www/myapp/certs
cp /usr/share/ssl/certs/f73e89fd.0 .

and your charge_card script will automatically find the cert. This is because by default, the Payflow functions always look for the cert in "./certs" if they can't find it anywhere else.

If you have many scripts in various directories that do transactions, make the cert dir available to them with a symlink.

For a parent script at /htdocs/www/otherapp/subdir/script.php

Do this at a shell prompt:

cd /htdocs/www/otherapp/subdir
ln -s ../../myapp/certs certs

and then /htdocs/www/otherapp/subdir/certs will ead to the same place as /htdocs/www/myapp/certs

Added at: 2004-01-06 14:52

Comment of Anonymous:
For Miva with Payflow, you'll want to:

cd /htdocs/www/store/
ln -s /usr/share/ssl/certs/ certs
Added at: 2005-11-22 16:41