With IPN simulator I VERIFIED and with Paypal I INVALID
Capou
Contributor
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Posted on
Nov-06-2018
07:15 AM
Hello everyone, I have my class that works perfectly with IPN simulator I VERIFIED well in return but with paypal I invalid.
I search the forum and most often it is because of $ use_sandbox = true; but I put $ use_sandbox = false;
class PaypalIPN { private $use_sandbox = false; //test sandbox true private $use_local_certs = true; const VERIFY_URI = 'https://ipnpb.paypal.com/cgi-bin/webscr'; const SANDBOX_VERIFY_URI = 'https://ipnpb.sandbox.paypal.com/cgi-bin/webscr'; const VALID = 'VERIFIED'; const INVALID = 'INVALID'; public function useSandbox() { $this->use_sandbox = true; } public function usePHPCerts() { $this->use_local_certs = false; } public function getPaypalUri() { if ($this->use_sandbox) { return self::SANDBOX_VERIFY_URI; } else { return self::VERIFY_URI; } } public function verifyIPN() { if ( ! count($_POST)) { throw new Exception("Missing POST Data"); } $raw_post_data = file_get_contents('php://input'); $raw_post_array = explode('&', $raw_post_data); $myPost = array(); foreach ($raw_post_array as $keyval) { $keyval = explode('=', $keyval); if (count($keyval) == 2) { if ($keyval[0] === 'payment_date') { if (substr_count($keyval[1], '+') === 1) { $keyval[1] = str_replace('+', '%2B', $keyval[1]); } } $myPost[$keyval[0]] = rawurldecode ($keyval[1]); } } $req = 'cmd=_notify-validate'; $get_magic_quotes_exists = false; if (function_exists('get_magic_quotes_gpc')) { $get_magic_quotes_exists = true; } foreach ($myPost as $key => $value) { if ($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1) { $value = rawurlencode (stripslashes($value)); } else { $value = rawurlencode ($value); } $req .= "&$key=$value"; } $ch = curl_init($this->getPaypalUri()); 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, $req); curl_setopt($ch, CURLOPT_SSLVERSION, 6); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); if ($this->use_local_certs) { curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . "/cert/cacert.pem"); } curl_setopt($ch, CURLOPT_FORBID_REUSE, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close')); $res = curl_exec($ch); if ( ! ($res)) { $errno = curl_errno($ch); $errstr = curl_error($ch); curl_close($ch); throw new Exception("cURL error: [$errno] $errstr"); } $info = curl_getinfo($ch); $http_code = $info['http_code']; if ($http_code != 200) { throw new Exception("PayPal responded with http code $http_code"); } curl_close($ch); if ($res == self::VALID) { return true; } else { return false; } } }
Is there a change to go from ipn simulator to paypal
And I call the class normally
$ipn = new PaypalIPN(); // Use the sandbox endpoint during testing. $ipn->useSandbox(); $verified = $ipn->verifyIPN(); if($verified){ } header("HTTP/1.1 200 OK");
thanks a lot for your help
Capou
Labels:
- Labels:
-
IPN
0 REPLIES 0
Haven't Found your Answer?
It happens. Hit the "Login to Ask the community" button to create a question for the PayPal community.
Related Content
- IPN works in sandbox but not live in Sandbox Environment
- Ipn PayPal server giving 301 or 302 errors in PayPal Payments Standard
- IPN SHOWS NO HTTP RESPONSE - LISTENER WORKS WITH LOCAL FORM POST in Sandbox Environment
- Why am I not seeing HTTP responses for IPN? in Sandbox Environment
- Need help with first webhook in Sandbox Environment