“关闭它”有点模糊,但 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,直到您将代码跟踪到正确的位置。
祝你好运!