如何将IPN用户的用户名添加到Paypal交易(PHP)


IPN how to add the users username to the Paypal transaction (PHP)

所以我已经将这段未经测试的代码添加到我的IPN

if (strcmp ($res, "VERIFIED") == 0) {
    // check whether the payment_status is Completed
    // check that txn_id has not been previously processed
    // check that receiver_email is your PayPal email
    // check that payment_amount/payment_currency are correct
    // process payment and mark item as paid.
    // assign posted variables to local variables
    $item_name = $_POST['item_name'];
    $item_number = $_POST['item_number'];
    $payment_status = $_POST['payment_status'];
    $payment_amount = $_POST['mc_gross'];
    $payment_currency = $_POST['mc_currency'];
    $txn_id = $_POST['txn_id'];
    $receiver_email = $_POST['receiver_email'];
    $payer_email = $_POST['payer_email'];
    include 'connect.php';
    if($payment_status == "completed")
    {
        mysql_query('UPDATE `users` SET `is_member`= 1 WHERE `username` == $username')
    }
    else
    {
       mysql_query('UPDATE `users` SET `is_member`= 0 WHERE `username` == $username')
    }

实质上改变了依赖于payment_status的数据。我的问题是paypal不知道用户名是什么。我该如何向paypal提供这些信息?我是通过订阅按钮还是修改html代码?

这里有几个选项可以完成您与IPN的用户/会员对账,

  1. 在结帐时将"username"/"email"存储到您的数据库中,当付款完成时,从IPN POST-back读取$payer_email并使数据与您的数据库条目(订单详细信息)相匹配

虽然这需要对代码进行最少的更改,但当用户使用不同的电子邮件帐户(PayPal帐户)支付

时,它将无法工作。
  • (推荐)使用"invoice"参数唯一标识要对账的订单。生成一个唯一的发票ID,并将其与用户名/电子邮件一起存储到结帐时的数据库;将"发票"标签传递给PayPal, IPN将在付款完成时返回相同的标签;获取$invoice值并将其与您的订单数据条目进行映射。
  • 这里有一些详细的参考:

    IPN变量

    查看如何添加"invoice"字段:

    标准支付按钮,参见HTML变量为PayPal支付标准

    关于ExpressCheckout API,请参见SetExpressCheckout API Operation (NVP)