ecshop 2.7.2 在 启用 paypal 支付方式后，使用paypal支付返回网站发生支付失败，实际已经支付的错误
本ecshop paypal 插件，采用 paypal IPN 服务器自动对单，免除掉单烦恼, 适用于ecshop 2.7.X 系列版本
With IPN the code will run regardless of whether or not the buyer reaches your final checkout page or not. Again, it is server-to-server communication and is entirely separate from the user’s interaction with your application.
如下文章可以解释的很清晰 IPN 和 PDT 的区别了
一句话解释就是 PDT 是依靠客户浏览器返回到商品网站来确认付款成功，而IPN则可独立于浏览器和服务器之间，IPN 是端到端(Paypal 到 网站) 的沟通，他可防止所谓的掉单现象的发生，对于一些需要自动化的任务有较好的效果，(比如游戏币的自动发卡，自动充值)。
I’d like to backup just a little bit now and discuss some of the differences between Instant Payment Notification (IPN) and Payment Data Transfer (PDT). They are very similar in the way they work so if you’re already familiar with PDT you may feel right at home with IPN. There is really one major difference that is very important to understand.
PDT was designed with one simple goal in mind: provide transaction data to checkout systems using Payments Standard so that it can be displayed on the merchant’s “thank you” or “completed” page. When utilizing PDT you have the option of data being returned as form data (POST) or as URL parameters (GET). You can then build your thank you page in a dynamic fashion so that users can print the page as a receipt, simply save it for their records, etc. It is a very useful tool when this is necessary, however, you cannot rely on PDT for automating tasks because there is no guarantee that the user will ever make it to your “thank you” page when working with PayPal Standard Payments. Even with Auto-Return enabled in your PayPal profile the user could close the browser before being redirected and the code on your thank you page will never run.
With IPN the code will run regardless of whether or not the buyer reaches your final checkout page or not. Again, it is server-to-server communication and is entirely separate from the user’s interaction with your application. Once that transaction is complete the data will be sent to your IPN listener and will be handled accordingly. This is why it is highly recommended you utilize Instant Payment Notification instead of Payment Data Transfer when automating tasks on the back-end.