如何关闭Magento中的PayPal IPN?

时间:2012-02-20 22:00:41

标签: magento paypal payment-gateway paypal-ipn

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

我一直在寻找几个星期,但我仍然没有找到解决这个问题的方法。到目前为止我所知道的是,这是由IPN引起的。问题是我不知道如何在不损坏我的商店或PayPal付款的情况下关闭此功能。

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

包含IPN的文件: WWW /应用程序/代码/核心/法师/贝宝/控制器

5 个答案:

答案 0 :(得分:2)

“关闭它”有点模糊,但Magento方面没有配置设置允许您使用IPN系统接受PayPal标准支付,但不能创建发票。您正在考虑编写自定义代码来执行此操作。以下是一些起点。

PayPal IPN使用回调网址。也就是说,一旦PayPal处理了付款,它就会从帖子字段中的一组特定数据中获取Magento中的特定URL。然后,根据此信息,采取适当的措施(创建发票,发放信用等)。因此,实现目标的最快方法是更改​​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,直到您将代码跟踪到正确的位置。

祝你好运!

答案 1 :(得分:1)

而不是黑客攻击你的核心Magento文件,只需在PayPal中关闭IPN。

默认情况下,PayPal IPN有三种状态:

在 离 残 第一个选项将允许您在PayPal配置文件中指定IPN URL,并且您可以访问“历史记录”选项卡下的“IPN历史记录”。您的帐户的所有IPN数据都将发送到您指定的网址,除非您在每笔交易的基础上使用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 :(得分:0)

如果我说得对,您应该将付款操作更改为授权,以支付您的PayPal付款方式。在那里查看更多信息: http://www.magentocommerce.com/knowledge-base/entry/setting-up-paypal-for-your-magento-store#1.1

答案 3 :(得分:0)

或者,不要乱砍你的核心Magento文件,只需关闭PayPal中的IPN即可。

默认情况下,PayPal IPN有三种状态:

  1. 禁用
  2. 第一个选项可让您在PayPal个人资料中指定IPN网址,并且您可以访问“历史记录”标签下的“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。

答案 4 :(得分:0)

过去几周我真的感到惊讶的是,实际上没有打开过这个网站的数量并不仅限于自建,即使真正昂贵的Magento版本也没有这个作为一个步骤。

打开PayPal即时付款通知(简称IPN)是一个很好的主意,因为当客户使用PayPal支付项目时,支付信息将在管理面板中的Magento订单详细信息上更新。

启用只需几分钟,我将向您展示如何为您的Magento网站启用IPN。这意味着,当您通过PayPal Express收到订单时,您实际上可以在Magento中查看交易详情,如果您正在使用eSellerPro并启用了eSellerPro Connector以进行销售订单处理,那么您的订单和付款详情会自动匹配。

设置它不会花费很多时间,这里有6个简单的步骤:

1登录PayPal

2将鼠标悬停在“个人资料”上,然后选择“我的销售偏好设置”

3在页面中间,点击“即时付款通知”

旁边的“更新”

现在输入以下详细信息:

通知网址 - 这只是http://your-magento-store.com/paypal/ipn/用您的网站地址替换“your-magento-store.com”。 < =这是通常会让每个人都吵闹的部分,因为他们不确定要在这里输入什么。 IPN消息 - 将其设置为“接收IPN消息(已启用)” 按保存

这就完成了工作。

要测试IPN是否正常工作很简单,只需通过您的网站进行测试交易(您需要一个辅助PayPal帐户),几分钟后,检查您的Magento管理面板中的订单已经已更新PayPal交易详情。

为了帮助你,我已经放到下面的图片,左边的图片没有IPN细节,右边的图片也没有。