如何在 Magento 中关闭 PayPal IPN?
Posted
技术标签:
【中文标题】如何在 Magento 中关闭 PayPal IPN?【英文标题】:How do I turn off PayPal IPN in Magento? 【发布时间】:2012-03-11 06:17:40 【问题描述】:当人们在我的 Magento 网上商店使用 PAyPal 成功付款时,它会自动创建具有唯一发票编号的发票。出于记账的原因,我必须禁用它。
我已经找了几个星期了,但我仍然没有找到解决这个问题的方法。到目前为止我所知道的是,这是由 IPN 引起的。问题是我不知道如何在不损坏我的商店或贝宝付款的情况下关闭它。
更多规格: - 版本:Magento 1.6.2.0 - 标准贝宝
包含 IPN 的文件: www/app/code/core/Mage/Paypal/controllers
【问题讨论】:
【参考方案1】:无需破解您的核心 Magento 文件,只需在 PayPal 中关闭 IPN。
默认情况下,PayPal IPN 有三种状态:
开启 离开 已禁用 第一个选项将让您在您的 PayPal 个人资料中指定一个 IPN URL,并且您可以访问“历史”选项卡下的“IPN 历史”。您帐户的所有 IPN 数据都将发送到您指定的 URL,除非您在每次交易中使用 notify_url / NOTFIFYURL 覆盖它。
第二个选项将在您的帐户上关闭 IPN,但您仍然可以通过在每个交易的基础上设置 notify_url / NOTIFYURL 来使用它。这是 Magento 使用的。
第三个选项将停止为您的帐户生成 IPN 消息,即使您的购物车(在本例中为 Magento)专门通过发送 notify_url / NOTIFYURL 请求 IPN 消息。不会发送任何 IPN 消息。
要将 IPN 设置为“禁用”,首先在您的 PayPal 帐户中将其设置为“开启”,并提供一个指向 IPN 地址的 URL(尽管这可以是任何地址,例如,只需输入 http://www.google.com/)。 启用后,查找说明“停止接收 IPN 消息(禁用)”的选项。使用它来完全禁用 IPN。
来源:-https://lastdropofink.co.uk/tools/magento/magento-paypal-ipn/
【讨论】:
【参考方案2】:在过去的几周里,我真正感到惊讶的是,实际上没有启用此功能的网站数量很多,而且不仅限于自行构建,即使是非常昂贵的 Magento 构建也错过了这一点作为一个步骤。
打开 PayPal 即时付款通知(简称 IPN)是一个绝妙的主意,因为这意味着当客户使用 PayPal 为商品付款时,付款信息将在管理面板中的 Magento 订单详细信息中更新。
只需片刻即可启用,下面我将向您展示如何为您的 Magento 站点启用 IPN。这意味着当您通过 PayPal Express 收到订单时,您实际上可以在 Magento 中看到交易详情,如果您使用 eSellerPro 并启用了 eSellerPro 连接器来处理销售订单,您的订单和付款详情将匹配自动。
只需几分钟即可完成设置,这里有 6 个简单的步骤:
1 登录 PayPal
2 将鼠标悬停在“个人资料”上并选择“我的销售偏好”
3 在页面中途,点击“即时支付通知”旁边的“更新”
现在输入以下详细信息:
通知 URL - 这只是 http://your-magento-store.com/paypal/ipn/ 将“your-magento-store.com”替换为您的网站地址。
大功告成。
要测试 IPN 是否工作非常简单,只需通过您的网站进行测试交易(为此您需要一个辅助 PayPal 帐户),几分钟后,在您的 Magento 管理面板中检查订单有已更新 PayPal 交易详情。
为了帮助你,我把图片放在下面,左边的图片没有IPN细节,右边的图片有。
【讨论】:
【参考方案3】:或者,与其破解您的核心 Magento 文件,不如在 PayPal 中关闭 IPN。
默认情况下,PayPal IPN 有三种状态:
-
开启
关闭
已禁用
第一个选项可让您在您的 PayPal 个人资料中指定一个 IPN URL,并且您可以访问“历史记录”选项卡下的“IPN 历史记录”。您帐户的所有 IPN 数据都将发送到您指定的 URL,除非您在每个交易的基础上使用 notify_url / NOTFIFYURL 覆盖它。
第二个选项将在您的帐户上关闭 IPN,但您仍然可以通过在每个交易的基础上设置 notify_url / NOTIFYURL 来使用它。这就是 Magento 使用的。
第三个选项将停止为您的帐户生成 IPN 消息,即使您的购物车(在本例中为 Magento)通过发送 notify_url / NOTIFYURL 专门请求 IPN 消息。无论如何都不会传递任何 IPN 消息。
要将 IPN 设置为“已禁用”,首先在您的 PayPal 帐户中将其设置为“开启”,并提供一个指向 IPN 地址的 URL(尽管这可以是任何地址,例如,只需输入 http://www.google.com/)。 启用后,查找说明“停止接收 IPN 消息(禁用)”的选项。使用它来完全禁用 IPN。
【讨论】:
我将首先尝试这个解决方案,因为它不是那么激烈,而且我仍然可以将 IPN 用于我的不开自动发票的服务。如果是这样的话,那将是令人沮丧的,因为我已经联系了 Paypal 网站管理员,他们说我必须在 Magento 中这样做。如果有效,我会及时通知您。我刚刚禁用它。 如果禁用它,您将无法通过该 PayPal 帐户使用 IPN。它将在帐户级别禁用整个 IPN 功能。 亲爱的罗伯特,感谢您提供更多信息。我刚刚在paypal下了一个订单,它似乎有效。唯一的缺点是 Magento 也不会向客户和我发送确认电子邮件,因为状态为待处理。你知道这个问题的解决方案吗? 啊,真不幸。由于它依赖于 IPN 确认,因此除了再次修改 Magento 核心文件之外,几乎没有什么可做的。【参考方案4】:如果我没看错,您应该将您的 paypal 付款方式的 Payment Action 更改为 Authorization。在那里查看更多信息: http://www.magentocommerce.com/knowledge-base/entry/setting-up-paypal-for-your-magento-store#1.1
【讨论】:
我已经尝试过这个选项,但是一旦我索取了钱,它就会开具发票。 Paypal 给你 3 天的时间来取款,有时我必须等一周才能开具发票。感谢您尝试提供帮助!再次感谢 Alan、Robert 和 Zyava。我会及时通知你的!【参考方案5】:“关闭它”有点模糊,但 Magento 端没有配置设置允许您使用 IPN 系统接受 PayPal 标准付款但不能创建发票。您正在考虑编写自定义代码来执行此操作。这里有一些起点。
PayPal IPN 与回调 URL 一起使用。也就是说,一旦 PayPal 处理了一笔付款,它就会从 Magento 获取一个特定的 URL,并在 post 字段中包含一组特定的数据。然后,基于此信息,采取适当的行动(创建发票、发放信用证等)。因此,实现目标的最快方法是更改 PayPal 配置中的 IPN URL。这意味着 PayPal 仍在通知 URL,而不是 Magento URL,并且永远不会创建发票。
如果这不起作用或有不可接受的副作用,这里是您感兴趣的代码点。假设您使用的是标准 Magento PayPal 设置,IPN URL 配置在
http://yourstore.example.com/paypal/ipn/
Magento 将使用indexAction
方法处理这个请求
#File: app/code/core/Mage/Paypal/controllers/IpnController.php
public function indexAction()
if (!$this->getRequest()->isPost())
return;
try
$data = $this->getRequest()->getPost();
Mage::getModel('paypal/ipn')->processIpnRequest($data, new Varien_Http_Adapter_Curl());
catch (Exception $e)
Mage::logException($e);
此方法的业务逻辑(包括您的发票创建)从 paypal/ipn
模型开始。在标准系统中,这会解析为
#File: app/code/core/Mage/Paypal/Model/Ipn.php
class Mage_Paypal_Model_Ipn
....
从此处跟踪代码以找到您想要rewrite
的方法并实现您所需的功能更改(而不是创建发票)。您最好的选择是设置一个 PayPal 开发人员沙盒帐户,这样您就可以反复点击该 URL,直到您将代码跟踪到正确的位置。
祝你好运!
【讨论】:
以上是关于如何在 Magento 中关闭 PayPal IPN?的主要内容,如果未能解决你的问题,请参考以下文章
Magento,如何更改 PayPal/Express/Review 页面
如何从magento 1.9中的paypal标准中删除checkout