【问题标题】:How do I turn off PayPal IPN in Magento?如何在 Magento 中关闭 PayPal IPN?
【发布时间】:2012-03-11 06:17:40
【问题描述】:

当人们在我的 Magento 网上商店使用 PAyPal 成功付款时,它会自动创建具有唯一发票编号的发票。出于记账的原因,我必须禁用它。

我已经找了几个星期了,但我仍然没有找到解决这个问题的方法。到目前为止我所知道的是,这是由 IPN 引起的。问题是我不知道如何在不损坏我的商店或贝宝付款的情况下关闭它。

更多规格: - 版本:Magento 1.6.2.0 - 标准贝宝

包含 IPN 的文件: www/app/code/core/Mage/Paypal/controllers

【问题讨论】:

    标签: magento paypal payment-gateway paypal-ipn


    【解决方案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 有三种状态:

        1. 开启
        2. 关闭
        3. 已禁用

        第一个选项可让您在您的 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,直到您将代码跟踪到正确的位置。

        祝你好运!

        【讨论】:

          猜你喜欢
          • 2011-12-26
          • 1970-01-01
          • 2012-01-02
          • 2017-02-10
          • 2012-06-24
          • 1970-01-01
          • 1970-01-01
          • 2018-12-28
          • 2012-01-08
          相关资源
          最近更新 更多