Class: OpenPayU::Order

Inherits:
Object
  • Object
show all
Defined in:
lib/openpayu/order.rb

Overview

A class responsible for dealing with Order

Class Method Summary collapse

Class Method Details

.build_notify_response(request_id) ⇒ String

Creates OrderNotifyResponse to send to PayU

Parameters:

  • request_id (String)

    value of ReqId(UUID) from OrderNotifyRequest

Returns:

  • (String)

    Response in XML or JSON (depends on gem configuration)



91
92
93
94
95
96
97
# File 'lib/openpayu/order.rb', line 91

def self.build_notify_response(request_id)
  response = Models::NotifyResponse.new({
    res_id: request_id,
    status: { 'statusCode' => 'SUCCESS' }
  })
  response.prepare_data
end

.cancel(order_id) ⇒ Documents::Response

Cancels Order

  • Sends to PayU OrderCancelRequest

Parameters:

  • order_id (String)

    PayU OrderId sent back in OrderCreateResponse

Returns:



60
61
62
63
64
# File 'lib/openpayu/order.rb', line 60

def self.cancel(order_id)
  Documents::Response.new(
    Connection.delete("orders/#{order_id}", nil)
  )
end

.consume_notification(request) ⇒ Documents::Response

Transforms OrderNotifyRequest to [Documents::Response]

Parameters:

  • request (Rack::Request||ActionDispatch::Request)

    object od request received from PayU

Returns:

Raises:



73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/openpayu/order.rb', line 73

def self.consume_notification(request)
  response = Documents::Response.new(
    { response: request, request: nil }
  )
  if !response.nil?
    response
  else
    raise(
      WrongNotifyRequest,
      "Invalid OrderNotifyRequest: #{request.inspect}"
    )
  end
end

.create(order) ⇒ Documents::Response

Creates new Order

  • Sends to PayU OrderCreateRequest

Parameters:

  • order (Hash)

    A Hash object containing full Models::Order object

Returns:

Raises:

  • (WrongOrderParameters)

    if provided Hash ‘order’ isn’t a valid object (with all required fields)



28
29
30
31
32
33
34
35
36
37
# File 'lib/openpayu/order.rb', line 28

def self.create(order)
  @order = Models::Order.new(order)
  if @order.all_objects_valid?
    Documents::Response.new(
      Connection.post('orders', @order.prepare_data)
    )
  else
    raise WrongOrderParameters.new(@order)
  end
end

.retrieve(order_id) ⇒ Documents::Response

Retrieves information about the order

  • Sends to PayU OrderRetrieveRequest

Parameters:

  • order_id (String)

    PayU OrderId sent back in OrderCreateResponse

Returns:



14
15
16
17
18
# File 'lib/openpayu/order.rb', line 14

def self.retrieve(order_id)
  Documents::Response.new(
    Connection.get("orders/#{order_id}", nil)
  )
end

.status_update(status_update) ⇒ Documents::Response

Updates Order status

  • Sends to PayU OrderStatusUpdateRequest

Parameters:

Returns:

Raises:



47
48
49
50
51
52
# File 'lib/openpayu/order.rb', line 47

def self.status_update(status_update)
  @update = OpenPayU::Models::StatusUpdate.new status_update
  Documents::Response.new(
    Connection.put("orders/#{@update.order_id}/status", @update.prepare_data)
  )
end