Poundpay

Poundpay is a payments platform for marketplaces

Adding Poundpay to Rails

  1. Add the following to your Gemfile

    gem 'poundpay', '~> 0.3.1'
    
  2. At the command prompt, install the gem with bundler

    bundle install
    
  3. Create the file config/poundpay.yml and add your configurations. Note: Make sure your YAML file ends with a blank line; otherwise, Ruby will give you a completely unintelligible error message

    development:
      developer_sid: DV0383d447360511e0bbac00264a09ff3c
      auth_token: c31155b9f944d7aed204bdb2a253fef13b4fdcc6ae1540200449cc4526b2381a
      callback_url: http://staging.awesomemarketplace.com/payments/callback
      www_url: https://www-sandbox.poundpay.com
      api_url: https://api-sandbox.poundpay.com
    
    production:
      developer_sid: DV8dd93f0f3c6411e0863f00264a09ff3c
      auth_token: d8c4ea1bafd3fcac8c1062a72c22bcdb09321deb1041df257165cd6449def0de
      callback_url: http://www.awesomemarketplace.com/payments/callback
    
  4. Create the file config/initializers/poundpay.rb and add the following

    Poundpay.configure_from_yaml "config/poundpay.yml"
    
  5. Protect your callback controller

    before_filter :verify_poundpay_callback
    

Creating a user

@user = Poundpay::User.create(
  :first_name              => "Dart",
  :last_name               => "Master",
  :email_address           => "[email protected]")

Creating a payment

@payment = Poundpay::Payment.create(
  :amount                  => 20000,
  :payer_fee_amount        => 0,
  :payer_email_address     => "[email protected]",
  :recipient_fee_amount    => 500,
  :recipient_email_address => "[email protected]",
  :description             => "Beats by Dr. Dre")

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,
    name: "Fred Nietzsche", // Optional
    address_street: "330 Townsend St", // Optional
    address_city: "San Francisco", // Optional
    address_state: "California", // Optional
    address_zip: "94107", // Optional
    server: "<%= Poundpay.www_url %>"
  });
</script>

Payment methods

payment = Poundpay::Payment.find(payment_sid)
payment.escrow                    # AUTHORIZED -> ESCROWED.  Credit card is charged
payment.release                   # ESCROWED or PARTIALLY_RELEASED -> RELEASED.  Recipient receives money
payment.cancel                    # ESCROWED or PARTIALLY_RELEASED -> CANCELED.  Payer receives refund

Creating a charge permission

@charge_permission = Poundpay::ChargePermission.create(
  :email_address           => "[email protected]")

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: "Fred Nietzsche", // Optional
    address_street: "330 Townsend St", // Optional
    address_city: "San Francisco", // Optional
    address_state: "California", // Optional
    address_zip: "94107", // Optional
    server: "<%= Poundpay.www_url %>"
  });
</script>

Charge permission methods

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.