PayPal Integration

I have successfully integrated a PayPal account. everything is working fine. But I want the payment to be successfully transferred and then redirected to my site. another question, how to get an answer from PayPal? here is my paypal form. Thanks

`<form action="https://sandbox.paypal.com/cgi-bin/webscr" method="post"> <input type="hidden" name="business" value=" savife_1314264698_biz@gmail.com "> <input type="hidden" name="cmd" value="_xclick-subscriptions"> <input type="hidden" name="item_name" value="Alice Weekly Digest"> <input type="hidden" name="item_number" value="DIG Weekly"> <input type="hidden" name="currency_code" value="USD"> <input type="hidden" name="notify_url" value="http://localhost/check.php"> <input type="hidden" name="return" value="http://google.co.in"> <input type="hidden" name="a3" value="5.00"> <input type="hidden" name="p3" value="1"> <input type="hidden" name="t3" value="M"> <!-- Display the payment button. --> <input type="image" name="submit" border="0" src="btn_subscribe_LG.gif" alt="PayPal - The safer, easier way to pay online"> <img alt="" border="0" width="1" height="1" src="https://www.paypal.com/en_US/i/scr/pixel.gif" > </form> 
+6
source share
3 answers

Just do this:

What you want is PAYPAL IPN, INSTANT NOTIFICATION, which is sent to the user's website after payment is completed.

https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_admin_IPNIntro

or you can also set the IPN path in your cart, where paypal will send a notification as follows:

 <input type="hidden" name="notify_url" value="site.com/ipn/index.php" /> <input type="hidden" name="return" value="site.com/ipn/index.php"/> 

But you will need to log in to your paypal trading account to manually enter the ipn url and auto return. in the website’s payment settings and in the instant payment notification section on the profile tab.

After I added a sample ipn code that is sent to your site after a successful payment:

 // read the post from PayPal system and add 'cmd' $req = 'cmd=_notify-validate'; foreach ($_POST as $key => $value) { $value = urlencode(stripslashes($value)); $req .= "&$key=$value"; } // post back to PayPal system 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.sandbox.paypal.com', 443, $errno, $errstr, 30); // assign posted variables to local variables $item_name = $_POST['item_name']; $item_number = $_POST['item_number']; $payment_status = $_POST['payment_status']; $payment_amount = $_POST['mc_gross']; $payment_currency = $_POST['mc_currency']; $txn_id = $_POST['txn_id']; $receiver_email = $_POST['receiver_email']; $payer_email = $_POST['payer_email']; if (!$fp) { // HTTP ERROR } else { fputs ($fp, $header . $req); while (!feof($fp)) { $res = fgets ($fp, 1024); if (strcmp ($res, "VERIFIED") == 0) { // 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 } else if (strcmp ($res, "INVALID") == 0) { // log for manual investigation } } fclose ($fp); } ?> 

You need to add this code to the notification page. the return page that you mention in the shopping cart URL notification.

 <input type="hidden" name="notify_url" value="site.com/ipn/index.php" /> 

Put this code in site.com/ipn/index.php

Let's look at an example of your shopping cart:

 <form action="https://sandbox.paypal.com/cgi-bin/webscr" method="post"> <input type="hidden" name="business" value=" savife_1314264698_biz@gmail.com "> <input type="hidden" name="cmd" value="_xclick-subscriptions"> <input type="hidden" name="item_name" value="Alice Weekly Digest"> <input type="hidden" name="item_number" value="DIG Weekly"> <input type="hidden" name="currency_code" value="USD"> <input type="hidden" name="notify_url" value="http://localhost/check.php"> <input type="hidden" name="return" value="http://google.co.in"> <input type="hidden" name="a3" value="5.00"> <input type="hidden" name="p3" value="1"> <input type="hidden" name="t3" value="M"> <!-- Display the payment button. --> <input type="image" name="submit" border="0" src="btn_subscribe_LG.gif" alt="PayPal - The safer, easier way to pay online"> <img alt="" border="0" width="1" height="1" src="https://www.paypal.com/en_US/i/scr/pixel.gif" > </form> 

In this case, your URL to which PayPal will send ipn will be http://localhost/check.php .

So put this code on the check.php page. After receiving ipn, you can use it to enter into your database, etc.

or follow this link to get an overview of paypal ipn listener:

https://cms.paypal.com/uk/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_admin_IPNImplementation

Hope this helps.

+8
source

You can use notify_url for paypal to send an IPN response to a script on your site when paying. Use this hidden field.

 <input type="hidden" name="notify_url" value="yourwebsite.com/paypal/process" /> 

Now that the user pays, paypal will send the IPN to your site.

To return you can use:

 <input type="hidden" name="return" value="path.to/return/website/"/> // After successful payment <input type="hidden" name="cancel_return" value=""/> // If user cancels where to redirect to. 
+2
source

you can set paypal notify_url (IPN response url) and success url as follows:

 <input type="hidden" name="notify_url" value="http://localhost/demo/payment.php/ipn_response"> <input type="hidden" name="return" value="http://localhost/demo/payment_successful"> 

Get an answer Paypal paypal.php

  function ipn($ipn_data) { define('SSL_P_URL', 'https://www.paypal.com/cgi-bin/webscr'); define('SSL_SAND_URL', 'https://www.sandbox.paypal.com/cgi-bin/webscr'); $hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']); if (!preg_match('/paypal\.com$/', $hostname)) { $ipn_status = 'Validation post isn\'t from PayPal'; if ($ipn_data == true) { //You can send email as well } return false; } // parse the paypal URL $paypal_url = ($_REQUEST['test_ipn'] == 1) ? SSL_SAND_URL : SSL_P_URL; $url_parsed = parse_url($paypal_url); $post_string = ''; foreach ($_REQUEST as $field => $value) { $post_string .= $field . '=' . urlencode(stripslashes($value)) . '&'; } $post_string.="cmd=_notify-validate"; // append ipn command // get the correct paypal url to post request to $paypal_mode_status = $ipn_data; //get_option('im_sabdbox_mode'); if ($paypal_mode_status == true) $fp = fsockopen('ssl://www.sandbox.paypal.com', "443", $err_num, $err_str, 60); else $fp = fsockopen('ssl://www.sandbox.paypal.com', "443", $err_num, $err_str, 60); $ipn_response = ''; if (!$fp) { // could not open the connection. If loggin is on, the error message // will be in the log. $ipn_status = "fsockopen error no. $err_num: $err_str"; if ($ipn_data == true) { echo 'fsockopen fail'; } return false; } else { // Post the data back to paypal fputs($fp, "POST $url_parsed[path] HTTP/1.1\r\n"); fputs($fp, "Host: $url_parsed[host]\r\n"); fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n"); fputs($fp, "Content-length: " . strlen($post_string) . "\r\n"); fputs($fp, "Connection: close\r\n\r\n"); fputs($fp, $post_string . "\r\n\r\n"); // loop through the response from the server and append to variable while (!feof($fp)) { $ipn_response .= fgets($fp, 1024); } fclose($fp); // close connection } // Invalid IPN transaction. Check the $ipn_status and log for details. if (!preg_match("/VERIFIED/s", $ipn_response)) { $ipn_status = 'IPN Validation Failed'; if ($ipn_data == true) { echo 'Validation fail'; print_r($_REQUEST); } return false; } else { $ipn_status = "IPN VERIFIED"; if ($ipn_data == true) { echo 'SUCCESS'; print_r($_REQUEST); } return true; } } function ipn_response() { //mail(" sobhagya1411@gmail.com ","My subject",print_r($request,true)); $ipn_data = true; if ($this->ipn($_REQUEST)) { $this->insert_data($_REQUEST); } } function issetCheck($post, $key) { if (isset($post[$key])) { $return = $post[$key]; } else { $return = ''; } return $return; } public function insert_data(){ $post = $_REQUEST; $item_name= $this->issetCheck($post, 'item_name'); $amount = $this->issetCheck($post, 'mc_gross'); $currency = $this->issetCheck($post, 'mc_currency'); $payer_email = $this->issetCheck($post, 'payer_email'); $first_name = $this->issetCheck($post, 'first_name'); $last_name = $this->issetCheck($post, 'last_name'); $country = $this->issetCheck($post, 'residence_country'); $txn_id = $this->issetCheck($post, 'txn_id'); $txn_type = $this->issetCheck($post, 'txn_type'); $payment_status = $this->issetCheck($post, 'payment_status'); $payment_type = $this->issetCheck($post, 'payment_type'); $payer_id = $this->issetCheck($post, 'payer_id'); $create_date = date('Ymd H:i:s'); $payment_date = date('Ymd H:i:s'); $paypal_sql = "INSERT INTO ipn_data_tbl (item_name,payer_email,first_name,last_name,amount,currency,country,txn_id,txn_type,payer_id,payment_status,payment_type,create_date,payment_date) VALUES ($item_name,'$payer_email','$first_name','$last_name','$amount','$currency','$country','$txn_id','$txn_type','$payer_id','$payment_status','$payment_type','$create_date','$payment_date')"; mysql_query($paypal_sql); } 
+1
source

Source: https://habr.com/ru/post/895851/


All Articles