PHP API PayPal and sandbox issue

Stupid question may be ...

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

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

Therefore, I assume that it is working fine.

But the PayPal form does not contain a price.

No fees for my test account.

No recharge on my other test account (seller)

I assume this only works because the user is redirected to the success page on my site!

But how do I know that it really works ?!

Nothing makes me completely sure it works !!

Please advise ..

I am using the Express Checkout API

I just charge the customer for one item, no PayPal authorizations, etc. just a simple sale of paypal.

thanks

<?php 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; }else{ $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 //' //' This is set to the value entered on the Integration Assistant //'------------------------------------ $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"]); if($ack=="SUCCESS" || $ack=="SUCCESSWITHWARNING") { RedirectToPayPal ( $resArray["TOKEN"] ); } else { //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; } ?> 
+4
source share
3 answers

Use Paypal IPN (instant payment notification) to send this URL through your html, and then put this code on this page, you will receive a response by email

 <?php error_reporting(E_ALL ^ E_NOTICE); $email = $_GET['ipn_email']; $header = ""; $emailtext = ""; // Read the post from PayPal and add 'cmd' $req = 'cmd=_notify-validate'; if(function_exists('get_magic_quotes_gpc')) { $get_magic_quotes_exits = true; } foreach ($_POST as $key => $value) // Handle escape characters, which depends on setting of magic quotes { if($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1){ $value = urlencode(stripslashes($value)); } else { $value = urlencode($value); } $req .= "&$key=$value"; } // Post back to PayPal to validate $header .= "POST /cgi-bin/webscr HTTP/1.0\r\n"; $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; $header .= "Content-Length: " . strlen($req) . "\r\n\r\n"; $fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30); // 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 { // NO HTTP ERROR fputs ($fp, $header . $req); while (!feof($fp)) { $res = fgets ($fp, 1024); if (strcmp ($res, "VERIFIED") == 0) { // 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 foreach ($_POST as $key => $value){ $emailtext .= $key . " = " .$value ."\n\n"; } mail($email, "Live-VERIFIED IPN", $emailtext . "\n\n" . $req); } else if (strcmp ($res, "INVALID") == 0) { // If 'INVALID', send an email. TODO: Log for manual investigation. foreach ($_POST as $key => $value){ $emailtext .= $key . " = " .$value ."\n\n"; } mail($email, "Live-INVALID IPN", $emailtext . "\n\n" . $req); } } fclose ($fp); ?> 
+1
source

Paypal has an IPN (instant payment notification) testing tool on its developer's site - you can use it to make a callback after the transaction is completed. then you can write a php script to check the status of the payment, make sure it was successful, and then do whatever you want ...

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

+1
source

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

You will feel that you are really buying, but you are not, because you will use test accounts. After making a purchase, you can go to the sandbox, log in with test accounts and see how someone has less money (buyer) and another has more money (seller).

+1
source

All Articles