privat24_api 0.2.1 → 0.3.0
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 +4 -4
- data/lib/privat24_api/card/card.rb +5 -0
- data/lib/privat24_api/configure.rb +19 -0
- data/lib/privat24_api/request/info/info_request.rb +5 -5
- data/lib/privat24_api/request/payment/payment_request.rb +111 -0
- data/lib/privat24_api/request/public/public_request.rb +125 -0
- data/lib/privat24_api/request/request.rb +10 -9
- data/lib/privat24_api/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a56e4dd019db0597d3f7d57968e8c87ddaf8c8cc09369bcbd4382e2e8d3b0d88
|
4
|
+
data.tar.gz: fad096935ce7dd9922dc01cad036da1652f3a3258fa3acfdb9aa8ffdff094760
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 49d41341a5a4d278bd7a7023db4c65c79f78c2d1494d7fd4cdb7e25d618684f6bddea523e230d9dc823fd52e8cbfbb0042bc1701457bc6dc0f282322a643f597
|
7
|
+
data.tar.gz: 4f38a9bb2e1273a5722c77a9b87276278ca3a79becf93ba8ac98e55a9364b27e65d3a68b763fe925d42d1dff4362d56f71bb0acce45a386bfdfef7199f283462
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require "privat24_api/request/info/info_request"
|
2
2
|
require "privat24_api/request/payment/payment_request"
|
3
|
+
require "privat24_api/request/public/public_request"
|
3
4
|
|
4
5
|
module Privat24Api
|
5
6
|
class Card
|
@@ -16,5 +17,9 @@ module Privat24Api
|
|
16
17
|
def payment
|
17
18
|
Privat24Api::PaymentRequest.new(args)
|
18
19
|
end
|
20
|
+
|
21
|
+
def public
|
22
|
+
Privat24Api::PublicRequest.new(args)
|
23
|
+
end
|
19
24
|
end
|
20
25
|
end
|
@@ -23,6 +23,25 @@ module Privat24Api
|
|
23
23
|
'info' => {
|
24
24
|
'balance' => 'balance',
|
25
25
|
'transaction_details' => 'rest_fiz'
|
26
|
+
},
|
27
|
+
'payment' => {
|
28
|
+
'pay_on_privat_card' => 'pay_pb',
|
29
|
+
'pay_on_ua_card' => 'pay_ua',
|
30
|
+
'pay_on_visa_card' => 'pay_visa',
|
31
|
+
'check_status_pay' => 'check_pay',
|
32
|
+
'pay_on_mobile' => 'directfill',
|
33
|
+
'pay_on_mobile_multiple' => 'directfill',
|
34
|
+
'check_status_mobile' => 'check_directfill',
|
35
|
+
'send_sms' => 'sendsms'
|
36
|
+
},
|
37
|
+
'public' => {
|
38
|
+
'exchange_cash' => 'pubinfo?exchange&coursid=5',
|
39
|
+
'exchange_non_cash' => 'pubinfo?exchange&coursid=11',
|
40
|
+
'exchange' => 'pubinfo?exchange&coursid=3',
|
41
|
+
'exchange_archive' => 'exchange_rates',
|
42
|
+
'list_privat_offices' => 'pboffice',
|
43
|
+
'atm' => 'https://api.privatbank.ua/p24api/infrastructure?atm',
|
44
|
+
'tso' => 'https://api.privatbank.ua/p24api/infrastructure?tso'
|
26
45
|
}
|
27
46
|
}
|
28
47
|
end
|
@@ -12,7 +12,7 @@ module Privat24Api
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def balance
|
15
|
-
Request.new(card_args).send_data_for(MOD,
|
15
|
+
Request.new(card_args).send_data_for(:post, MOD, __method__.to_s) do |data|
|
16
16
|
data.oper('cmt')
|
17
17
|
data.wait('0')
|
18
18
|
data.payment(id: '')
|
@@ -21,14 +21,14 @@ module Privat24Api
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
def transaction_details(
|
25
|
-
Request.new(card_args).send_data_for(MOD,
|
24
|
+
def transaction_details(date_from, date_to)
|
25
|
+
Request.new(card_args).send_data_for(:post, MOD, __method__.to_s) do |data|
|
26
26
|
data.oper('cmt')
|
27
27
|
data.wait('0')
|
28
28
|
data.test('0')
|
29
29
|
data.payment(id: '') do
|
30
|
-
data.prop(name: 'sd',
|
31
|
-
data.prop(name: 'ed',
|
30
|
+
data.prop(name: 'sd', value: date_from)
|
31
|
+
data.prop(name: 'ed', value: date_to)
|
32
32
|
data.prop(name: 'card', value: card_args[:card_num])
|
33
33
|
end
|
34
34
|
end
|
@@ -10,5 +10,116 @@ module Privat24Api
|
|
10
10
|
def initialize(**card_args)
|
11
11
|
@card_args = card_args
|
12
12
|
end
|
13
|
+
|
14
|
+
# payment_id - order id of your shop
|
15
|
+
def pay_on_privat_card(payment_id, card, amount, details, currency='UAH')
|
16
|
+
Request.new(card_args).send_data_for(:post, MOD, __method__.to_s) do |data|
|
17
|
+
data.oper('cmt')
|
18
|
+
data.wait('0')
|
19
|
+
data.test('0')
|
20
|
+
data.payment(id: payment_id) do
|
21
|
+
data.prop(name: 'b_card_or_acc', value: card)
|
22
|
+
data.prop(name: 'amt', value: amount)
|
23
|
+
data.prop(name: 'ccy', value: currency)
|
24
|
+
data.prop(name: 'details', value: details)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# payment_id - order id of your shop
|
30
|
+
def pay_on_ua_card(payment_id, card, amount, b_name, b_crf, b_bic, details, currency='UAH')
|
31
|
+
Request.new(card_args).send_data_for(:post, MOD, __method__.to_s) do |data|
|
32
|
+
data.oper('cmt')
|
33
|
+
data.wait('0')
|
34
|
+
data.test('0')
|
35
|
+
data.payment(id: payment_id) do
|
36
|
+
data.prop(name: 'b_card_or_acc', value: card)
|
37
|
+
data.prop(name: 'amt', value: amount)
|
38
|
+
data.prop(name: 'ccy', value: currency)
|
39
|
+
data.prop(name: 'b_name', value: b_name)
|
40
|
+
data.prop(name: 'b_crf', value: b_crf)
|
41
|
+
data.prop(name: 'b_bic', value: b_bic)
|
42
|
+
data.prop(name: 'details', value: details)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# payment_id - order id of your shop
|
48
|
+
def pay_on_visa_card(payment_id, card, amount, b_name, details, currency='UAH')
|
49
|
+
Request.new(card_args).send_data_for(:post, MOD, __method__.to_s) do |data|
|
50
|
+
data.oper('cmt')
|
51
|
+
data.wait('30')
|
52
|
+
data.test('0')
|
53
|
+
data.payment(id: payment_id) do
|
54
|
+
data.prop(name: 'b_card_or_acc', value: card)
|
55
|
+
data.prop(name: 'amt', value: amount)
|
56
|
+
data.prop(name: 'ccy', value: currency)
|
57
|
+
data.prop(name: 'b_name', value: b_name)
|
58
|
+
data.prop(name: 'details', value: details)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def check_status_pay(id, ref)
|
64
|
+
Request.new(card_args).send_data_for(:post, MOD, __method__.to_s) do |data|
|
65
|
+
data.oper('cmt')
|
66
|
+
data.wait('0')
|
67
|
+
data.test('0')
|
68
|
+
data.payment do
|
69
|
+
data.prop(name: 'id', value: card)
|
70
|
+
data.prop(name: 'ref', value: amount)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def pay_on_mobile(phone, amount)
|
76
|
+
Request.new(card_args).send_data_for(:post, MOD, __method__.to_s) do |data|
|
77
|
+
data.oper('cmt')
|
78
|
+
data.wait('0')
|
79
|
+
data.test('0')
|
80
|
+
data.payment(id: '') do
|
81
|
+
data.prop(name: 'phone', value: phone)
|
82
|
+
data.prop(name: 'amt', value: amount)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def pay_on_mobile_multiple(phones)
|
88
|
+
Request.new(card_args).send_data_for(:post, MOD, __method__.to_s) do |data|
|
89
|
+
data.oper('cmt')
|
90
|
+
data.wait('0')
|
91
|
+
data.test('0')
|
92
|
+
phones.each_with_index do |phone, index|
|
93
|
+
data.payment(id: index) do
|
94
|
+
data.prop(name: 'phone', value: phone[:number])
|
95
|
+
data.prop(name: 'amt', value: phone[:amount])
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
def check_status_mobile(id)
|
102
|
+
Request.new(card_args).send_data_for(:post, MOD, __method__.to_s) do |data|
|
103
|
+
data.oper('cmt')
|
104
|
+
data.wait('0')
|
105
|
+
data.test('0')
|
106
|
+
data.payment do
|
107
|
+
data.prop(name: 'id', value: id)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
def send_sms(phone_from, phone_to, message)
|
113
|
+
Request.new(card_args).send_data_for(:post, MOD, __method__.to_s) do |data|
|
114
|
+
data.oper('cmt')
|
115
|
+
data.wait('0')
|
116
|
+
data.test('0')
|
117
|
+
data.payment(id: '') do
|
118
|
+
data.prop(name: 'phone', value: phone_from)
|
119
|
+
data.prop(name: 'phoneto', value: phone_to)
|
120
|
+
data.prop(name: 'text', value: message)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
13
124
|
end
|
14
125
|
end
|
@@ -0,0 +1,125 @@
|
|
1
|
+
require "privat24_api/request/request"
|
2
|
+
|
3
|
+
module Privat24Api
|
4
|
+
class PublicRequest
|
5
|
+
|
6
|
+
MOD = 'public'
|
7
|
+
|
8
|
+
attr_reader :card_args
|
9
|
+
|
10
|
+
def initialize(**card_args)
|
11
|
+
@card_args = card_args
|
12
|
+
end
|
13
|
+
|
14
|
+
# payment_id - order id of your shop
|
15
|
+
def pay_on_privat_card(payment_id, card, amount, details, currency='UAH')
|
16
|
+
Request.new(card_args).send_data_for(:get, MOD, __method__.to_s) do |data|
|
17
|
+
data.oper('cmt')
|
18
|
+
data.wait('0')
|
19
|
+
data.test('0')
|
20
|
+
data.payment(id: payment_id) do
|
21
|
+
data.prop(name: 'b_card_or_acc', value: card)
|
22
|
+
data.prop(name: 'amt', value: amount)
|
23
|
+
data.prop(name: 'ccy', value: currency)
|
24
|
+
data.prop(name: 'details', value: details)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# payment_id - order id of your shop
|
30
|
+
def pay_on_ua_card(payment_id, card, amount, b_name, b_crf, details, currency='UAH')
|
31
|
+
Request.new(card_args).send_data_for(:post, MOD, __method__.to_s) do |data|
|
32
|
+
data.oper('cmt')
|
33
|
+
data.wait('0')
|
34
|
+
data.test('0')
|
35
|
+
data.payment(id: payment_id) do
|
36
|
+
data.prop(name: 'b_card_or_acc', value: card)
|
37
|
+
data.prop(name: 'amt', value: amount)
|
38
|
+
data.prop(name: 'ccy', value: currency)
|
39
|
+
data.prop(name: 'b_name', value: b_name)
|
40
|
+
data.prop(name: 'b_crf', value: b_crf)
|
41
|
+
data.prop(name: 'b_bic', value: b_bic)
|
42
|
+
data.prop(name: 'details', value: details)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# payment_id - order id of your shop
|
48
|
+
def pay_on_visa_card(payment_id, card, amount, b_name, b_crf, details, currency='UAH')
|
49
|
+
Request.new(card_args).send_data_for(:post, MOD, __method__.to_s) do |data|
|
50
|
+
data.oper('cmt')
|
51
|
+
data.wait('30')
|
52
|
+
data.test('0')
|
53
|
+
data.payment(id: payment_id) do
|
54
|
+
data.prop(name: 'b_card_or_acc', value: card)
|
55
|
+
data.prop(name: 'amt', value: amount)
|
56
|
+
data.prop(name: 'ccy', value: currency)
|
57
|
+
data.prop(name: 'b_name', value: b_name)
|
58
|
+
data.prop(name: 'details', value: details)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def check_status_pay(payment_id, card, amount, b_name, b_crf, details, currency='UAH')
|
64
|
+
Request.new(card_args).send_data_for(:post, MOD, __method__.to_s) do |data|
|
65
|
+
data.oper('cmt')
|
66
|
+
data.wait('0')
|
67
|
+
data.test('0')
|
68
|
+
data.payment do
|
69
|
+
data.prop(name: 'id', value: card)
|
70
|
+
data.prop(name: 'ref', value: amount)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def pay_on_mobile(phone, amount)
|
76
|
+
Request.new(card_args).send_data_for(:post, MOD, __method__.to_s) do |data|
|
77
|
+
data.oper('cmt')
|
78
|
+
data.wait('0')
|
79
|
+
data.test('0')
|
80
|
+
data.payment(id: '') do
|
81
|
+
data.prop(name: 'phone', value: phone)
|
82
|
+
data.prop(name: 'amt', value: amount)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def pay_on_mobile(*phones)
|
88
|
+
Request.new(card_args).send_data_for(:post, MOD, __method__.to_s) do |data|
|
89
|
+
data.oper('cmt')
|
90
|
+
data.wait('0')
|
91
|
+
data.test('0')
|
92
|
+
phones.each_with_index do |phone, index|
|
93
|
+
data.payment(id: index) do
|
94
|
+
data.prop(name: 'phone', value: phone[:number])
|
95
|
+
data.prop(name: 'amt', value: phone[:amount])
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
def check_status_mobile(id)
|
102
|
+
Request.new(card_args).send_data_for(:post, MOD, __method__.to_s) do |data|
|
103
|
+
data.oper('cmt')
|
104
|
+
data.wait('0')
|
105
|
+
data.test('0')
|
106
|
+
data.payment do
|
107
|
+
data.prop(name: 'id', value: id)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
def send_sms(phone_from, phone_to, message)
|
113
|
+
Request.new(card_args).send_data_for(:post, MOD, __method__.to_s) do |data|
|
114
|
+
data.oper('cmt')
|
115
|
+
data.wait('0')
|
116
|
+
data.test('0')
|
117
|
+
data.payment(id: '') do
|
118
|
+
data.prop(name: 'phone', value: phone_from)
|
119
|
+
data.prop(name: 'phoneto', value: phone_to)
|
120
|
+
data.prop(name: 'text', value: message)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
@@ -12,7 +12,7 @@ module Privat24Api
|
|
12
12
|
@merchant_password = card_args[:merchant_password]
|
13
13
|
end
|
14
14
|
|
15
|
-
def send_data_for(mod, met)
|
15
|
+
def send_data_for(type, mod, met, url_attr=nil)
|
16
16
|
builder = Nokogiri::XML::DocumentFragment.parse ""
|
17
17
|
Nokogiri::XML::Builder.with(builder) do |xml|
|
18
18
|
yield xml
|
@@ -20,23 +20,24 @@ module Privat24Api
|
|
20
20
|
|
21
21
|
@data_value = builder.to_xml
|
22
22
|
|
23
|
-
Response.new( send(mod, met) )
|
23
|
+
Response.new( send(type, mod, met, url_attr) )
|
24
24
|
end
|
25
25
|
|
26
26
|
private
|
27
27
|
|
28
|
-
def send(mod, met)
|
29
|
-
|
30
|
-
|
31
|
-
unescape_xml(make_xml),
|
32
|
-
content_type: 'text/xml'
|
33
|
-
).body
|
28
|
+
def send(type, mod, met, url_attr)
|
29
|
+
url = url_attr ? make_url(url_attr) : default_url(mod, met)
|
30
|
+
RestClient.method(type).call(url, unescape_xml(make_xml), {content_type: 'text/xml'}).body
|
34
31
|
end
|
35
32
|
|
36
|
-
def
|
33
|
+
def default_url(mod, met)
|
37
34
|
"#{Privat24Api.base_url}#{Privat24Api.end_points[mod][met]}"
|
38
35
|
end
|
39
36
|
|
37
|
+
def make_url(url_attr)
|
38
|
+
"#{Privat24Api.base_url}#{Privat24Api.end_points[mod][met] << url_attr}"
|
39
|
+
end
|
40
|
+
|
40
41
|
def unescape_xml(xml)
|
41
42
|
CGI::unescapeHTML(xml)
|
42
43
|
end
|
data/lib/privat24_api/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: privat24_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- woodcrust
|
@@ -78,6 +78,7 @@ files:
|
|
78
78
|
- lib/privat24_api/configure.rb
|
79
79
|
- lib/privat24_api/request/info/info_request.rb
|
80
80
|
- lib/privat24_api/request/payment/payment_request.rb
|
81
|
+
- lib/privat24_api/request/public/public_request.rb
|
81
82
|
- lib/privat24_api/request/request.rb
|
82
83
|
- lib/privat24_api/response/response.rb
|
83
84
|
- lib/privat24_api/version.rb
|