Class: UnifiedPayment::Client
- Inherits:
-
Object
- Object
- UnifiedPayment::Client
- Includes:
- HTTParty
- Defined in:
- lib/unified_payment/client.rb
Constant Summary collapse
- MERCHANT_NAME =
UnifiedPayment.config[:merchant_name]
Class Method Summary collapse
- .build_xml_for(operation, order_id, session_id) ⇒ Object
- .build_xml_for_create(amount, options) ⇒ Object
- .create_order(amount, options = {}) ⇒ Object
- .get_order_status(order_id, session_id) ⇒ Object
- .ping_gateway_for(operation, xml_request) ⇒ Object
- .reverse(order_id, session_id) ⇒ Object
- .send_request_for(operation, order_id, session_id) ⇒ Object
- .send_request_for_create(amount, options) ⇒ Object
Instance Method Summary collapse
Class Method Details
.build_xml_for(operation, order_id, session_id) ⇒ Object
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/unified_payment/client.rb', line 96 def self.build_xml_for(operation, order_id, session_id) xml_builder = Builder::XmlMarkup.new xml_builder.instruct! xml_builder.TKKPG { |tkkpg| tkkpg.Request { |request| request.Operation(operation) request.Language("EN") request.Order { |order| order.Merchant(MERCHANT_NAME) order.OrderID(order_id) } request.SessionID(session_id) } } xml_builder end |
.build_xml_for_create(amount, options) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/unified_payment/client.rb', line 37 def self.build_xml_for_create(amount, ) xml_builder = ::Builder::XmlMarkup.new xml_builder.instruct! xml_builder.TKKPG { |tkkpg| tkkpg.Request { |request| request.Operation("CreateOrder") request.Language([:language] || "EN") request.Order { |order| order.Merchant(MERCHANT_NAME) order.Amount(amount) order.Currency([:currency] || "566") order.Description([:description] || "Test Order") order.ApproveURL([:approve_url]) order.CancelURL([:cancel_url]) order.DeclineURL([:decline_url]) if params_to_add = [:add_params] order.AddParams do |add_param| add_param.email(params_to_add[:email]) if params_to_add[:email] add_param.phone(params_to_add[:phone]) if params_to_add[:phone] end end } } } xml_builder end |
.create_order(amount, options = {}) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/unified_payment/client.rb', line 78 def self.create_order(amount, ={}) xml_response = send_request_for_create(amount, ) response = xml_response["TKKPG"]["Response"] if response["Status"] == "00" response_order_details = response["Order"] return { "url" => response_order_details["URL"], "sessionId" => response_order_details["SessionID"], "orderId" => response_order_details["OrderID"], "Order" => response_order_details, "Status" => response["Status"], "xml_response" => xml_response } else raise Error.new("CreateOrder Failed", response) end end |
.get_order_status(order_id, session_id) ⇒ Object
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/unified_payment/client.rb', line 117 def self.get_order_status(order_id, session_id) xml_response = send_request_for("GetOrderStatus", order_id, session_id) response = xml_response["TKKPG"]["Response"] if response["Status"] == "00" response_order_details = response["Order"] return { "orderStatus" => response_order_details["OrderStatus"], "orderId" => response_order_details["OrderID"], "xml_response" => xml_response } else raise Error.new("GetOrderStatus Failed", xml_response) end end |
.ping_gateway_for(operation, xml_request) ⇒ Object
64 65 66 67 68 69 70 71 |
# File 'lib/unified_payment/client.rb', line 64 def self.ping_gateway_for(operation, xml_request) begin response = post('/Exec', :body => xml_request.target! ) rescue => exception raise Error.new("################### Unable to send " + operation + " request to Unified Payments Ltd " + exception.) end response end |
.reverse(order_id, session_id) ⇒ Object
133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
# File 'lib/unified_payment/client.rb', line 133 def self.reverse(order_id, session_id) xml_response = send_request_for("Reverse", order_id, session_id) response = xml_response["TKKPG"]["Response"] if response["Status"] == "00" response_order_id, response_reversal_details = response["Order"]["OrderID"], response["Reversal"] return { "orderId" => response_order_id, "respCode" => response_reversal_details["RespCode"], "respMessage" => response_reversal_details["RespMessage"], "xml_response" => xml_response } else raise Error.new("Reverse Request Failed", xml_response) end end |
.send_request_for(operation, order_id, session_id) ⇒ Object
112 113 114 115 |
# File 'lib/unified_payment/client.rb', line 112 def self.send_request_for(operation, order_id, session_id) xml_request = build_xml_for(operation, order_id, session_id) ping_gateway_for(operation, xml_request) end |
.send_request_for_create(amount, options) ⇒ Object
73 74 75 76 |
# File 'lib/unified_payment/client.rb', line 73 def self.send_request_for_create(amount, ) xml_builder = build_xml_for_create(amount, ) ping_gateway_for('CreateOrder', xml_builder) end |
Instance Method Details
#success? ⇒ Boolean
33 34 35 |
# File 'lib/unified_payment/client.rb', line 33 def success? self["orderId"] end |