【发布时间】:2014-03-24 13:07:57
【问题描述】:
我一直在尝试将 paypal 集成到我的网站中,但遇到了问题。在我的网站上,我无需注册即可向客户销售产品。基本上,客户选择了他想要的产品,我从贝宝获得了我需要的所有运输信息。因此,当我的 IPN 返回VERIFIED 状态时,我为客户创建了一个订单并将其保存到数据库中。但是现在我想在他们完成交易时给他们一个礼品码。我知道,我可以在保存订单后通过电子邮件发送代码,但我想在他们从贝宝重定向回return_url 时向他们展示。由于在他们开始贝宝交易之前订单不存在,并且礼品代码在他们被重定向回来时创建,我不知道如何将礼品代码连接到他们的订单。我想我也许可以做到,如果贝宝向我的return_url 发送额外的数据,很可能是transaction_id。有没有什么方法可以实现这样的功能,而不必在我的表单中添加另一个隐藏的输入?我不希望人们继续愚弄 FireBug 并将变量更改为他们想要的。
我基于this article实现了IPN,并将订单保存在VERIFIED部分,如下所示:
if (strcmp($res, "VERIFIED") == 0) {
$data['Order']['first_name']=$_POST["first_name"];
$data['Order']['last_name']=$_POST["last_name"];
$data['Order']['email']=$_POST["payer_email"];
$data['Order']['res'] = $res;
$this->Order->create();
if ($this->Order->save($data)) {
}
} else if (strcmp ($res, "INVALID") == 0) {
}
}
所以我从 paypal 获得了一些信息(first_name、last_name 和 payer_email)。但是,这发生在贝宝和网站之间的会话中,而不是用户和网站之间的会话中,所以我无法在 IPN 中声明一个变量,然后在用户从贝宝重定向到 return_url 时读取它。
【问题讨论】:
-
抱歉,我可能不完全理解,但是“礼品码”是您的发明还是贝宝的功能?
-
贝宝 IPN 应该有一个“txn_id”变量。 商家用于买家付款的原始交易识别号,案件依据该号码进行登记。
-
问题是,paypal 不会将任何数据返回到 return_url,只会将所有信息传递给 IPN,而 IPN 并没有以任何方式连接(或者在我看来是这样)。我在某处读过,您可以在开始购买之前创建另一个输入并将一些数据传递给它,当用户被重定向回来时,这些数据将被返回,但我不想传递任何可以通过编辑更改的数据DOM。
-
礼品码只是一个奖励,用户在完成购买时获得。然后他可以玩一个小游戏并赢得奖品,但他必须输入密码才能玩。
-
我知道txn_id,但是当用户返回网站时,无法知道他刚刚完成的交易的id是什么。