Payment Processing Solutions

While working on our web-app, we’ve been looking for a payment solution. From what I’ve gathered, there are middleman type solutions (such as Amazon Flexible Payments Service) and gateway type solutions like Authorize.net. It sounds like middleman-style services are easier to integrate and a better cost-wise at the start for a low volume of transactions, and it is always easy to gateway-style services later on. We are also using Satchmo, which has some integration with Paypal and Authorize.net.

Gateway Solutions:

  • Advantages
    • Integration with Satchmo
    • Receive funds more quickly through merchant accounts
    • Can figure out best pricing through different merchant accounts
  • Disadvantages
    • Need SSL certificate
    • PCI Compliance (for recurring payments)
    • Reliability issues (have heard about problems with Authorize.net)

Middleman Solutions:

  • Advantages
    • Easier handling of all sorts of credit cards
    • Offload security issues for storing credit card numbers
    • Better developer API support(e.g Amazon FPS and Paypal)
  • Disadvantages
    • Not purely integrated into website(but co-branding is available)
    • Fees are not negotiable, may be higher for high volume

We’re leaning towards the latter. Anybody have any experience with other solutions or have any recommendations they can offer ?

Python Database Migrations

In the past week, I’ve be working on a small, lightweight database migration tool using Python. I chose this path instead of using existing tools such as South or PyMigrate because I thought it would be a good learning experience and we would be able to customize the tool to our liking later if need be.

Our tool currently takes in raw .sql files and works with PostgreSQL. Many of the alternatives use [up] and [down] tags to designate forward and background migrations. I originally started out wanting to support PostgreSQL, MySQL, and sqlite, but the problem with this approach was that using the the pyodbc and sqlite3 wrappers do not support transactions. Thus, I can’t rollback in the middle of a transaction. I learned that MySQL doesn’t support transactional Data Definition Language and that the sqlite3 wrapper doesn’t support turning on transactions for DDL (only DML).

Anybody have experience working with these modules that could help?