Skip to content

artur79/payments-pl

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

payments-pl

Simple library for handling payments via platnosci.pl

Features

  • Simple configuration (multiple POS-es)

  • Transactions: create, get state, confirm, cancel

  • View helper for generating payment form

Installation

Install gem:

sudo gem install payments-pl

And add it n your environment.rb file:

config.gem 'payments-pl', :lib => 'payments_pl'

Configuration

First add POS informations in config/payments.yml file:

bank:
  pos_id: XXX
  pos_auth_key: XXX
  key1: XXX
  key2: XXX
  type: default

sms:
  pos_id: XXX
  pos_auth_key: XXX
  key1: XXX
  key2: XXX
  type: sms_premium

Next add some routes so platnosci.pl can send messages to your application:

map.connect '/payments/ok',     :controller => 'payments', :action => 'ok'
map.connect '/payments/error',  :controller => 'payments', :action => 'error'
map.connect '/payments/report', :controller => 'payments', :action => 'report'

These urls must be the same as those you entered on platnosci.pl site.

Usage

Creating new transaction in controller:

def some_action
  @transaction = Payments['bank'].new_transaction(:amount => 100, :desc => 'Abonament', :client_ip => request.remote_addr, :js => '0')
end

Important!
According to api changes http://serwis.platnosci.pl/uslugi_mobilne/zmiany_w_api_platnoscipl_dla_sms_premium_/
since 1.04.2011, parameter :amount_netto is necessary for sms(text message) payments

Rendering payment form:

- form_tag @transaction.new_url do
  = transaction_hidden_fields @transaction
  = submit_tag 'Pay'

Controller for receiving messages from platnosci.pl:

class PaymentsController < ApplicationController
  skip_before_filter :verify_authenticity_token

  def error
    render :text => Payments.error_text(params[:error])
  end

  def ok
    render :text => 'Payment OK'
  end

  def report
    status, transaction = Payments[params[:pos_id]].get params[:session_id]
    if status == 'OK'
      if transaction.trans_status == '99'
        # paid, money received
      else
        # other stuff
      end
    end
    render :text => 'OK'
  end
end

Cancelling and confirming transaction is similar to getting transaction state:

status, transaction = Payments[params[:pos_id]].cancel params[:session_id]
status, transaction = Payments[params[:pos_id]].confirm params[:session_id]

Copyright © 2010 Michał Młoźniak. See LICENSE for details.

About

Simple library for payments via platnosci.pl

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Ruby 66.9%
  • JavaScript 33.1%