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.
- checksums.yaml +15 -0
- data/.gitignore +18 -0
- data/.rspec +3 -0
- data/.rubocop.yml +45 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +10 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +193 -0
- data/Rakefile +1 -0
- data/doc/EmptyResponseError.html +123 -0
- data/doc/HttpStatusException.html +123 -0
- data/doc/NotImplementedException.html +123 -0
- data/doc/OpenPayU.html +436 -0
- data/doc/OpenPayU/Configuration.html +1530 -0
- data/doc/OpenPayU/Connection.html +381 -0
- data/doc/OpenPayU/Document.html +705 -0
- data/doc/OpenPayU/Documents.html +117 -0
- data/doc/OpenPayU/Documents/Request.html +503 -0
- data/doc/OpenPayU/Documents/Response.html +783 -0
- data/doc/OpenPayU/Models.html +117 -0
- data/doc/OpenPayU/Models/Address.html +861 -0
- data/doc/OpenPayU/Models/Buyer.html +587 -0
- data/doc/OpenPayU/Models/Buyer/Delivery.html +312 -0
- data/doc/OpenPayU/Models/Card.html +507 -0
- data/doc/OpenPayU/Models/Fee.html +367 -0
- data/doc/OpenPayU/Models/Model.html +1208 -0
- data/doc/OpenPayU/Models/NotifyResponse.html +297 -0
- data/doc/OpenPayU/Models/Order.html +1155 -0
- data/doc/OpenPayU/Models/PayMethod.html +507 -0
- data/doc/OpenPayU/Models/Product.html +787 -0
- data/doc/OpenPayU/Models/Refund.html +1020 -0
- data/doc/OpenPayU/Models/ShippingMethod.html +367 -0
- data/doc/OpenPayU/Models/StatusUpdate.html +647 -0
- data/doc/OpenPayU/Models/Token.html +507 -0
- data/doc/OpenPayU/Order.html +924 -0
- data/doc/OpenPayU/Refund.html +269 -0
- data/doc/OpenPayU/Token.html +288 -0
- data/doc/OpenPayU/XmlBuilder.html +277 -0
- data/doc/WrongConfigurationError.html +123 -0
- data/doc/WrongNotifyRequest.html +123 -0
- data/doc/WrongOrderParameters.html +267 -0
- data/doc/WrongSignatureException.html +123 -0
- data/doc/_index.html +446 -0
- data/doc/class_list.html +54 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +57 -0
- data/doc/css/style.css +338 -0
- data/doc/file.README.html +281 -0
- data/doc/file_list.html +56 -0
- data/doc/frames.html +26 -0
- data/doc/index.html +281 -0
- data/doc/js/app.js +214 -0
- data/doc/js/full_list.js +178 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +1007 -0
- data/doc/top-level-namespace.html +114 -0
- data/lib/openpayu.rb +66 -0
- data/lib/openpayu/configuration.rb +62 -0
- data/lib/openpayu/connection.rb +65 -0
- data/lib/openpayu/document.rb +105 -0
- data/lib/openpayu/documents/request.rb +34 -0
- data/lib/openpayu/documents/response.rb +48 -0
- data/lib/openpayu/exceptions.rb +19 -0
- data/lib/openpayu/models/address.rb +12 -0
- data/lib/openpayu/models/buyer.rb +11 -0
- data/lib/openpayu/models/buyer/delivery.rb +7 -0
- data/lib/openpayu/models/buyer/invoice.rb +8 -0
- data/lib/openpayu/models/card.rb +10 -0
- data/lib/openpayu/models/fee.rb +9 -0
- data/lib/openpayu/models/model.rb +151 -0
- data/lib/openpayu/models/notify_response.rb +9 -0
- data/lib/openpayu/models/order.rb +28 -0
- data/lib/openpayu/models/pay_method.rb +10 -0
- data/lib/openpayu/models/product.rb +10 -0
- data/lib/openpayu/models/refund.rb +41 -0
- data/lib/openpayu/models/shipping_method.rb +9 -0
- data/lib/openpayu/models/status_update.rb +14 -0
- data/lib/openpayu/models/token.rb +10 -0
- data/lib/openpayu/order.rb +119 -0
- data/lib/openpayu/refund.rb +26 -0
- data/lib/openpayu/token.rb +27 -0
- data/lib/openpayu/version.rb +4 -0
- data/lib/openpayu/xml_builder.rb +23 -0
- data/lib/openpayu_ruby.rb +2 -0
- data/openpayu_ruby.gemspec +40 -0
- data/spec/cassettes/cancel_order.yml +50 -0
- data/spec/cassettes/create_order.yml +51 -0
- data/spec/cassettes/refund_order.yml +100 -0
- data/spec/cassettes/retrieve_order.yml +51 -0
- data/spec/cassettes/update_order.yml +50 -0
- data/spec/integration/order_spec.rb +103 -0
- data/spec/openpayu.yml +11 -0
- data/spec/spec_helper.rb +27 -0
- data/spec/test_objects/order.rb +97 -0
- data/spec/unit/configuration_spec.rb +71 -0
- data/spec/unit/document_spec.rb +18 -0
- data/spec/unit/models/order_spec.rb +82 -0
- data/spec/unit/models/refund_spec.rb +24 -0
- data/spec/unit/openpayu_spec.rb +27 -0
- 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
|
+
— 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> »
|
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'>"</span><span class='tstring_content'>8389534</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
146
|
+
<span class='label'>customer_ip:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>http://localhost/</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
149
|
+
<span class='label'>description:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>New order</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
150
|
+
<span class='label'>currency_code:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>PLN</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>http://localhost/</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
153
|
+
<span class='label'>continue_url:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>http://localhost/</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>123456</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>status_code</span><span class='tstring_end'>"</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'>"</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'>"</span><span class='tstring_content'>status_code</span><span class='tstring_end'>"</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'>"</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
|
+
<%= @order_form_data.html_safe %></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'>"</span><span class='tstring_content'>Z963D5JQR2230925GUEST000P01</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>Z963D5JQR2230925GUEST000P01</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>Z963D5JQR2230925GUEST000P01</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>Z963D5JQR2230925GUEST000P01</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='comment'>#required
|
253
|
+
</span> <span class='label'>description:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Money refund</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>PLN</span><span class='tstring_end'>"</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>
|
data/doc/file_list.html
ADDED
@@ -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
|
+
— 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> »
|
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'>"</span><span class='tstring_content'>8389534</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
146
|
+
<span class='label'>customer_ip:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>http://localhost/</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
149
|
+
<span class='label'>description:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>New order</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
150
|
+
<span class='label'>currency_code:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>PLN</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>http://localhost/</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
153
|
+
<span class='label'>continue_url:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>http://localhost/</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>123456</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>status_code</span><span class='tstring_end'>"</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'>"</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'>"</span><span class='tstring_content'>status_code</span><span class='tstring_end'>"</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'>"</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
|
+
<%= @order_form_data.html_safe %></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'>"</span><span class='tstring_content'>Z963D5JQR2230925GUEST000P01</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>Z963D5JQR2230925GUEST000P01</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>Z963D5JQR2230925GUEST000P01</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>Z963D5JQR2230925GUEST000P01</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='comment'>#required
|
253
|
+
</span> <span class='label'>description:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Money refund</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>PLN</span><span class='tstring_end'>"</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>
|