Take the 2-minute tour ×

Stupid question maybe..

How do I know if my integration with the PayPal API works fine?

I mean the code goes to PayPal fine, the Payment on PayPal seems to work fine and then the user is redirected in the right page on my site after the payment.

So I am assuming it works OK.

But no Price is shown on the PayPal form.

No charges for my test account

No incomings on my other test account (seller)

I am assuming it works only because the user is redirected to the success page on my site!

But how do I know that it is really working?!

Nothing makes me totally sure it works!!

Please advise..

I am using the Express Checkout API

I am justing charging a customer for a single item, no PayPal authorizations etc.. just a simple PayPal sale.

Thank you


require_once ("paypalfunctions.php");
// PayPal Express Checkout Module

//' The paymentAmount is the total value of 
//' the shopping cart, that was set 
//' earlier in a session variable 
//' by the shopping cart page
$creditsAmount = $_GET["creditsAmount"];
if ($creditsAmount <= 4) {
$price = 10;
}elseif($creditsAmount <= 19 && $creditsAmount >= 5) {
$price = 7.5;
$price = 5;
$paymentAmount = $price * $creditsAmount;
$SubmID = $_GET["SubmID"];
$memberID = (int)$_COOKIE["memberID"];
//' The currencyCodeType and paymentType 
//' are set to the selections made on the Integration Assistant 
$currencyCodeType = "USD";
$paymentType = "Sale";

//' The returnURL is the location where buyers return to when a
//' payment has been succesfully authorized.
//' This is set to the value entered on the Integration Assistant 
$returnURL = "http://domain.co.uk/modules/yobilab/copyright/PAYPAL_process.php?creditsAmount=".$creditsAmount; // AGGIUNGERE ID SUBMISSION
//$returnURL = "http://domain.co.uk/modules/yobilab/copyright/PAYPAL_process.php"; // AGGIUNGERE ID SUBMISSION
//' The cancelURL is the location buyers are sent to when they hit the
//' cancel button during authorization of payment during the PayPal flow
$cancelURL = "http://domain.co.uk/m/copyright/overview/".$SubmID; // AGGIUNGERE ID SUBMISSION
//$cancelURL = "http://domain.co.uk/m/copyright/error/"; // AGGIUNGERE ID SUBMISSION

//' Calls the SetExpressCheckout API call
//' The CallShortcutExpressCheckout function is defined in the file PayPalFunctions.php,
//' it is included at the top of this file.
$resArray = CallShortcutExpressCheckout ($paymentAmount, $currencyCodeType, $paymentType, $returnURL, $cancelURL);
$ack = strtoupper($resArray["ACK"]);
    RedirectToPayPal ( $resArray["TOKEN"] );
    //Display a user friendly Error on the page using any of the following error information returned by PayPal
    $ErrorCode = urldecode($resArray["L_ERRORCODE0"]);
    $ErrorShortMsg = urldecode($resArray["L_SHORTMESSAGE0"]);
    $ErrorLongMsg = urldecode($resArray["L_LONGMESSAGE0"]);
    $ErrorSeverityCode = urldecode($resArray["L_SEVERITYCODE0"]);

    echo "SetExpressCheckout API call failed. ";
    echo "Detailed Error Message: " . $ErrorLongMsg;
    echo "Short Error Message: " . $ErrorShortMsg;
    echo "Error Code: " . $ErrorCode;
    echo "Error Severity Code: " . $ErrorSeverityCode;
share|improve this question
Did you miss some part in the confirmation of it? Can you place your code? –  Arend Jun 8 '11 at 21:12
I have just posted my code. –  DiegoP. Jun 8 '11 at 21:17
add comment

3 Answers

up vote 1 down vote accepted

Use Paypal IPN (instant payment notification) send that url via your html from and then on that page put this code you will get response in email

error_reporting(E_ALL ^ E_NOTICE); 
$email = $_GET['ipn_email']; 
$header = ""; 
$emailtext = ""; 
// Read the post from PayPal and add 'cmd' 
$req = 'cmd=_notify-validate'; 
    $get_magic_quotes_exits = true; 
foreach ($_POST as $key => $value) 
    if($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1){  
        $value = urlencode(stripslashes($value)); 
    } else { 
        $value = urlencode($value); 
// Post back to PayPal to validate 

// Process validation from PayPal 
// TODO: This sample does not test the HTTP response code. All 
// HTTP response codes must be handles or you should use an HTTP 
// library, such as cUrl 

if (!$fp) { // HTTP ERROR 
} else { 
fputs ($fp, $header . $req); 
while (!feof($fp)) { 
    $res = fgets ($fp, 1024); 
        // TODO: 
        // Check the payment_status is Completed 
        // Check that txn_id has not been previously processed 
        // Check that receiver_email is your Primary PayPal email 
        // Check that payment_amount/payment_currency are correct 
        // Process payment 
        // If 'VERIFIED', send an email of IPN variables and values to the 
        // specified email address 
        $emailtext .= $key . " = " .$value ."\n\n"; 
        mail($email, "Live-VERIFIED IPN", $emailtext . "\n\n" . $req); 
        // If 'INVALID', send an email. TODO: Log for manual investigation. 
        mail($email, "Live-INVALID IPN", $emailtext . "\n\n" . $req); 
fclose ($fp); 
share|improve this answer
add comment

Paypal has an IPN (instant payment notification) testing tool on their developer site - you can use it to perform a callback after the transaction is complete. then you can write a php script to check the status of the payment, verify that it was successful, and then do whatever you want...

Check the documentation in the developer's sandbox to see how it works, they give some good sample code for testing with...

share|improve this answer
Why the incomings are not simply showing in the Test account? –  DiegoP. Jun 8 '11 at 21:17
And also why no price is showing in the PayPal form..This is making me confused –  DiegoP. Jun 8 '11 at 21:20
Maybe double check your code to make sure you've got the right API key and credentials for the sandbox environment, and not your Live API key? This has caused me some grief in the past... –  Dan Jun 8 '11 at 21:22
I made that. Do you see something wrong on my code? –  DiegoP. Jun 8 '11 at 21:23
add comment

You can use IPN to simulate a checkout request, but it only sends you the request to your URL so you can test your application. If you want to test if you are charging the right amount of money or things like that, you have to change the form that you are using to buy things. Instead of pointing to paypal.com, it should point to the sandbox url https://www.sandbox.paypal.com/cgi-bin/webscr

It will feel like you are really buying, but you are not, because you will be using testing accounts. After making the purchase, you can go to the sandbox, login with the testing accounts, and see how one has less money (buyer) and the other one has more money (seller).

share|improve this answer
add comment

Your Answer


