Module: OpenPayU

Defined in:
lib/openpayu.rb,
lib/openpayu/order.rb,
lib/openpayu/token.rb,
lib/openpayu/refund.rb,
lib/openpayu/version.rb,
lib/openpayu/document.rb,
lib/openpayu/connection.rb,
lib/openpayu/models/fee.rb,
lib/openpayu/models/card.rb,
lib/openpayu/models/buyer.rb,
lib/openpayu/models/model.rb,
lib/openpayu/models/order.rb,
lib/openpayu/models/token.rb,
lib/openpayu/configuration.rb,
lib/openpayu/models/refund.rb,
lib/openpayu/models/address.rb,
lib/openpayu/models/product.rb,
lib/openpayu/documents/request.rb,
lib/openpayu/models/pay_method.rb,
lib/openpayu/documents/response.rb,
lib/openpayu/models/buyer/invoice.rb,
lib/openpayu/models/status_update.rb,
lib/openpayu/models/buyer/delivery.rb,
lib/openpayu/models/notify_response.rb,
lib/openpayu/models/shipping_method.rb

Defined Under Namespace

Modules: Documents, Models Classes: Configuration, Connection, Document, Order, Refund, Token

Constant Summary collapse

VERSION =
'0.1.2'

Class Method Summary collapse

Class Method Details

.hosted_order_form(order) ⇒ String

Generate a form body for hosted order

Parameters:

  • order (Hash)

    Hash

Returns:

  • (String)

    A full form containign an order



52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/openpayu.rb', line 52

def self.hosted_order_form(order)
  @order = Models::Order.new(order)
  render_hash = @order.to_flatten_hash
  html_form = "<form method='post' " +
    "action='#{Configuration.get_base_url}order'>\n"
  render_hash.each do |key, value|
    html_form << "<input type='hidden' name='#{key}' value='#{value}' />\n"
  end

  html_form << "<input type='hidden' name='OpenPayu-Signature'
    value='#{sign_form(render_hash)}' />
      <button type='submit' formtarget='_blank' />\n</form>"
end

.sign_form(form_fields, key = nil, algorithm = nil, pos_id = nil) ⇒ String

Generate a signature for signing form sent directly to PayU

Parameters:

  • form_fields (Hash)

    Hash with all form fields with values

  • signature_key (String)

    defaults to Configuration.signature_key

  • algorithm (String) (defaults to: nil)

    defaults to OpenPayU::Configuration.algorithm

  • merchant_pos_id (String)

    defaults to Configuration.merchant_pos_id

Returns:

  • (String)

    Signature that should be inserted to field with name “OpenPayu-Signature”



38
39
40
41
42
43
44
45
46
# File 'lib/openpayu.rb', line 38

def self.sign_form(form_fields, key = nil, algorithm = nil, pos_id = nil)
  sorted_values = form_fields.sort.map { |array| array[1] }.join
  Document.new.generate_signature_structure(
    sorted_values,
    algorithm || Configuration.algorithm,
    pos_id || Configuration.merchant_pos_id,
    key || Configuration.signature_key
  )
end