PaylerAPI


Simple ruby wrapper for Payler Merchant API

Install

  echo 'gem "payler_api"' >> Gemfile
  # or
  gem install payler_api

PaylerAPI setup

  $ cat config/initializers/payler_api.rb:

  PaylerAPI.configure do |config|
    config.host       = 'HOST'
    config.access_key = 'ACCESS_KEY'
  end

PaylerAPI example usage:

  response = PaylerAPI.pay amount: 10000,
                           order_id: 'order_uniq_id',
                           card_number: '5555555555555599',
                           expired_year: '19',
                           expired_month: '12',
                           secure_code: '123'

  response               # => return PaylerAPI::Response instanse
  response.ok?           # => return true if request is successed and payment charged
  response.success?      # => alias to :ok?

  response.error?        # => return true if have errors
  response.error_code    # => Payler error code
  response.error_message # => Payler error message

  response.data          # => all response data

Another examples

  PaylerAPI.get_status order_id: 'some_uniq_order' # => return PaylerAPI::Response with order data
  ...

3DS

  # step 0: authorize 3ds transaction

  PaylerAPI.configuration.access_key = 3DS_key_ID
  response = PaylerAPI.pay {
    card_number: "*",
    expired_year: "*",
    expired_month: "*",
    secure_code: "*",
    order_id: "*",
    amount: "10000"
  }

  response.ok?       # => true
  response.three_ds? # => true

  attrs = response.three_ds_attributes # => {url: "acs_url", pa_req: "%big_key%", md: "%small_key%"}

  # step 1: redirect customer to bank site with special params from three_ds_attributes
  str = "<form name='form' action='#{attrs['url']}' method='post' >
  <input type='hidden' name='TermUrl' value='%callback_url%' >
  <input type='hidden' name='MD' value='#{attrs['md']}' >
  <input type='hidden' name='PaReq' value='#{attrs['pa_req']}' >
  </form><script type='text/javascript'>document.form.submit()</script>"

  # step 2: callback request from bank(with md and pares keys), send finished request to payler
  finished_response = PaylerAPI.send_3ds md: md_key, pares: pares_key
  finished_response.ok? # => true if transaction is successed

dev

  # run specs
  ruby -Ilib test/spec_payler_api.rb