Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!

Payments platform for marketplaces

Project Description

PoundPay enables developers to build apps which facilitate transactions between two of their users. PoundPay is designed specifically for these types of transactions, as opposed to direct payments from customer to business. In short, PoundPay is the payments platform for marketplaces.

Install

$ easy_install poundpay

Configure

CONFIG = {
    'sandbox': {
        'developer_sid': 'DV0383d447360511e0bbac00264a09ff3c',
        'auth_token': ('c31155b9f944d7aed204bdb2a253fef13b4fdcc6ae15402004'
                       '49cc4526b2381a'),
        'api_url': 'https://api-sandbox.poundpay.com'
    },
    'production': {
        'developer_sid': 'DV8dd93f0f3c6411e0863f00264a09ff3c',
        'auth_token': ('d8c4ea1bafd3fcac8c1062a72c22bcdb09321deb1041df2571'
                       '65cd6449def0de')
    }
}

import poundpay
poundpay.configure(**CONFIG['production'])

Creating a Payment

payment = poundpay.Payment(
    amount=10000,   # in usd cents, not dollars
    payer_fee_amount=0,
    payer_email_address='fred@example.com',
    recipient_fee_amount=500,
    recipient_email_address='david@example.com',
    description='Beats by Dr. Dre',
).save()

Payment methods

list_of_payments = poundpay.Payment.all()
payment = poundpay.Payment.find(payment_sid)
payment.escrow()   # AUTHORIZED -> ESCROWED.  Credit card is charged
payment.release()  # ESCROWED   -> RELEASED.  Recipient receives money
payment.cancel()   # ESCROWED   -> CANCELED.  Payer receives refund

Serving the payment IFRAME

<script src="https://www.poundpay.com/js/poundpay.js"></script>

<div id="pound-root"></div>

<script>
  function handlePaymentSuccess() {
    // do something
  }

  function handlePaymentError() {
    // handle error
  }

  PoundPay.init({
    payment_sid: "{{payment.sid}}",
    success: handlePaymentSuccess,
    error: handlePaymentError,
    first_name: "Fred", // Optional
    last_name: "Nietzsche", // Optional
    address_street: "990 Guerrero St", // Optional
    address_city: "San Francisco", // Optional
    address_state: "California", // Optional
    address_zip: "94110", // Optional
    server: "https://www-sandbox.poundpay.com"  // Exclude for production
  });
</script>

Creating a Charge Permission

charge_permission = poundpay.ChargePermission(
    email_address='payer@example.com',
).save()

Deactivating a Charge Permission

charge_permission = poundpay.ChargePermission.find(charge_permission_sid)
charge_permission.deactivate()

ChargePermission methods

list_of_payments = poundpay.ChargePermission.all()
charge_permission = poundpay.ChargePermission.find(charge_permission_sid)
charge_permission.deactivate()  # CREATED or ACTIVE -> INACTIVE. Charge permission is deactivated and can no longer be used to authorize payments for the associated payer.

Serving the charge permission IFRAME

<script src="https://www.poundpay.com/js/poundpay.js"></script>

<div id="pound-root"></div>

<script>
  function handleChargePermissionSuccess() {
    // do something
  }

  function handleChargePermissionError() {
    // handle error
  }

  PoundPay.init({
    charge_permission_sid: "{{charge_permission.sid}}",
    success: handleChargePermissionSuccess,
    error: handleChargePermissionError,
    name: "Freddy Nietzsche", // Optional
    address_street: "990 Guerrero St", // Optional
    address_city: "San Francisco", // Optional
    address_state: "California", // Optional
    address_zip: "94110", // Optional
    server: "https://www-sandbox.poundpay.com"  // Exclude for production
  });
</script>

Batching

In some cases you may wish to batch authorize and escrow a collection of payments. By doing so there will be only one payer charge for that collection of payments. Note that if you do batch authorize a collection of payments that it must also be batch escrowed.

Batching is designed for shopping carts where you want a collection of payments to appear to appear as a single charge.

In order to use batching you simply need to pass sids for all payments in the collection you want to batch to the IFrame:

<script src="https://www.poundpay.com/js/poundpay.js"></script>

  <div id="pound-root"></div>

  <script>
    function handlePaymentSuccess() {
      // do something
    }

    function handlePaymentError() {
      // handle error
    }

    PoundPay.init({
      payment_sid: [
          "{{payment1.sid}}"
          "{{payment2.sid}}",
          "{{payment3.sid}}"
          ],
      success: handlePaymentSuccess,
      error: handlePaymentError,
      first_name: "Fred", // Optional
      last_name: "Nietzsche", // Optional
      address_street: "990 Guerrero St", // Optional
      address_city: "San Francisco", // Optional
      address_state: "California", // Optional
      address_zip: "94110", // Optional
      server: "https://www-sandbox.poundpay.com"  // Exclude for production
    });
  </script>

Alternatively if you are directly authorizing the payments using a charge permission:

Payments.batch_update(
    payment1.sid, payment2.sid, payment3.sid,
    status='AUTHORIZED')

Finally you’ll need to batch escrow the payments:

Payments.batch_update(
    payment1.sid, payment2.sid, payment3.sid,
    status='ESCROWED')

Notice that if you did the following instead an error would be triggered since batched payments must be authorized and escrowed collectively:

Payments.find(payment1.sid, status='ESCROWED').save()  # fails

However if you cancel some of the payments prior to batch escrow you should exclude them from the batch call:

Payments.find(payment1.sid, status='CANCEL').save()  # ok

Payments.batch_update(
    payment2.sid, payment3.sid,
    status='ESCROWED')
Release History

Release History

This version
History Node

0.5.1

History Node

0.4

History Node

0.2.6

History Node

0.2.5

History Node

0.2.4

History Node

0.2.3

History Node

0.2.2

History Node

0.2.1

History Node

0.2.0

History Node

0.1.2

History Node

0.1.1

History Node

0.1.0

History Node

0.0.8

History Node

0.0.7

History Node

0.0.6

Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
Poundpay-0.5.1.tar.gz (19.6 kB) Copy SHA256 Checksum SHA256 Source Feb 3, 2012

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting