portmone 0.0.8 → 0.0.9
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 +5 -5
- data/Gemfile.lock +5 -5
- data/lib/portmone.rb +1 -0
- data/lib/portmone/client.rb +68 -7
- data/lib/portmone/responses/mobile_pay_response.rb +28 -0
- data/lib/portmone/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 9a1600b423ce55672d03a7906e474823f73eeb0232e8fe08d9bec074c989e585
|
4
|
+
data.tar.gz: 3648a02b61846f275ae160acd9767017bed22cca5bf243915285a1a433d6b3c0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 57b0d6f7188867345cb64c9069b931a86f53ee7b9527c0642d1d1c1a5c26f4d05e0cff30826ab973b67611342e23830eb4925afb55e2932f03b54026387d83f8
|
7
|
+
data.tar.gz: 177baf7c0a83e4bac731e4bbdfc8e52010bddceb1b1d467b77ee4441fc5d63e4cf4a835b43f28d799b908a60b36d5b358d927d17b30eb529bd32a7193322754e
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
portmone (0.0.
|
4
|
+
portmone (0.0.9)
|
5
5
|
activesupport
|
6
6
|
faraday (~> 0.9)
|
7
7
|
money (~> 6.0)
|
@@ -19,22 +19,22 @@ GEM
|
|
19
19
|
public_suffix (>= 2.0.2, < 4.0)
|
20
20
|
ast (2.3.0)
|
21
21
|
coderay (1.1.2)
|
22
|
-
concurrent-ruby (1.1.
|
22
|
+
concurrent-ruby (1.1.5)
|
23
23
|
crack (0.4.3)
|
24
24
|
safe_yaml (~> 1.0.0)
|
25
25
|
docile (1.1.5)
|
26
26
|
faraday (0.15.4)
|
27
27
|
multipart-post (>= 1.2, < 3)
|
28
28
|
hashdiff (0.3.7)
|
29
|
-
i18n (1.
|
29
|
+
i18n (1.6.0)
|
30
30
|
concurrent-ruby (~> 1.0)
|
31
31
|
json (2.1.0)
|
32
32
|
method_source (0.9.0)
|
33
33
|
minitest (5.11.3)
|
34
|
-
money (6.13.
|
34
|
+
money (6.13.4)
|
35
35
|
i18n (>= 0.6.4, <= 2)
|
36
36
|
multi_xml (0.6.0)
|
37
|
-
multipart-post (2.
|
37
|
+
multipart-post (2.1.1)
|
38
38
|
parallel (1.12.0)
|
39
39
|
parser (2.4.0.0)
|
40
40
|
ast (~> 2.2)
|
data/lib/portmone.rb
CHANGED
data/lib/portmone/client.rb
CHANGED
@@ -2,7 +2,8 @@ module Portmone
|
|
2
2
|
class Error < StandardError; end
|
3
3
|
|
4
4
|
class Client
|
5
|
-
|
5
|
+
API_URL = 'https://www.portmone.com.ua/gateway/'.freeze
|
6
|
+
MOBILE_API_URL = 'https://www.portmone.com.ua/r3/api/gateway/'.freeze
|
6
7
|
|
7
8
|
def initialize(payee_id:,
|
8
9
|
login:,
|
@@ -60,7 +61,46 @@ module Portmone
|
|
60
61
|
)
|
61
62
|
end
|
62
63
|
|
63
|
-
|
64
|
+
def google_pay(token:, amount:, order_id:, currency:)
|
65
|
+
google_pay_params = {
|
66
|
+
gPayToken: token,
|
67
|
+
}
|
68
|
+
mobile_pay('GPay', google_pay_params, amount: amount, order_id: order_id, currency: currency)
|
69
|
+
end
|
70
|
+
|
71
|
+
def apple_pay(token:, amount:, order_id:, currency:, merchant_name:)
|
72
|
+
apple_pay_params = {
|
73
|
+
aPayMerchantName: merchant_name,
|
74
|
+
paymentData: token,
|
75
|
+
}
|
76
|
+
mobile_pay('APay', apple_pay_params, amount: amount, order_id: order_id, currency: currency)
|
77
|
+
end
|
78
|
+
|
79
|
+
private
|
80
|
+
|
81
|
+
def mobile_pay(payment_method, payment_system_params, amount:, order_id:, currency:)
|
82
|
+
order_params = {
|
83
|
+
billAmount: amount,
|
84
|
+
shopOrderNumber: order_id,
|
85
|
+
billCurrency: currency,
|
86
|
+
}
|
87
|
+
|
88
|
+
data = payment_system_params
|
89
|
+
.merge(order_params)
|
90
|
+
.merge(base_params)
|
91
|
+
.keep_if { |_, v| v.present? }
|
92
|
+
params = { params: { data: data }, method: payment_method, id: 1 }
|
93
|
+
|
94
|
+
make_json_request(MOBILE_API_URL, params, Portmone::Responses::MobilePayResponse)
|
95
|
+
end
|
96
|
+
|
97
|
+
def base_params
|
98
|
+
{
|
99
|
+
login: @login,
|
100
|
+
password: @password,
|
101
|
+
payeeId: @payee_id,
|
102
|
+
}
|
103
|
+
end
|
64
104
|
|
65
105
|
# может возвращать как отдельный заказ по id, так и все заказы с опр. статусом или в опр. временном диапазоне
|
66
106
|
def generic_report(shop_order_number: nil, status: nil, start_date: nil, end_date: nil)
|
@@ -104,16 +144,37 @@ module Portmone
|
|
104
144
|
|
105
145
|
def send_request(**data)
|
106
146
|
response_class = data.delete(:response_class)
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
147
|
+
payload = compact(data.merge(mandatory_params))
|
148
|
+
|
149
|
+
response = http_client.post(API_URL) do |req|
|
150
|
+
req.body = payload
|
151
|
+
end
|
152
|
+
|
153
|
+
response_class.new(response, currency: @currency, timezone: @timezone)
|
154
|
+
end
|
155
|
+
|
156
|
+
def make_json_request(url, params, response_class)
|
157
|
+
conn = Faraday.new(url: url) do |builder|
|
158
|
+
builder.response(:detailed_logger, @logger)
|
159
|
+
builder.adapter Faraday.default_adapter
|
160
|
+
end
|
161
|
+
|
162
|
+
response = conn.post do |request|
|
163
|
+
request.headers['Content-Type'] = 'application/json'
|
164
|
+
request.body = params.to_json
|
112
165
|
end
|
113
166
|
|
114
167
|
response_class.new(response, currency: @currency, timezone: @timezone)
|
115
168
|
end
|
116
169
|
|
170
|
+
def mandatory_params
|
171
|
+
{ payee_id: @payee_id, lang: @locale }
|
172
|
+
end
|
173
|
+
|
174
|
+
def compact(**params)
|
175
|
+
params.delete_if { |_, v| v.nil? }
|
176
|
+
end
|
177
|
+
|
117
178
|
def http_client
|
118
179
|
@http_client ||= Faraday.new do |builder|
|
119
180
|
builder.request :url_encoded
|
@@ -0,0 +1,28 @@
|
|
1
|
+
class Portmone::Responses::MobilePayResponse
|
2
|
+
SUCCESS_STATUS = 'PAYED'.freeze
|
3
|
+
|
4
|
+
attr_reader :response
|
5
|
+
|
6
|
+
def initialize(faraday_response, currency:, timezone:)
|
7
|
+
@response = faraday_response
|
8
|
+
@response_body = JSON.parse(@response.body)
|
9
|
+
@currency = currency
|
10
|
+
@timezone = timezone
|
11
|
+
end
|
12
|
+
|
13
|
+
def http_status
|
14
|
+
response.status
|
15
|
+
end
|
16
|
+
|
17
|
+
def success?
|
18
|
+
@response_body['result']['status'] == SUCCESS_STATUS
|
19
|
+
end
|
20
|
+
|
21
|
+
def error_code
|
22
|
+
@response_body['result']['errorCode']
|
23
|
+
end
|
24
|
+
|
25
|
+
def error_description
|
26
|
+
@response_body['result']['error']
|
27
|
+
end
|
28
|
+
end
|
data/lib/portmone/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: portmone
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Sviridov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-07-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -192,6 +192,7 @@ files:
|
|
192
192
|
- lib/portmone/client.rb
|
193
193
|
- lib/portmone/responses/base_response.rb
|
194
194
|
- lib/portmone/responses/generate_url.rb
|
195
|
+
- lib/portmone/responses/mobile_pay_response.rb
|
195
196
|
- lib/portmone/responses/order_status.rb
|
196
197
|
- lib/portmone/responses/refund_order_status.rb
|
197
198
|
- lib/portmone/transaction.rb
|
@@ -216,8 +217,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
216
217
|
- !ruby/object:Gem::Version
|
217
218
|
version: '0'
|
218
219
|
requirements: []
|
219
|
-
|
220
|
-
rubygems_version: 2.5.2
|
220
|
+
rubygems_version: 3.0.3
|
221
221
|
signing_key:
|
222
222
|
specification_version: 4
|
223
223
|
summary: Ruby wrapper for Portmone payment system API
|