Code Monkey home page Code Monkey logo

codeigniter-paypal-ipn's Introduction

codeigniter-paypal-ipn

Overview

codeigniter-paypal-ipn is a CodeIgniter library for working with the PayPal IPN (Instant
Payment Notification) service. The library acts as a listener for the PayPal IPN service
and logs the orders to your database using either Doctrine or CodeIgniter active record.

Description

This library focuses on the “post-payment” workflow, i.e. the processing required once
the payment has been made and PayPal has posted an Instant Payment Notification call to
the IPN listener (aka your CodeIgniter IPN controller).

This library handles:

  • Validating the IPN call
  • Logging the IPN call
  • Extracting the order and line item information from the IPN call
  • Interpreting PayPal’s payment status
  • Storing the order and line item in the database

Note that this library currently supports the web_accept and cart transaction types; order
refunds are not currently supported.

All pre-payment functionality (e.g. posting the checkout information to PayPal) and custom
post-payment workflow (e.g. sending emails) is left as an exercise to the reader.

Dependencies

There are two versions supplied: one using CodeIgniter’s modified version of the Active
Record Database Pattern, and one using Doctrine (tested with 1.2.3). For the second option
you might find the CodeIgniter guide Using Doctrine with CodeIgniter helpful background.

Installation

To create the MySQL tables required by codeigniter-paypal-ipn, run the SQL file found
in the common/sql folder against your db.

Download all of the remaining files from the common folder and deploy them into your CodeIgniter
installation following the same folder structure as found in GitHub. Then choose between
the activerecord and doctrine1.2 folder, and deploy those files into your CodeIgniter
installation as well.

Finally, update your sandbox and production variables as found in config/paypal_ipn.php

Usage

An example of how to use codeigniter-paypal-ipn can be found in controllers/example.php

Credits

This library is inspired by:

Disclaimer and Warning

The author Alex Dean does not accept any liability for any processing errors made by
codeigniter-paypal-ipn, or any financial losses incurred through its use.

In particular, this library does not fulfil the PayPal IPN requirement to “verify that the
payment amount actually matches what you intend to charge. Although not technically an IPN
issue, if you do not encrypt buttons, it is possible for someone to capture the original
transmission and change the price. Without this check, you could accept a lesser payment
than what you expected.”
(This verification step is out of scope for this library because
it would require integration with your product catalogue.)

Additionally this library does not properly handle refunds. Typically refunds are stored as
a new order line in ipn_orders with a negative balance, but even this is not 100% predicatable.

Copyright

codeigniter-paypal-ipn is copyright © 2011 Alexander Dean, [email protected]

License

codeigniter-paypal-ipn is free software: you can redistribute it and/or modify it under the
terms of the GNU Affero General Public License as published by the Free Software Foundation,
either version 3 of the License, or (at your option) any later version.

codeigniter-paypal-ipn is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with
codeigniter-paypal-ipn. If not, see http://www.gnu.org/licenses/.

codeigniter-paypal-ipn's People

Contributors

alexanderdean avatar

Stargazers

Jinggo Villamor avatar

Watchers

Jinggo Villamor avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.