Question: How to IPN? How to set IPN in Paypal?
http://www.web-technology-experts-notes.in/2016/03/instant-payment-notification-paypal.html
Question: Why we need to validate the IPN?
To make sure, all data sent in our server is from Paypal.
Question: What are benefits of validating the IPN?
- Protect our transaction from SPAM OR robots OR from hackers.
- Protect from dmmmy entires in our database.
- If protection is ON, We will always sure for transaction record in database.
Question: What does paypal do with valiation?
It will validate all the data, sent to paypal.
Question: What is name of parameter which is send to paypal for validation?
cmd.
For Example:
cmd=_notify-validate
Question: What does paypal return if validation failed?
INVALID
Question: How does paypal return, if validation passed?
VERIFIED
Question: How to validate IPN Response in Sandbox Mode?
$ipnData=$_POST;
$ipnData['cmd']='_notify-validate';
$verify= file_get_contents('https://www.sandbox.paypal.com/cgi-bin/webscr', false, stream_context_create(array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded\r\nUser-Agent: MyAPP 1.0\r\n",
'method' => 'POST',
'content' => http_build_query($ipnData)
)
)));
if($verify=='VERIFIED'){
/** Your data is valid and it is return from paypal */
}
Question: How to validate Paypal IPN Response in LIVE Mode ?
$ipnData=$_POST;
$ipnData['cmd']='_notify-validate';
$verify= file_get_contents('https://www.paypal.com/cgi-bin/webscr', false, stream_context_create(array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded\r\nUser-Agent: MyAPP 1.0\r\n",
'method' => 'POST',
'content' => http_build_query($ipnData)
)
)));
if($verify=='VERIFIED'){
/** Your data is valid and it is return from paypal */
}
Question: How to validate IPN Validate with curl?
$ipnData=$_POST;
$ipnData['cmd']='_notify-validate';
$validateURL='https://www.paypal.com/cgi-bin/webscr';//for paypal
//$validateURL='https://www.sandbox.paypal.com/cgi-bin/webscr'; //for sandbox paypal
$ch = curl_init($validateURL);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($ipnData));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close'));
if ( !($verify = curl_exec($ch)) ) {
curl_close($ch);
die('Some Error');
}
curl_close($ch);
var_dump($verify );//IF VERIFIED, then validate
