PayPal API, currently supporting "ButtonManager"
This package is a moderately successful attempt to tame the confusingness of PayPal's API using Haskell types. Currently only the ButtonManager API is supported.
Type families are used extensively to encode PayPal's validation rules, so they can be checked at compile time. Haddock doesn't get all the type family stuff across, so you may find it easier to read the source code. Because PayPal's documents leave you to guessing, it will take trial and error to get the logic in this package correct, so please contribute your fixes. Code changes to this package are likely to break your code, so please depend on a specific version.
Take a look at example.hs.
The benefits of using PayPal:
You can accept credit cards on your website priced for low transaction volumes.
The drawbacks of using PayPal:
PayPal tries to harvest your customers, by annoying them into becoming PayPal members.
If you are outside the USA, you can't have different shipping rates by country, which is... beyond pathetic.