所以我将这个未经测试的代码添加到我的 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 代码来完成?
最佳答案
这里有几个选项可以完成您的用户/成员(member)与 IPN 的协调,
- 在结帐时将“用户名”/“电子邮件”存储到您的数据库中,并在付款完成后,从 IPN POST-back 中读取
$payer_email
并将数据与您的数据库条目匹配(订单详情)
虽然这需要对您的代码进行最少的更改,但当用户使用不同的电子邮件帐户(PayPal 帐户)付款时,它会无法工作
- (推荐)使用“invoice”参数来唯一标识对帐订单。
生成一个唯一的发票 ID,并在结账时将其与用户名/电子邮件一起存储到您的数据库中;将该“发票”标签传递给 PayPal,IPN 将在付款完成时返回相同的标签;获取
$invoice
值并将其映射到您的订单数据条目。
这里有一些引用以获取更多详细信息:
在此处查看如何添加“发票”字段:
有关标准付款按钮,请参阅 HTML Variables for PayPal Payments Standard
有关 Express Checkout API,请参阅 SetExpressCheckout API Operation (NVP)
关于php - IPN 如何将用户用户名添加到 Paypal 交易 (PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32635749/