简体   繁体   English

监听器中有多种产品,贝宝IPN

[英]Multiple products in listener, paypal IPN

im using paypal IPN to send information to my php code that will take that info and send attachment product to buyers email. 即时通讯使用贝宝IPN发送信息到我的php代码,它将获取该信息并将附件产品发送给买家电子邮件。

My question is if i can have multiple products in one listener, or i need separate file for every product? 我的问题是,我可以在一个侦听器中包含多个产品,还是每个产品都需要单独的文件?

What if 2 or more clients buy product at the same time, can there be any problem? 如果两个或两个以上的客户同时购买产品该怎么办? Like sending attachment only to one of them instead of two or more. 就像仅将附件发送给其中一个,而不是两个或多个。

 <?php use PHPMailer\\PHPMailer\\PHPMailer; require "PHPMailer/PHPMailer.php"; require "PHPMailer/Exception.php"; if ($_SERVER['REQUEST_METHOD'] != 'POST') { header('Location: index.php'); exit(); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://ipnpb.sandbox.paypal.com/cgi-bin/webscr'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, "cmd=_notify-validate&" . http_build_query($_POST)); $response = curl_exec($ch); curl_close($ch); if ($response == "VERIFIED" && $_POST['receiver_email'] == "your-email@hotmail.com") { $cEmail = $_POST['payer_email']; $name = $_POST['first_name'] . " " . $_POST['last_name']; $price = $_POST['mc_gross']; $currency = $_POST['mc_currency']; $item = $_POST['item_number']; $paymentStatus = $_POST['payment_status']; if ($item == "wordpressPlugin" && $currency == "USD" && $paymentStatus == "Completed" && $price == 67) { $mail = new PHPMailer(); $mail->setFrom("your-email@hotmail.com", "Sales"); $mail->addAttachment("attachment/wordpress-plugin.zip", "WordPress Plugin"); $mail->addAddress($cEmail, $name); $mail->isHTML(true); $mail->Subject = "Your Purchase Details"; $mail->Body = " Hi, <br><br> Thank you for purchase. In the attachment you will find product<br><br> Kind regards. "; $mail->send(); } } ?> 

No, there would be no problems with that. 不,不会有任何问题。 The IPN data will include an array of cart items, so you can loop through those and do whatever you need to do with each item. IPN数据将包括购物车项目数组,因此您可以遍历购物车项目并对每个项目进行任何处理。

You may be interested in our IPN template . 您可能对我们的IPN模板感兴趣。 It's a bit out-dated now, but you can see how we're preparing $cart_items into an array that's easy to loop through. 现在有点过时了,但是您可以看到我们如何将$ cart_items准备到易于循环的数组中。

// 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++;   
} 

And then... 接着...

// Loop through cart items and add each to related order_items table
foreach($cart_items as $cart_item)
{
    $cart_item_data['order_id'] = $order_id;
    $cart_item_data['subscr_id'] = $subscr_id;
    $cart_item_data['item_name'] = $cart_item['item_name'];
    $cart_item_data['item_number'] = $cart_item['item_number'];
    $cart_item_data['os0'] = $cart_item['option_selection1'];
    $cart_item_data['on0'] = $cart_item['option_name1'];
    $cart_item_data['os1'] = $cart_item['option_selection2'];
    $cart_item_data['on1'] = $cart_item['option_name2'];
    $cart_item_data['os2'] = $cart_item['option_selection3'];
    $cart_item_data['on2'] = $cart_item['option_name3'];
    $cart_item_data['os3'] = $cart_item['option_selection4'];
    $cart_item_data['on3'] = $cart_item['option_name4'];
    $cart_item_data['os4'] = $cart_item['option_selection5'];
    $cart_item_data['on4'] = $cart_item['option_name5'];
    $cart_item_data['os5'] = $cart_item['option_selection6'];
    $cart_item_data['on5'] = $cart_item['option_name6'];
    $cart_item_data['os6'] = $cart_item['option_selection7'];
    $cart_item_data['on6'] = $cart_item['option_name7'];
    $cart_item_data['os7'] = $cart_item['option_selection8'];
    $cart_item_data['on7'] = $cart_item['option_name8'];
    $cart_item_data['os8'] = $cart_item['option_selection9'];
    $cart_item_data['on8'] = $cart_item['option_name9'];
    $cart_item_data['quantity'] = $cart_item['quantity'];
    $cart_item_data['custom'] = $cart_item['custom'];
    $cart_item_data['mc_gross'] = $cart_item['mc_gross'];
    $cart_item_data['mc_handling'] = $cart_item['mc_handling'];
    $cart_item_data['mc_shipping'] = $cart_item['mc_shipping'];
    $cart_item_data['raw_log_id'] = $ipn_log_data_id;
    $cart_item_data['btn_id'] = $cart_item['btn_id'];

    $cart_item_id = $db -> query_insert('order_items', $cart_item_data);
}

That example prepares the data to enter in the db, but you should be able to apply that to whatever you're doing. 该示例准备将数据输入数据库,但是您应该能够将其应用于正在执行的任何操作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM