How to get transaction details in notify_url page in paypal

筅森魡賤 提交于 2021-02-11 14:58:42

问题


In paypal notify_url page I am not getting any values when I use cmd value as _cart.How can I get the transaction details in notify_url page

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="POST" name="_xclick" id="paypal_form">
<input type="hidden" name="upload" value="1" />
<input type="hidden" name="cmd" value="_xclick" />
<!-- The business email address, where you want to receive the payment -->
<!--<input type="hidden" name="business" value="yesidealpayment@gmail.com" />-->
<input type="hidden" name="business" value="arun_1260247381_per@galtechsupport.us" />
<!-- The customer email address -->

<input type="hidden" name="item_name_1" value="<?php echo ucfirst($couponname); ?>" />

<input type="hidden" name="amount_1" value="<?php echo $total_payable_amount; ?>" />
<!--<input type="hidden" name="currency_code" value="AUD" />-->
<input type="hidden" name="currency_code" value="USD" />

<input type="hidden" name="amount" value="25.58" /> 
<!-- Where you want to return after PayPal Payment -->
<input type="hidden" name="return" value="http://yes-i-deal.com.au/test/paypal_ipn.php" />
<!-- A back-end notification send to the specific page after successful payment  -->
<!--<input type="hidden" name="notify_url" value="http://yes-i-deal.com.au/test/paypal.php" />-->
<input type="hidden" name="notify_url" value="http://yes-i-deal.com.au/test/paypal_ipn.php" />
<!-- Where you want to return after cancel the PayPal Payment  -->
<input type="hidden" name="cancel_return" value="http://yes-i-deal.com.au/" />
<input type="hidden" name="custom" value="<?php echo $coupon_id."_".$userid;?>" />  




            <input type="image" name="submit"   src="http://yes-i-deal.com.au/themes/green/images/Buy-Now-Button.png" />
</form> 

In my notify_url page I am getting values as

 session_start(); 
require("ipn_cls1.php");
 $paypal_info = $_POST; 
print_r($paypal_info); 
$paypal_ipn = new paypal_ipn($paypal_info); 
$payment_status = trim($paypal_info['payment_status']); // Si Completed : tout est OK echo 
$payment_amount = trim($paypal_info['mc_gross']);

回答1:


i have same problem with paypal adaptive payments in my current project. i have given my

notify_url as http://mysite.com/payment-success. In this page, i simply coded

$request = $_POST;

mail('myid@myaccount', $request);

and then i sent the transaction result to my mail to view.

Note, here in my mail i can able to see the transaction results and if i insert into database, it is inserting but i cant see the transaction results in my page. Try sending to your mail the transaction results.




回答2:


Create paypal_ipn.php file and place php code in it.

    // Response from Paypal
    // read the post from PayPal system and add 'cmd'
    $req = 'cmd=_notify-validate';
    foreach ($_POST as $key => $value) {
        $value = urlencode(stripslashes($value));
        $value = preg_replace('/(.*[^%^0^D])(%0A)(.*)/i','${1}%0D%0A${3}',$value);// IPN fix
        $req .= "&$key=$value";
    }

    // assign posted variables to local variables
    $data['item_name']          = $_POST['item_name'];
    $data['item_number']        = $_POST['item_number'];
    $data['payment_status']     = $_POST['payment_status'];
    $data['payment_amount']     = $_POST['mc_gross'];
    $data['payment_currency']   = $_POST['mc_currency'];
    $data['txn_id']             = $_POST['txn_id'];
    $data['receiver_email']     = $_POST['receiver_email'];
    $data['payer_email']        = $_POST['payer_email'];
    $data['custom']             = $_POST['custom'];
    $data['invoice']            = $_POST['invoice'];
    $data['paypallog']          = $req;

    // 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); 

    if (!$fp) {
        // HTTP ERROR
    } else {    


        fputs ($fp, $header . $req);
        while (!feof($fp)) {
            ////mail('atiftariq80@gmail.com','Step 9','Step 9');        
            $res = fgets ($fp, 1024);
            if (true || strcmp($res, "VERIFIED") == 0) {
                ////mail('atiftariq80@gmail.com','PAYMENT VALID','PAYMENT VALID');  

            // Validate payment (Check unique txnid & correct price)
            $valid_txnid = check_txnid($data['txn_id']);
            $valid_price = check_price($data['payment_amount'], $data['item_number']);
            // PAYMENT VALIDATED & VERIFIED!
            if($valid_txnid && $valid_price){               
            //----------------- INSERT RECORDS TO DATABASE-------------------------------------
            if ($data['invoice']=='basic') {
                $price = 39;
            } else { 
                $price = 159;
            }
            $this->user_model->update_user(
                array(
                    'id' => $data['custom'],
                    'user_status' => 1,
                    'payment_date' => date("Y-m-d H:i:s",time()),
                    'next_payment_date' => date('Y-m-d', strtotime('+32 days')),
                    'user_package' => $data['invoice'],
                    'package_price' => $price
                )
            );
            $data2 = array('id' => '',
            'txn_id' => $data['txn_id'],
            'amount' => $data['payment_amount'],
            'mode ' => $data['payment_status'],
            'paypal_log' => $data['paypallog'],
            'user_id' => $data['custom'],
            'created_at' => date('Y-m-d H:i:s',time())

            );
            $this->db->insert('tbl_paypal_log', $data2);
            //----------------- INSERT RECORDS TO DATABASE-------------------------------------
            }else{                  
            // Payment made but data has been changed
            // E-mail admin or alert user
            }                       

        } elseif ($res=='INVALID') {

                // PAYMENT INVALID & INVESTIGATE MANUALY! 
                // E-mail admin or alert user
                ////mail('atiftariq80@gmail.com','PAYMENT INVALID AND INVESTIGATE MANUALY','PAYMENT INVALID AND INVESTIGATE MANUALY');  

        }       
        }       
    fclose ($fp);
    }   



回答3:


There is a really good guide to Instant Payment Notifications (IPN) and understanding how they work. This guide provides you the steps you need to have your notify_url working properly.

There are good code samples provided by Paypal that do the validation response for you, which is really nice. You can use these are the starting point for your own.



来源:https://stackoverflow.com/questions/14949508/how-to-get-transaction-details-in-notify-url-page-in-paypal

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!