PayPal - 返回URL页面和变量

12

我能否在返回URL中获取PayPal的POST变量?我想根据用户的交易是否已完成/待定/失败,在返回URL页面上显示响应消息。我正在使用PayPal沙盒账户进行测试。

这是我的代码:

<input type="hidden" name="item_name" value="Credit Purchase">    
<input type="hidden" name="business" value="<?php echo paypal_business_id;?>">
<input type="hidden" name="rm" value="2">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="currency_code" id="currency_code" value="GBP">
<input type="hidden" name="custom" id="custom" value="<?php echo $user."@@@".$num_purchase;?>">  
<input type="hidden" name="return" value="<?php echo base_url(); ?>buy/success">
<input type="hidden" name="cancel_return" value="<?php echo base_url(); ?>"> 
 <input type="hidden" name="notify_url" value="<?php echo base_url(); ?>buy/notify
3个回答

14

可以在return变量中添加订单ID,这样当用户返回时,您就可以从订单ID获取订单信息并向其展示。

例如:

<input type="hidden" name="return" value="myReturnUrl.php?OrderID=88273882717A72734">

感谢您的回复。我的要求是了解付款状态。就像我们从PayPal在通知URL中发布的变量集一样,返回URL中是否也有相同的变量集?之前我尝试过几天前,我可以得到它,但现在它们没有被发布到返回URL。我想在返回URL页面上显示交易成功/失败的消息。 - user867241
1
我已经成功地让事情正常运作了。问题是因为在自动重定向的10秒结束之前,我点击了返回链接。 :) - user867241
@vishnu - "我正在使用它,但在这种情况下,我只能获取产品信息,而无法获取交易 ID(tx_id),我该如何通过 PayPal 获取 txn_id。" - 请创建一个新的问题,我不明白你真正想要什么 - 或者更好地尝试理解我在这里所说的 - 我会返回我创建的订单 ID 来定位订单... - Aristos

4
等待IPN通知到来,并查看其中的payment_status。
由于交易会自动进行欺诈检查,而且可以通过银行账户提供资金,因此返回到您的返回URL并不总是等同于成功交易。

有关您可以预期的IPN变量列表,请参见PayPal IPN和PDT变量
您至少需要查看以下值:

  • payment_status
  • mc_gross和/或payment_gross(如果交易是以美元计价,则使用payment_gross,否则使用mc_gross)
  • payment_type
  • pending_reason

在成功页面中,我会检查付款状态是否已完成。根据状态,我已经制定了一个响应页面。现在我面临的问题是,在Mozilla Firefox(9.0.1)中,一旦我完成交易,在被重定向到返回URL页面之前,浏览器本身会显示一个消息,要求确认弹出窗口以继续进行。如果我立即点击“确定”按钮,那么事情就会顺利进行,但如果我没有采取任何行动,页面将自动重定向,我将无法获取从PayPal发布的任何变量。 - user867241
这种问题在Chrome和IE中不存在。有人能告诉我如何消除火狐浏览器中的问题吗? - user867241
上面的链接已经失效,而且v1 PayPal API已经被弃用。 - Victor Schröder

-2

如果你等待 10 秒钟,这种问题在 FF 中确实存在。 我的解决方案是将返回 url 更改为 "xxx.com?orderId=xxx"。 然后判断它是 POST 还是 GET。并通过 orderId 选择订单信息。 你不需要担心付款状态。因为如果它返回到你的商店而不是 "cancel_return",那么付款应该始终成功。


2
哇,Quan,这是极其糟糕和危险的建议。你确实需要验证付款状态。你不应该仅仅因为返回URL被调用就假定付款成功。你不应该假设返回是由PayPal调用的,你不应该假设PayPal已经处理了付款,也不应该在返回URL中包含订单ID。 - user432297

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接