openpayu 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +18 -0
  3. data/.rspec +3 -0
  4. data/.rubocop.yml +45 -0
  5. data/.ruby-gemset +1 -0
  6. data/.ruby-version +1 -0
  7. data/.travis.yml +10 -0
  8. data/Gemfile +4 -0
  9. data/LICENSE.txt +22 -0
  10. data/README.md +193 -0
  11. data/Rakefile +1 -0
  12. data/doc/EmptyResponseError.html +123 -0
  13. data/doc/HttpStatusException.html +123 -0
  14. data/doc/NotImplementedException.html +123 -0
  15. data/doc/OpenPayU.html +436 -0
  16. data/doc/OpenPayU/Configuration.html +1530 -0
  17. data/doc/OpenPayU/Connection.html +381 -0
  18. data/doc/OpenPayU/Document.html +705 -0
  19. data/doc/OpenPayU/Documents.html +117 -0
  20. data/doc/OpenPayU/Documents/Request.html +503 -0
  21. data/doc/OpenPayU/Documents/Response.html +783 -0
  22. data/doc/OpenPayU/Models.html +117 -0
  23. data/doc/OpenPayU/Models/Address.html +861 -0
  24. data/doc/OpenPayU/Models/Buyer.html +587 -0
  25. data/doc/OpenPayU/Models/Buyer/Delivery.html +312 -0
  26. data/doc/OpenPayU/Models/Card.html +507 -0
  27. data/doc/OpenPayU/Models/Fee.html +367 -0
  28. data/doc/OpenPayU/Models/Model.html +1208 -0
  29. data/doc/OpenPayU/Models/NotifyResponse.html +297 -0
  30. data/doc/OpenPayU/Models/Order.html +1155 -0
  31. data/doc/OpenPayU/Models/PayMethod.html +507 -0
  32. data/doc/OpenPayU/Models/Product.html +787 -0
  33. data/doc/OpenPayU/Models/Refund.html +1020 -0
  34. data/doc/OpenPayU/Models/ShippingMethod.html +367 -0
  35. data/doc/OpenPayU/Models/StatusUpdate.html +647 -0
  36. data/doc/OpenPayU/Models/Token.html +507 -0
  37. data/doc/OpenPayU/Order.html +924 -0
  38. data/doc/OpenPayU/Refund.html +269 -0
  39. data/doc/OpenPayU/Token.html +288 -0
  40. data/doc/OpenPayU/XmlBuilder.html +277 -0
  41. data/doc/WrongConfigurationError.html +123 -0
  42. data/doc/WrongNotifyRequest.html +123 -0
  43. data/doc/WrongOrderParameters.html +267 -0
  44. data/doc/WrongSignatureException.html +123 -0
  45. data/doc/_index.html +446 -0
  46. data/doc/class_list.html +54 -0
  47. data/doc/css/common.css +1 -0
  48. data/doc/css/full_list.css +57 -0
  49. data/doc/css/style.css +338 -0
  50. data/doc/file.README.html +281 -0
  51. data/doc/file_list.html +56 -0
  52. data/doc/frames.html +26 -0
  53. data/doc/index.html +281 -0
  54. data/doc/js/app.js +214 -0
  55. data/doc/js/full_list.js +178 -0
  56. data/doc/js/jquery.js +4 -0
  57. data/doc/method_list.html +1007 -0
  58. data/doc/top-level-namespace.html +114 -0
  59. data/lib/openpayu.rb +66 -0
  60. data/lib/openpayu/configuration.rb +62 -0
  61. data/lib/openpayu/connection.rb +65 -0
  62. data/lib/openpayu/document.rb +105 -0
  63. data/lib/openpayu/documents/request.rb +34 -0
  64. data/lib/openpayu/documents/response.rb +48 -0
  65. data/lib/openpayu/exceptions.rb +19 -0
  66. data/lib/openpayu/models/address.rb +12 -0
  67. data/lib/openpayu/models/buyer.rb +11 -0
  68. data/lib/openpayu/models/buyer/delivery.rb +7 -0
  69. data/lib/openpayu/models/buyer/invoice.rb +8 -0
  70. data/lib/openpayu/models/card.rb +10 -0
  71. data/lib/openpayu/models/fee.rb +9 -0
  72. data/lib/openpayu/models/model.rb +151 -0
  73. data/lib/openpayu/models/notify_response.rb +9 -0
  74. data/lib/openpayu/models/order.rb +28 -0
  75. data/lib/openpayu/models/pay_method.rb +10 -0
  76. data/lib/openpayu/models/product.rb +10 -0
  77. data/lib/openpayu/models/refund.rb +41 -0
  78. data/lib/openpayu/models/shipping_method.rb +9 -0
  79. data/lib/openpayu/models/status_update.rb +14 -0
  80. data/lib/openpayu/models/token.rb +10 -0
  81. data/lib/openpayu/order.rb +119 -0
  82. data/lib/openpayu/refund.rb +26 -0
  83. data/lib/openpayu/token.rb +27 -0
  84. data/lib/openpayu/version.rb +4 -0
  85. data/lib/openpayu/xml_builder.rb +23 -0
  86. data/lib/openpayu_ruby.rb +2 -0
  87. data/openpayu_ruby.gemspec +40 -0
  88. data/spec/cassettes/cancel_order.yml +50 -0
  89. data/spec/cassettes/create_order.yml +51 -0
  90. data/spec/cassettes/refund_order.yml +100 -0
  91. data/spec/cassettes/retrieve_order.yml +51 -0
  92. data/spec/cassettes/update_order.yml +50 -0
  93. data/spec/integration/order_spec.rb +103 -0
  94. data/spec/openpayu.yml +11 -0
  95. data/spec/spec_helper.rb +27 -0
  96. data/spec/test_objects/order.rb +97 -0
  97. data/spec/unit/configuration_spec.rb +71 -0
  98. data/spec/unit/document_spec.rb +18 -0
  99. data/spec/unit/models/order_spec.rb +82 -0
  100. data/spec/unit/models/refund_spec.rb +24 -0
  101. data/spec/unit/openpayu_spec.rb +27 -0
  102. metadata +327 -0
@@ -0,0 +1,281 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII" />
6
+ <title>
7
+ File: README
8
+
9
+ &mdash; Documentation by YARD 0.8.7.2
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ hasFrames = window.top.frames.main ? true : false;
19
+ relpath = '';
20
+ framesUrl = "frames.html#!" + escape(window.location.href);
21
+ </script>
22
+
23
+
24
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
25
+
26
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
27
+
28
+
29
+ </head>
30
+ <body>
31
+ <div id="header">
32
+ <div id="menu">
33
+
34
+ <a href="_index.html">Index</a> &raquo;
35
+ <span class="title">File: README</span>
36
+
37
+
38
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
39
+ </div>
40
+
41
+ <div id="search">
42
+
43
+ <a class="full_list_link" id="class_list_link"
44
+ href="class_list.html">
45
+ Class List
46
+ </a>
47
+
48
+ <a class="full_list_link" id="method_list_link"
49
+ href="method_list.html">
50
+ Method List
51
+ </a>
52
+
53
+ <a class="full_list_link" id="file_list_link"
54
+ href="file_list.html">
55
+ File List
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <iframe id="search_frame"></iframe>
63
+
64
+ <div id="content"><div id='filecontents'>
65
+ <p><a
66
+ href="https://magnum.travis-ci.com/PayU/openpayu_ruby_sdk.png?token=sqp5QvsmzqEqtVB3sNsK&branch=master">{Build
67
+ Status</a>] <img
68
+ src="https://codeclimate.com/repos/524eb044f3ea00329815dff1/badges/885c2d52f25c02295344/gpa.png"
69
+ />]</p>
70
+
71
+ <h1 id="label-OpenpayuSdkRuby">OpenpayuSdkRuby</h1>
72
+
73
+ <p>The OpenPayU Ruby library provides integration access to the PayU Gateway
74
+ API ver. 2.</p>
75
+
76
+ <h2 id="label-Installation">Installation</h2>
77
+
78
+ <p>Add this line to your application's Gemfile:</p>
79
+
80
+ <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_gem'>gem</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>openpayu</span><span class='tstring_end'>'</span></span></code></pre>
81
+
82
+ <p>And then execute:</p>
83
+
84
+ <pre class="code ruby"><code class="ruby">$ bundle</code></pre>
85
+
86
+ <p>Or install it yourself as:</p>
87
+
88
+ <pre class="code ruby"><code class="ruby">$ gem install openpayu</code></pre>
89
+
90
+ <h2 id="label-Configure+Gem">Configure Gem</h2>
91
+
92
+ <p>To configure OpenPayU environment add a file to
93
+ config/initializers/openpayu.rb containing:</p>
94
+
95
+ <pre class="code ruby"><code class="ruby"><span class='const'>OpenPayU</span><span class='op'>::</span><span class='const'>Configuration</span><span class='period'>.</span><span class='id identifier rubyid_configure'>configure</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_config'>config</span><span class='op'>|</span>
96
+ <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_merchant_pos_id'>merchant_pos_id</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>8389534</span><span class='tstring_end'>'</span></span>
97
+ <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_signature_key'>signature_key</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>95873498573498573897fb42d</span><span class='tstring_end'>'</span></span>
98
+ <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_algorithm'>algorithm</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>MD5</span><span class='tstring_end'>'</span></span> <span class='comment'># MD5, SHA-1, SHA-256
99
+ </span> <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_service_domain'>service_domain</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>payu.com</span><span class='tstring_end'>'</span></span>
100
+ <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>https</span><span class='tstring_end'>'</span></span>
101
+ <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_data_format'>data_format</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>json</span><span class='tstring_end'>'</span></span> <span class='comment'># json, xml
102
+ </span> <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_env'>env</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>secure</span><span class='tstring_end'>'</span></span>
103
+ <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_order_url'>order_url</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>http://localhost/order</span><span class='tstring_end'>'</span></span>
104
+ <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_notify_url'>notify_url</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>http://localhost/notify</span><span class='tstring_end'>'</span></span>
105
+ <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_continue_url'>continue_url</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>http://localhost/success</span><span class='tstring_end'>'</span></span>
106
+ <span class='kw'>end</span>
107
+ </code></pre>
108
+
109
+ <p>Or by providing a path to YAML file</p>
110
+
111
+ <pre class="code ruby"><code class="ruby"><span class='const'>OpenPayU</span><span class='op'>::</span><span class='const'>Configuration</span><span class='period'>.</span><span class='id identifier rubyid_configure'>configure</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='const'>Rails</span><span class='period'>.</span><span class='id identifier rubyid_root'>root</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>config/openpayu.yml</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span></code></pre>
112
+
113
+ <p>Structure of YAML file:</p>
114
+
115
+ <pre class="code ruby"><code class="ruby">development:
116
+ merchant_pos_id: '8389534'
117
+ signature_key: 95873498573498573897fb42d
118
+ algorithm: MD5 # MD5, SHA-1, SHA-256
119
+ service_domain: payu.com
120
+ protocol: https
121
+ data_format: json # json, xml
122
+ env: secure
123
+ order_url: http://localhost/order
124
+ notify_url: http://localhost/notify
125
+ continue_url: http://localhost/success
126
+ production:
127
+ merchant_pos_id: '8389534'
128
+ signature_key: 95873498573498573897fb42d
129
+ algorithm: MD5 # MD5, SHA-1, SHA-256
130
+ service_domain: payu.com
131
+ protocol: https
132
+ data_format: json # json, xml
133
+ env: secure
134
+ order_url: http://localhost/order
135
+ notify_url: http://localhost/notify
136
+ continue_url: http://localhost/success</code></pre>
137
+
138
+ <h2 id="label-Usage">Usage</h2>
139
+
140
+ <h3 id="label-Creating+Transparent+order">Creating Transparent order</h3>
141
+
142
+ <p>To create an order you must provide a Hash with order:</p>
143
+
144
+ <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_order'>order</span> <span class='op'>=</span> <span class='lbrace'>{</span>
145
+ <span class='label'>merchant_pos_id:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>8389534</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
146
+ <span class='label'>customer_ip:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='comment'># You can user request.remote_ip in your controller
147
+ </span> <span class='label'>ext_order_id:</span> <span class='int'>1342</span><span class='comma'>,</span> <span class='comment'>#Order id in your system
148
+ </span> <span class='label'>order_url:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>http://localhost/</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
149
+ <span class='label'>description:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>New order</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
150
+ <span class='label'>currency_code:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>PLN</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
151
+ <span class='label'>total_amount:</span> <span class='int'>10000</span><span class='comma'>,</span>
152
+ <span class='label'>notify_url:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>http://localhost/</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
153
+ <span class='label'>continue_url:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>http://localhost/</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
154
+ <span class='label'>validity_time:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>48000</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
155
+ <span class='label'>buyer:</span> <span class='lbrace'>{</span>
156
+ <span class='label'>email:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>dd@ddd.pl</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
157
+ <span class='label'>phone:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>123123123</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
158
+ <span class='label'>first_name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Jan</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
159
+ <span class='label'>last_name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Kowalski</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
160
+ <span class='label'>language:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>pl_PL</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
161
+ <span class='label'>NIN:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>123456</span><span class='tstring_end'>&quot;</span></span>
162
+ <span class='rbrace'>}</span><span class='comma'>,</span>
163
+ <span class='label'>products:</span> <span class='lbracket'>[</span>
164
+ <span class='lbrace'>{</span>
165
+ <span class='label'>name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Mouse</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
166
+ <span class='label'>unit_price:</span> <span class='int'>10000</span><span class='comma'>,</span>
167
+ <span class='label'>quantity:</span> <span class='int'>1</span>
168
+ <span class='rbrace'>}</span>
169
+ <span class='rbracket'>]</span><span class='comma'>,</span>
170
+ <span class='label'>pay_methods:</span> <span class='lbracket'>[</span>
171
+ <span class='lbrace'>{</span>
172
+ <span class='label'>type:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>CARD_TOKEN</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
173
+ <span class='label'>value:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Token value</span><span class='tstring_end'>'</span></span>
174
+ <span class='rbrace'>}</span>
175
+ <span class='rbracket'>]</span>
176
+ <span class='rbrace'>}</span></code></pre>
177
+
178
+ <p>When you have ready order Hash you can create new order:</p>
179
+
180
+ <pre class="code ruby"><code class="ruby"><span class='ivar'>@response</span> <span class='op'>=</span> <span class='const'>OpenPayU</span><span class='op'>::</span><span class='const'>Order</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='id identifier rubyid_order'>order</span><span class='rparen'>)</span></code></pre>
181
+
182
+ <p>If request succeed to create it will return "COMPLETE" as a status_code.
183
+ There might be also a redirect to page with confirmation. There are three
184
+ redirect types:</p>
185
+ <ul><li>
186
+ <p>WARNING_CONTINUE_REDIRECT</p>
187
+ </li><li>
188
+ <p>WARNING_CONTINUE_CVV</p>
189
+ </li><li>
190
+ <p>WARNING_CONTINUE_3DS</p>
191
+ </li></ul>
192
+
193
+ <pre class="code ruby"><code class="ruby"><span class='kw'>case</span> <span class='ivar'>@response</span><span class='period'>.</span><span class='id identifier rubyid_status'>status</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>status_code</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span>
194
+ <span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>COMPLETE</span><span class='tstring_end'>'</span></span>
195
+ <span class='comment'># order has been created
196
+ </span><span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>WARNING_CONTINUE_</span><span class='regexp_end'>/</span></span>
197
+ <span class='comment'>#need to redirec user to a provided URL
198
+ </span> <span class='id identifier rubyid_redirect_to'>redirect_to</span> <span class='ivar'>@response</span><span class='period'>.</span><span class='id identifier rubyid_redirect_uri'>redirect_uri</span>
199
+ <span class='kw'>else</span>
200
+ <span class='comment'>#in other cases something went wrong
201
+ </span> <span class='id identifier rubyid_logger'>logger</span><span class='period'>.</span><span class='id identifier rubyid_info'>info</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Unable to create order.
202
+ Status: </span><span class='embexpr_beg'>#{</span><span class='ivar'>@response</span><span class='period'>.</span><span class='id identifier rubyid_status'>status</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>status_code</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='rbrace'>}</span><span class='tstring_content'>.
203
+ Response: </span><span class='embexpr_beg'>#{</span><span class='ivar'>@response</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span>
204
+ <span class='kw'>end</span></code></pre>
205
+
206
+ <h3 id="label-Creating+Hosted+order">Creating Hosted order</h3>
207
+
208
+ <p>If you pass the same Hash of order as above to hosted_order_form you will
209
+ get a String containgin a form to embed in your view</p>
210
+
211
+ <pre class="code ruby"><code class="ruby">#in your controller
212
+ @order_form_data = OpenPayU.hosted_order_form(order)
213
+
214
+ # in your view
215
+ &lt;%= @order_form_data.html_safe %&gt;</code></pre>
216
+
217
+ <h3 id="label-Retrieving+order+from+OpenPayU">Retrieving order from OpenPayU</h3>
218
+
219
+ <p>You can retrieve order by its PayU order_id</p>
220
+
221
+ <pre class="code ruby"><code class="ruby"><span class='ivar'>@response</span> <span class='op'>=</span> <span class='const'>OpenPayU</span><span class='op'>::</span><span class='const'>Order</span><span class='period'>.</span><span class='id identifier rubyid_retrieve'>retrieve</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Z963D5JQR2230925GUEST000P01</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span></code></pre>
222
+
223
+ <h3 id="label-Cancelling+order">Cancelling order</h3>
224
+
225
+ <p>You can cancel order by its PayU order_id</p>
226
+
227
+ <pre class="code ruby"><code class="ruby"><span class='ivar'>@response</span> <span class='op'>=</span> <span class='const'>OpenPayU</span><span class='op'>::</span><span class='const'>Order</span><span class='period'>.</span><span class='id identifier rubyid_cancel'>cancel</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Z963D5JQR2230925GUEST000P01</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span></code></pre>
228
+
229
+ <h3 id="label-Updating+order+status">Updating order status</h3>
230
+
231
+ <p>You can update order status to accept order when Autoreceive in POS is
232
+ turned off</p>
233
+
234
+ <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_status_update'>status_update</span> <span class='op'>=</span> <span class='lbrace'>{</span>
235
+ <span class='label'>order_id:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Z963D5JQR2230925GUEST000P01</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
236
+ <span class='label'>order_status:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>COMPLETED</span><span class='tstring_end'>'</span></span>
237
+ <span class='rbrace'>}</span>
238
+ <span class='ivar'>@response</span> <span class='op'>=</span> <span class='const'>OpenPayU</span><span class='op'>::</span><span class='const'>Order</span><span class='period'>.</span><span class='id identifier rubyid_status_update'>status_update</span><span class='lparen'>(</span><span class='id identifier rubyid_status_update'>status_update</span><span class='rparen'>)</span></code></pre>
239
+
240
+ <h3 id="label-Handling+notifications+from+PayU">Handling notifications from PayU</h3>
241
+
242
+ <p>PayU sends requests to your application when order status changes</p>
243
+
244
+ <pre class="code ruby"><code class="ruby"><span class='ivar'>@response</span> <span class='op'>=</span> <span class='const'>OpenPayU</span><span class='op'>::</span><span class='const'>Order</span><span class='period'>.</span><span class='id identifier rubyid_consume_notification'>consume_notification</span><span class='lparen'>(</span><span class='id identifier rubyid_request'>request</span><span class='rparen'>)</span> <span class='comment'>#request object from controller
245
+ </span><span class='ivar'>@response</span><span class='period'>.</span><span class='id identifier rubyid_order_status'>order_status</span> <span class='comment'>#NEW PENDING CANCELLED REJECTED COMPLETED WAITING_FOR_CONFIRMATION
246
+ </span><span class='comment'>#you should response to PayU with special structure (OrderNotifyResponse)
247
+ </span><span class='id identifier rubyid_render'>render</span> <span class='label'>json:</span> <span class='const'>OpenPayU</span><span class='op'>::</span><span class='const'>Order</span><span class='period'>.</span><span class='id identifier rubyid_build_notify_response'>build_notify_response</span><span class='lparen'>(</span><span class='ivar'>@response</span><span class='period'>.</span><span class='id identifier rubyid_req_id'>req_id</span><span class='rparen'>)</span></code></pre>
248
+
249
+ <h3 id="label-Refund+money">Refund money</h3>
250
+
251
+ <pre class="code ruby"><code class="ruby"><span class='ivar'>@refund</span> <span class='op'>=</span> <span class='const'>OpenPayU</span><span class='op'>::</span><span class='const'>Refund</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='lbrace'>{</span>
252
+ <span class='label'>order_id:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Z963D5JQR2230925GUEST000P01</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='comment'>#required
253
+ </span> <span class='label'>description:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Money refund</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='comment'>#required
254
+ </span> <span class='label'>ext_refund_id:</span> <span class='int'>21312</span><span class='comma'>,</span> <span class='comment'>#Refund Id in your syste, optional
255
+ </span> <span class='label'>amount:</span> <span class='int'>1000</span><span class='comma'>,</span> <span class='comment'>#If not provided, returns whole transaction, optional
256
+ </span> <span class='label'>commission_amount:</span> <span class='int'>123</span><span class='comma'>,</span> <span class='comment'>#optional
257
+ </span> <span class='label'>currency_code:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>PLN</span><span class='tstring_end'>&quot;</span></span> <span class='comment'>#optional
258
+ </span><span class='rbrace'>}</span><span class='rparen'>)</span></code></pre>
259
+
260
+ <h2 id="label-Contributing">Contributing</h2>
261
+ <ol><li>
262
+ <p>Fork it</p>
263
+ </li><li>
264
+ <p>Create your feature branch (<code>git checkout -b my-new-feature</code>)</p>
265
+ </li><li>
266
+ <p>Commit your changes (<code>git commit -am 'Add some feature'</code>)</p>
267
+ </li><li>
268
+ <p>Push to the branch (<code>git push origin my-new-feature</code>)</p>
269
+ </li><li>
270
+ <p>Create new Pull Request</p>
271
+ </li></ol>
272
+ </div></div>
273
+
274
+ <div id="footer">
275
+ Generated on Tue Dec 17 15:20:58 2013 by
276
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
277
+ 0.8.7.2 (ruby-1.9.3).
278
+ </div>
279
+
280
+ </body>
281
+ </html>
@@ -0,0 +1,56 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html>
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+
7
+ <link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen" charset="utf-8" />
8
+
9
+ <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
10
+
11
+
12
+
13
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
14
+
15
+ <script type="text/javascript" charset="utf-8" src="js/full_list.js"></script>
16
+
17
+
18
+ <title>File List</title>
19
+ <base id="base_target" target="_parent" />
20
+ </head>
21
+ <body>
22
+ <script type="text/javascript" charset="utf-8">
23
+ if (window.top.frames.main) {
24
+ document.getElementById('base_target').target = 'main';
25
+ document.body.className = 'frames';
26
+ }
27
+ </script>
28
+ <div id="content">
29
+ <h1 id="full_list_header">File List</h1>
30
+ <div id="nav">
31
+
32
+ <span><a target="_self" href="class_list.html">
33
+ Classes
34
+ </a></span>
35
+
36
+ <span><a target="_self" href="method_list.html">
37
+ Methods
38
+ </a></span>
39
+
40
+ <span><a target="_self" href="file_list.html">
41
+ Files
42
+ </a></span>
43
+
44
+ </div>
45
+ <div id="search">Search: <input type="text" /></div>
46
+
47
+ <ul id="full_list" class="file">
48
+
49
+
50
+ <li class="r1"><span class="object_link"><a href="index.html" title="README">README</a></a></li>
51
+
52
+
53
+ </ul>
54
+ </div>
55
+ </body>
56
+ </html>
data/doc/frames.html ADDED
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
3
+
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
7
+ <title>Documentation by YARD 0.8.7.2</title>
8
+ </head>
9
+ <script type="text/javascript" charset="utf-8">
10
+ window.onload = function() {
11
+ var match = unescape(window.location.hash).match(/^#!(.+)/);
12
+ var name = match ? match[1] : 'index.html';
13
+ name = name.replace(/^(\w+):\/\//, '').replace(/^\/\//, '');
14
+ document.writeln('<frameset cols="20%,*">' +
15
+ '<frame name="list" src="class_list.html" />' +
16
+ '<frame name="main" src="' + escape(name) + '" />' +
17
+ '</frameset>');
18
+ }
19
+ </script>
20
+ <noscript>
21
+ <frameset cols="20%,*">
22
+ <frame name="list" src="class_list.html" />
23
+ <frame name="main" src="index.html" />
24
+ </frameset>
25
+ </noscript>
26
+ </html>
data/doc/index.html ADDED
@@ -0,0 +1,281 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII" />
6
+ <title>
7
+ File: README
8
+
9
+ &mdash; Documentation by YARD 0.8.7.2
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ hasFrames = window.top.frames.main ? true : false;
19
+ relpath = '';
20
+ framesUrl = "frames.html#!" + escape(window.location.href);
21
+ </script>
22
+
23
+
24
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
25
+
26
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
27
+
28
+
29
+ </head>
30
+ <body>
31
+ <div id="header">
32
+ <div id="menu">
33
+
34
+ <a href="_index.html">Index</a> &raquo;
35
+ <span class="title">File: README</span>
36
+
37
+
38
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
39
+ </div>
40
+
41
+ <div id="search">
42
+
43
+ <a class="full_list_link" id="class_list_link"
44
+ href="class_list.html">
45
+ Class List
46
+ </a>
47
+
48
+ <a class="full_list_link" id="method_list_link"
49
+ href="method_list.html">
50
+ Method List
51
+ </a>
52
+
53
+ <a class="full_list_link" id="file_list_link"
54
+ href="file_list.html">
55
+ File List
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <iframe id="search_frame"></iframe>
63
+
64
+ <div id="content"><div id='filecontents'>
65
+ <p><a
66
+ href="https://magnum.travis-ci.com/PayU/openpayu_ruby_sdk.png?token=sqp5QvsmzqEqtVB3sNsK&branch=master">{Build
67
+ Status</a>] <img
68
+ src="https://codeclimate.com/repos/524eb044f3ea00329815dff1/badges/885c2d52f25c02295344/gpa.png"
69
+ />]</p>
70
+
71
+ <h1 id="label-OpenpayuSdkRuby">OpenpayuSdkRuby</h1>
72
+
73
+ <p>The OpenPayU Ruby library provides integration access to the PayU Gateway
74
+ API ver. 2.</p>
75
+
76
+ <h2 id="label-Installation">Installation</h2>
77
+
78
+ <p>Add this line to your application's Gemfile:</p>
79
+
80
+ <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_gem'>gem</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>openpayu</span><span class='tstring_end'>'</span></span></code></pre>
81
+
82
+ <p>And then execute:</p>
83
+
84
+ <pre class="code ruby"><code class="ruby">$ bundle</code></pre>
85
+
86
+ <p>Or install it yourself as:</p>
87
+
88
+ <pre class="code ruby"><code class="ruby">$ gem install openpayu</code></pre>
89
+
90
+ <h2 id="label-Configure+Gem">Configure Gem</h2>
91
+
92
+ <p>To configure OpenPayU environment add a file to
93
+ config/initializers/openpayu.rb containing:</p>
94
+
95
+ <pre class="code ruby"><code class="ruby"><span class='const'>OpenPayU</span><span class='op'>::</span><span class='const'>Configuration</span><span class='period'>.</span><span class='id identifier rubyid_configure'>configure</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_config'>config</span><span class='op'>|</span>
96
+ <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_merchant_pos_id'>merchant_pos_id</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>8389534</span><span class='tstring_end'>'</span></span>
97
+ <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_signature_key'>signature_key</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>95873498573498573897fb42d</span><span class='tstring_end'>'</span></span>
98
+ <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_algorithm'>algorithm</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>MD5</span><span class='tstring_end'>'</span></span> <span class='comment'># MD5, SHA-1, SHA-256
99
+ </span> <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_service_domain'>service_domain</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>payu.com</span><span class='tstring_end'>'</span></span>
100
+ <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_protocol'>protocol</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>https</span><span class='tstring_end'>'</span></span>
101
+ <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_data_format'>data_format</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>json</span><span class='tstring_end'>'</span></span> <span class='comment'># json, xml
102
+ </span> <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_env'>env</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>secure</span><span class='tstring_end'>'</span></span>
103
+ <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_order_url'>order_url</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>http://localhost/order</span><span class='tstring_end'>'</span></span>
104
+ <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_notify_url'>notify_url</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>http://localhost/notify</span><span class='tstring_end'>'</span></span>
105
+ <span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_continue_url'>continue_url</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>http://localhost/success</span><span class='tstring_end'>'</span></span>
106
+ <span class='kw'>end</span>
107
+ </code></pre>
108
+
109
+ <p>Or by providing a path to YAML file</p>
110
+
111
+ <pre class="code ruby"><code class="ruby"><span class='const'>OpenPayU</span><span class='op'>::</span><span class='const'>Configuration</span><span class='period'>.</span><span class='id identifier rubyid_configure'>configure</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='const'>Rails</span><span class='period'>.</span><span class='id identifier rubyid_root'>root</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>config/openpayu.yml</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span></code></pre>
112
+
113
+ <p>Structure of YAML file:</p>
114
+
115
+ <pre class="code ruby"><code class="ruby">development:
116
+ merchant_pos_id: '8389534'
117
+ signature_key: 95873498573498573897fb42d
118
+ algorithm: MD5 # MD5, SHA-1, SHA-256
119
+ service_domain: payu.com
120
+ protocol: https
121
+ data_format: json # json, xml
122
+ env: secure
123
+ order_url: http://localhost/order
124
+ notify_url: http://localhost/notify
125
+ continue_url: http://localhost/success
126
+ production:
127
+ merchant_pos_id: '8389534'
128
+ signature_key: 95873498573498573897fb42d
129
+ algorithm: MD5 # MD5, SHA-1, SHA-256
130
+ service_domain: payu.com
131
+ protocol: https
132
+ data_format: json # json, xml
133
+ env: secure
134
+ order_url: http://localhost/order
135
+ notify_url: http://localhost/notify
136
+ continue_url: http://localhost/success</code></pre>
137
+
138
+ <h2 id="label-Usage">Usage</h2>
139
+
140
+ <h3 id="label-Creating+Transparent+order">Creating Transparent order</h3>
141
+
142
+ <p>To create an order you must provide a Hash with order:</p>
143
+
144
+ <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_order'>order</span> <span class='op'>=</span> <span class='lbrace'>{</span>
145
+ <span class='label'>merchant_pos_id:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>8389534</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
146
+ <span class='label'>customer_ip:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='comment'># You can user request.remote_ip in your controller
147
+ </span> <span class='label'>ext_order_id:</span> <span class='int'>1342</span><span class='comma'>,</span> <span class='comment'>#Order id in your system
148
+ </span> <span class='label'>order_url:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>http://localhost/</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
149
+ <span class='label'>description:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>New order</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
150
+ <span class='label'>currency_code:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>PLN</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
151
+ <span class='label'>total_amount:</span> <span class='int'>10000</span><span class='comma'>,</span>
152
+ <span class='label'>notify_url:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>http://localhost/</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
153
+ <span class='label'>continue_url:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>http://localhost/</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
154
+ <span class='label'>validity_time:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>48000</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
155
+ <span class='label'>buyer:</span> <span class='lbrace'>{</span>
156
+ <span class='label'>email:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>dd@ddd.pl</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
157
+ <span class='label'>phone:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>123123123</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
158
+ <span class='label'>first_name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Jan</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
159
+ <span class='label'>last_name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Kowalski</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
160
+ <span class='label'>language:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>pl_PL</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
161
+ <span class='label'>NIN:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>123456</span><span class='tstring_end'>&quot;</span></span>
162
+ <span class='rbrace'>}</span><span class='comma'>,</span>
163
+ <span class='label'>products:</span> <span class='lbracket'>[</span>
164
+ <span class='lbrace'>{</span>
165
+ <span class='label'>name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Mouse</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
166
+ <span class='label'>unit_price:</span> <span class='int'>10000</span><span class='comma'>,</span>
167
+ <span class='label'>quantity:</span> <span class='int'>1</span>
168
+ <span class='rbrace'>}</span>
169
+ <span class='rbracket'>]</span><span class='comma'>,</span>
170
+ <span class='label'>pay_methods:</span> <span class='lbracket'>[</span>
171
+ <span class='lbrace'>{</span>
172
+ <span class='label'>type:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>CARD_TOKEN</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
173
+ <span class='label'>value:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Token value</span><span class='tstring_end'>'</span></span>
174
+ <span class='rbrace'>}</span>
175
+ <span class='rbracket'>]</span>
176
+ <span class='rbrace'>}</span></code></pre>
177
+
178
+ <p>When you have ready order Hash you can create new order:</p>
179
+
180
+ <pre class="code ruby"><code class="ruby"><span class='ivar'>@response</span> <span class='op'>=</span> <span class='const'>OpenPayU</span><span class='op'>::</span><span class='const'>Order</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='id identifier rubyid_order'>order</span><span class='rparen'>)</span></code></pre>
181
+
182
+ <p>If request succeed to create it will return "COMPLETE" as a status_code.
183
+ There might be also a redirect to page with confirmation. There are three
184
+ redirect types:</p>
185
+ <ul><li>
186
+ <p>WARNING_CONTINUE_REDIRECT</p>
187
+ </li><li>
188
+ <p>WARNING_CONTINUE_CVV</p>
189
+ </li><li>
190
+ <p>WARNING_CONTINUE_3DS</p>
191
+ </li></ul>
192
+
193
+ <pre class="code ruby"><code class="ruby"><span class='kw'>case</span> <span class='ivar'>@response</span><span class='period'>.</span><span class='id identifier rubyid_status'>status</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>status_code</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span>
194
+ <span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>COMPLETE</span><span class='tstring_end'>'</span></span>
195
+ <span class='comment'># order has been created
196
+ </span><span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>WARNING_CONTINUE_</span><span class='regexp_end'>/</span></span>
197
+ <span class='comment'>#need to redirec user to a provided URL
198
+ </span> <span class='id identifier rubyid_redirect_to'>redirect_to</span> <span class='ivar'>@response</span><span class='period'>.</span><span class='id identifier rubyid_redirect_uri'>redirect_uri</span>
199
+ <span class='kw'>else</span>
200
+ <span class='comment'>#in other cases something went wrong
201
+ </span> <span class='id identifier rubyid_logger'>logger</span><span class='period'>.</span><span class='id identifier rubyid_info'>info</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Unable to create order.
202
+ Status: </span><span class='embexpr_beg'>#{</span><span class='ivar'>@response</span><span class='period'>.</span><span class='id identifier rubyid_status'>status</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>status_code</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='rbrace'>}</span><span class='tstring_content'>.
203
+ Response: </span><span class='embexpr_beg'>#{</span><span class='ivar'>@response</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span>
204
+ <span class='kw'>end</span></code></pre>
205
+
206
+ <h3 id="label-Creating+Hosted+order">Creating Hosted order</h3>
207
+
208
+ <p>If you pass the same Hash of order as above to hosted_order_form you will
209
+ get a String containgin a form to embed in your view</p>
210
+
211
+ <pre class="code ruby"><code class="ruby">#in your controller
212
+ @order_form_data = OpenPayU.hosted_order_form(order)
213
+
214
+ # in your view
215
+ &lt;%= @order_form_data.html_safe %&gt;</code></pre>
216
+
217
+ <h3 id="label-Retrieving+order+from+OpenPayU">Retrieving order from OpenPayU</h3>
218
+
219
+ <p>You can retrieve order by its PayU order_id</p>
220
+
221
+ <pre class="code ruby"><code class="ruby"><span class='ivar'>@response</span> <span class='op'>=</span> <span class='const'>OpenPayU</span><span class='op'>::</span><span class='const'>Order</span><span class='period'>.</span><span class='id identifier rubyid_retrieve'>retrieve</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Z963D5JQR2230925GUEST000P01</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span></code></pre>
222
+
223
+ <h3 id="label-Cancelling+order">Cancelling order</h3>
224
+
225
+ <p>You can cancel order by its PayU order_id</p>
226
+
227
+ <pre class="code ruby"><code class="ruby"><span class='ivar'>@response</span> <span class='op'>=</span> <span class='const'>OpenPayU</span><span class='op'>::</span><span class='const'>Order</span><span class='period'>.</span><span class='id identifier rubyid_cancel'>cancel</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Z963D5JQR2230925GUEST000P01</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span></code></pre>
228
+
229
+ <h3 id="label-Updating+order+status">Updating order status</h3>
230
+
231
+ <p>You can update order status to accept order when Autoreceive in POS is
232
+ turned off</p>
233
+
234
+ <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_status_update'>status_update</span> <span class='op'>=</span> <span class='lbrace'>{</span>
235
+ <span class='label'>order_id:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Z963D5JQR2230925GUEST000P01</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
236
+ <span class='label'>order_status:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>COMPLETED</span><span class='tstring_end'>'</span></span>
237
+ <span class='rbrace'>}</span>
238
+ <span class='ivar'>@response</span> <span class='op'>=</span> <span class='const'>OpenPayU</span><span class='op'>::</span><span class='const'>Order</span><span class='period'>.</span><span class='id identifier rubyid_status_update'>status_update</span><span class='lparen'>(</span><span class='id identifier rubyid_status_update'>status_update</span><span class='rparen'>)</span></code></pre>
239
+
240
+ <h3 id="label-Handling+notifications+from+PayU">Handling notifications from PayU</h3>
241
+
242
+ <p>PayU sends requests to your application when order status changes</p>
243
+
244
+ <pre class="code ruby"><code class="ruby"><span class='ivar'>@response</span> <span class='op'>=</span> <span class='const'>OpenPayU</span><span class='op'>::</span><span class='const'>Order</span><span class='period'>.</span><span class='id identifier rubyid_consume_notification'>consume_notification</span><span class='lparen'>(</span><span class='id identifier rubyid_request'>request</span><span class='rparen'>)</span> <span class='comment'>#request object from controller
245
+ </span><span class='ivar'>@response</span><span class='period'>.</span><span class='id identifier rubyid_order_status'>order_status</span> <span class='comment'>#NEW PENDING CANCELLED REJECTED COMPLETED WAITING_FOR_CONFIRMATION
246
+ </span><span class='comment'>#you should response to PayU with special structure (OrderNotifyResponse)
247
+ </span><span class='id identifier rubyid_render'>render</span> <span class='label'>json:</span> <span class='const'>OpenPayU</span><span class='op'>::</span><span class='const'>Order</span><span class='period'>.</span><span class='id identifier rubyid_build_notify_response'>build_notify_response</span><span class='lparen'>(</span><span class='ivar'>@response</span><span class='period'>.</span><span class='id identifier rubyid_req_id'>req_id</span><span class='rparen'>)</span></code></pre>
248
+
249
+ <h3 id="label-Refund+money">Refund money</h3>
250
+
251
+ <pre class="code ruby"><code class="ruby"><span class='ivar'>@refund</span> <span class='op'>=</span> <span class='const'>OpenPayU</span><span class='op'>::</span><span class='const'>Refund</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='lbrace'>{</span>
252
+ <span class='label'>order_id:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Z963D5JQR2230925GUEST000P01</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='comment'>#required
253
+ </span> <span class='label'>description:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Money refund</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='comment'>#required
254
+ </span> <span class='label'>ext_refund_id:</span> <span class='int'>21312</span><span class='comma'>,</span> <span class='comment'>#Refund Id in your syste, optional
255
+ </span> <span class='label'>amount:</span> <span class='int'>1000</span><span class='comma'>,</span> <span class='comment'>#If not provided, returns whole transaction, optional
256
+ </span> <span class='label'>commission_amount:</span> <span class='int'>123</span><span class='comma'>,</span> <span class='comment'>#optional
257
+ </span> <span class='label'>currency_code:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>PLN</span><span class='tstring_end'>&quot;</span></span> <span class='comment'>#optional
258
+ </span><span class='rbrace'>}</span><span class='rparen'>)</span></code></pre>
259
+
260
+ <h2 id="label-Contributing">Contributing</h2>
261
+ <ol><li>
262
+ <p>Fork it</p>
263
+ </li><li>
264
+ <p>Create your feature branch (<code>git checkout -b my-new-feature</code>)</p>
265
+ </li><li>
266
+ <p>Commit your changes (<code>git commit -am 'Add some feature'</code>)</p>
267
+ </li><li>
268
+ <p>Push to the branch (<code>git push origin my-new-feature</code>)</p>
269
+ </li><li>
270
+ <p>Create new Pull Request</p>
271
+ </li></ol>
272
+ </div></div>
273
+
274
+ <div id="footer">
275
+ Generated on Tue Dec 17 15:20:58 2013 by
276
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
277
+ 0.8.7.2 (ruby-1.9.3).
278
+ </div>
279
+
280
+ </body>
281
+ </html>