Giter VIP home page Giter VIP logo

txievery's Introduction

txievery

txievery (pronounced "thievery") is a library for dealing with Paypal using Twisted.

The first target for txievery will be the `Express Checkout`_ API. This includes Express Checkout for Digital Goods.

txievery only supports the NVP API (not the SOAP API), and only supports the certificate authentication method (not the signature method). Patches welcome, but nobody sane should be using SOAP or signature authentication.

Reference documents

When first faced with developing using Paypal APIs, many developers have difficulty finding the relevant pieces of documentation. When you try to find some of this stuff yourself, it's easy to discover contradictory information, information on deprecated APIs...

txievery's People

Contributors

lvh avatar

Stargazers

 avatar Tobias Oberstein avatar  avatar

Watchers

James Cloos avatar

txievery's Issues

Certificate support

Since we don't support signature authentication, we should support certificate-based authentication.

Requirements:

  • The test suite should have a client certificate, and the client certificate should be checked by the mock sandbox.

Easier Express Checkout for Digital Goods support

Express Checkout for Digital Goods has a few peculiarities. You can support all of these yourself by just using Express Checkout support, but it'd be nicer if we had an API tailored for Digital Goods support.

  • Only a single payment request is supported (normally up to 10)
  • Quantity should always be specified (although that probably means the normal EC support should, too)
  • All items must have their category set to "Digital".
  • All payment request payment actions must be sales if specified. It's not a bug if normal EC support always mentions the action, so that should be the default behavior. Digital Goods specific support should just verify that this is the case.
  • All item details must be specified when completing a checkout, otherwise you miss out on the micropayment rate. Again, EC should always do this.

Quantizing amounts silently throws away data

Try:

from txievery.expresscheckout.api import PaymentRequest
pr = PaymentRequest("100.123456", "USD")
assert str(pr) == "100.12"

Although this is ostensibly the correct behavior (the Paypal spec says so), it's still throwing away data.

PayPal Sandbox test suite

PayPal provides a sandbox for testing implementations again. There should be a test suite that verifies txievery against the sandbox.

This should not be part of the unit tests, because it requires:

  • many real requests to the sandbox, which may be very slow
  • credentials for using the sandbox, that not everyone has

Return URL should be modifiable

Modifying the return URL is the preferred way to link users: you come up with a nonce value, store it, set it in the return URL, and then when they visit that URL you know who they are.

Right now, there's not a lot of options for changing the return URL. This is a Bad Thing(TM).

The alternative to modifying the URL is setting a cookie, which isn't very good...

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.