簡體   English   中英

貝寶從貝寶傳遞item_number到我的腳本

[英]Paypal passing item_number from paypal to my script

我正在使用Paypal Standard,並且嘗試成功完成交易后,從Paypal取回item_number(在此用例中是唯一的)。 我可以毫無問題地將其傳遞給Paypal,在交易過程中會看到它的顯示。 交易完成時,我正在使用以下代碼。 有人可以告訴我在“成功”頁面上顯示項目_number時需要做些什么-請參閱下面的成功案例。

<?php
require_once("library.php"); // include the library file
define('EMAIL_ADD', 'me@gmail.com'); // define any notification email
define('PAYPAL_EMAIL_ADD', 'me-facilitator@gmail.com'); // facilitator email which will receive payments change this email to a live paypal account id when the site goes live
require_once("paypal_class.php");
    $p              = new paypal_class(); // paypal class
    $p->admin_mail  = EMAIL_ADD; // set notification email
$action         = $_REQUEST["action"];

switch($action){
case "process": // case process insert the form data in DB and process to the paypal
    mysql_query("INSERT INTO `purchases` (`invoice`, `product_id`, `product_name`, `product_quantity`, `product_amount`, `payer_fname`, `payer_lname`, `payer_address`, `payer_city`, `payer_state`, `payer_zip`, `payer_country`, `payer_email`, `payment_status`, `posted_date`) VALUES ('".$_POST["invoice"]."', '".$_POST["product_id"]."', '".$_POST["product_name"]."', '".$_POST["product_quantity"]."', '".$_POST["product_amount"]."', '".$_POST["payer_fname"]."', '".$_POST["payer_lname"]."', '".$_POST["payer_address"]."', '".$_POST["payer_city"]."', '".$_POST["payer_state"]."', '".$_POST["payer_zip"]."', '".$_POST["payer_country"]."', '".$_POST["payer_email"]."', 'pending', NOW())");
    $this_script = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
    $p->add_field('business', PAYPAL_EMAIL_ADD); // Call the facilitator eaccount
    $p->add_field('cmd', $_POST["cmd"]); // cmd should be _cart for cart checkout
    $p->add_field('upload', '1');
    $p->add_field('return', $this_script.'?action=success'); // return URL after the transaction got over
    $p->add_field('cancel_return', $this_script.'?action=cancel'); // cancel URL if the trasaction was cancelled during half of the transaction
    $p->add_field('notify_url', $this_script.'?action=ipn'); // Notify URL which received IPN (Instant Payment Notification)
    $p->add_field('currency_code', $_POST["currency_code"]);
    $p->add_field('invoice', $_POST["invoice"]);
    $p->add_field('item_name_1', $_POST["product_name"]);
    $p->add_field('item_number_1', $_POST["product_id"]);
    $p->add_field('quantity_1', $_POST["product_quantity"]);
    $p->add_field('amount_1', $_POST["product_amount"]);
    $p->add_field('first_name', $_POST["payer_fname"]);
    $p->add_field('last_name', $_POST["payer_lname"]);
    $p->add_field('address1', $_POST["payer_address"]);
    $p->add_field('city', $_POST["payer_city"]);
    $p->add_field('state', $_POST["payer_state"]);
    $p->add_field('country', $_POST["payer_country"]);
    $p->add_field('zip', $_POST["payer_zip"]);
    $p->add_field('night_phone_b', $_POST["phone"]);
    $p->add_field('email', $_POST["payer_email"]);
    $p->submit_paypal_post(); // POST it to paypal
    //$p->dump_fields(); // Show the posted values for a reference, comment this line before app goes live
break;

case "success": // success case to show the user payment got success
    $i=$_GET['item_number'];
    echo '<title>Payment Done Successfully</title>';
    echo '<center><h1> Thank You for your purchase!</h1>';
    echo '<div class="as_wrapper">';
    echo "<h1>Click the image below to immediately download your stencil</h1>";
    echo '<br><br>';
    echo '<p>This file is a PDF. You will find it in your downloads folder. The filename will start with the word <b>stencil</b>. You can search for the word <b>stencil</b></p>';
    echo $i ; //Display item_number here
    echo '</center>';
break;

case "cancel": // case cancel to show user the transaction was cancelled
    echo "<h1>Transaction Cancelled";
break;

case "ipn": // IPN case to receive payment information. this case will not displayed in browser. This is server to server communication. PayPal will send the transactions each and every details to this case in secured POST menthod by server to server. 
    $trasaction_id  = $_POST["txn_id"];
    $payment_status = strtolower($_POST["payment_status"]);
    $invoice        = $_POST["invoice"];
    $log_array      = print_r($_POST, TRUE);
    $log_query      = "SELECT * FROM `paypal_log` WHERE `txn_id` = '$trasaction_id'";
    $log_check      = mysql_query($log_query);
    if(mysql_num_rows($log_check) <= 0){
        mysql_query("INSERT INTO `paypal_log` (`txn_id`, `log`, `posted_date`) VALUES ('$trasaction_id', '$log_array', NOW())");
    }else{
        mysql_query("UPDATE `paypal_log` SET `log` = '$log_array' WHERE `txn_id` = '$trasaction_id'");
    } // Save and update the logs array
    $paypal_log_fetch   = mysql_fetch_array(mysql_query($log_query));
    $paypal_log_id      = $paypal_log_fetch["id"];
    if ($p->validate_ipn()){ // validate the IPN, do the others stuffs here as per your app logic
        mysql_query("UPDATE `purchases` SET `trasaction_id` = '$trasaction_id ', `log_id` = '$paypal_log_id', `payment_status` = '$payment_status' WHERE `invoice` = '$invoice'");
        $subject = 'Instant Payment Notification - Recieved Payment';
        $p->send_report($subject); // Send the notification about the transaction
    }else{
        $subject = 'Instant Payment Notification - Payment Fail';
        $p->send_report($subject); // failed notification
    }
break;
}
?>

我接到您的電話,並且在筆記中有明天要打電話給您。 然后我在這里發現了這個問題。

我假設您已經使用自動返回設置在您的帳戶上啟用了PDT,以指向您的返回URL。

有了這個假設,您只需要調整$ _GET ['item_number']。 PDT / IPN不會(通常)以這種方式發送它。 您知道如何在請求中以item_number_1,item_number_2等形式構建它嗎? 將其拉出時,您需要執行相同的操作,只是PayPal決定使事情變得有趣,然后刪除第二個_。 因此,您將使用$ _GET ['item_number1'],$ _ GET ['item_number2']等。

當然,您通常會經過某種循環,以挑選出可能在訂單上的所有物品。 這是我一直在IPN腳本中提取項目詳細信息的方式(與PDT相同)

// Cart Items
$num_cart_items = isset($_POST['num_cart_items']) ? $_POST['num_cart_items'] : '';

$i = 1;
$cart_items = array();   
while(isset($_POST['item_number' . $i]))   
{   
    $item_number = isset($_POST['item_number' . $i]) ? $_POST['item_number' . $i] : '';   
    $item_name = isset($_POST['item_name' . $i]) ? $_POST['item_name' . $i] : '';   
    $quantity = isset($_POST['quantity' . $i]) ? $_POST['quantity' . $i] : '';  
    $mc_gross = isset($_POST['mc_gross_' . $i]) ? $_POST['mc_gross_' . $i] : 0;
    $mc_handling = isset($_POST['mc_handling' . $i]) ? $_POST['mc_handling' . $i] : 0;
    $mc_shipping = isset($_POST['mc_shipping' . $i]) ? $_POST['mc_shipping' . $i] : 0;
    $custom = isset($_POST['custom' . $i]) ? $_POST['custom' . $i] : '';   
    $option_name1 = isset($_POST['option_name1_' . $i]) ? $_POST['option_name1_' . $i] : '';   
    $option_selection1 = isset($_POST['option_selection1_' . $i]) ? $_POST['option_selection1_' . $i] : '';   
    $option_name2 = isset($_POST['option_name2_' . $i]) ? $_POST['option_name2_' . $i] : '';   
    $option_selection2 = isset($_POST['option_selection2_' . $i]) ? $_POST['option_selection2_' . $i] : '';
    $option_name3 = isset($_POST['option_name3_' . $i]) ? $_POST['option_name3_' . $i] : '';   
    $option_selection3 = isset($_POST['option_selection3_' . $i]) ? $_POST['option_selection3_' . $i] : '';
    $option_name4 = isset($_POST['option_name4_' . $i]) ? $_POST['option_name4_' . $i] : '';   
    $option_selection4 = isset($_POST['option_selection4_' . $i]) ? $_POST['option_selection4_' . $i] : '';
    $option_name5 = isset($_POST['option_name5_' . $i]) ? $_POST['option_name5_' . $i] : '';   
    $option_selection5 = isset($_POST['option_selection5_' . $i]) ? $_POST['option_selection5_' . $i] : '';
    $option_name6 = isset($_POST['option_name6_' . $i]) ? $_POST['option_name6_' . $i] : '';   
    $option_selection6 = isset($_POST['option_selection6_' . $i]) ? $_POST['option_selection6_' . $i] : '';
    $option_name7 = isset($_POST['option_name7_' . $i]) ? $_POST['option_name7_' . $i] : '';   
    $option_selection7 = isset($_POST['option_selection7_' . $i]) ? $_POST['option_selection7_' . $i] : '';
    $option_name8 = isset($_POST['option_name8_' . $i]) ? $_POST['option_name8_' . $i] : '';   
    $option_selection8 = isset($_POST['option_selection8_' . $i]) ? $_POST['option_selection8_' . $i] : '';
    $option_name9 = isset($_POST['option_name9_' . $i]) ? $_POST['option_name9_' . $i] : '';   
    $option_selection9 = isset($_POST['option_selection9_' . $i]) ? $_POST['option_selection9_' . $i] : '';

    $btn_id = isset($_POST['btn_id' . $i]) ? $_POST['btn_id' . $i] : '';

    $current_item = array(   
                           'item_number' => $item_number,   
                           'item_name' => $item_name,   
                           'quantity' => $quantity, 
                           'mc_gross' => $mc_gross, 
                           'mc_handling' => $mc_handling, 
                           'mc_shipping' => $mc_shipping, 
                           'custom' => $custom,   
                           'option_name1' => $option_name1,   
                           'option_selection1' => $option_selection1,   
                           'option_name2' => $option_name2,   
                           'option_selection2' => $option_selection2, 
                           'option_name3' => $option_name3, 
                           'option_selection3' => $option_selection3, 
                           'option_name4' => $option_name4, 
                           'option_selection4' => $option_selection4, 
                           'option_name5' => $option_name5, 
                           'option_selection5' => $option_selection5, 
                           'option_name6' => $option_name6, 
                           'option_selection6' => $option_selection6, 
                           'option_name7' => $option_name7, 
                           'option_selection7' => $option_selection7, 
                           'option_name8' => $option_name8, 
                           'option_selection8' => $option_selection8, 
                           'option_name9' => $option_name9, 
                           'option_selection9' => $option_selection9, 
                           'btn_id' => $btn_id
                          );   

    array_push($cart_items, $current_item);   
    $i++;   
}  

這將為$ cart_items加載所有不同的項目,然后您可以循環遍歷以相應地輸出各個參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM