Integrate PayPal

前端 未结 3 1031
青春惊慌失措
青春惊慌失措 2021-02-03 14:50

I have successfully integrated PayPal. All is working fine. But I want my form to redirect to my site after a successful payment. Another question: how to get response from PayP

3条回答
  •  梦谈多话
    2021-02-03 15:28

    you can set paypal notify_url(IPN Response url) and success url like this way:

                                                
    
    

    Get Paypal response 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('Y-m-d H:i:s');
        $payment_date = date('Y-m-d 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); 
    
    }
    

提交回复
热议问题