【问题标题】:Multiple products in listener, paypal IPN监听器中的多个产品,贝宝 IPN
【发布时间】:2019-03-31 02:50:43
【问题描述】:

我使用 paypal IPN 将信息发送到我的 php 代码,该代码将获取该信息并将附件产品发送到买家电子邮件。

我的问题是我是否可以在一个侦听器中拥有多个产品,或者我需要为每个产品提供单独的文件?

如果2个或更多客户同时购买产品,会不会有什么问题? 就像只向其中一个而不是两个或更多发送附件一样。

<?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();
		}
	}

?>

【问题讨论】:

    标签: php post paypal paypal-ipn


    【解决方案1】:

    不,这样不会有问题。 IPN 数据将包含一系列购物车商品,因此您可以遍历这些商品并对每个商品执行您需要执行的任何操作。

    您可能对我们的IPN template 感兴趣。现在有点过时了,但你可以see how we're preparing $cart_items into an array 很容易循环。

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

    然后……

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

    该示例准备要输入数据库的数据,但您应该能够将其应用于您正在做的任何事情。

    【讨论】:

      猜你喜欢
      • 2016-04-29
      • 2013-06-12
      • 2015-11-04
      • 2012-11-15
      • 2017-12-21
      • 2012-03-13
      • 2015-04-05
      • 2015-06-16
      • 2016-05-09
      相关资源
      最近更新 更多