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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 418190d53801181f5e75a728052b4e9769a7f38340557aa163d05f19e3a5a730
4
- data.tar.gz: a89326b9d19ab4e71186077144c0cc7d9be54bfab980ee77f6b1932401eacf34
3
+ metadata.gz: a56e4dd019db0597d3f7d57968e8c87ddaf8c8cc09369bcbd4382e2e8d3b0d88
4
+ data.tar.gz: fad096935ce7dd9922dc01cad036da1652f3a3258fa3acfdb9aa8ffdff094760
5
5
  SHA512:
6
- metadata.gz: 60be48e7c5966fc5858b79e19f4009b5f152e46aaf2b1ce45fc50c3ca8f0eb818fff15a65d38f6f32a89894ba0686b2768053b1715a09dfea9a48a34be4215b0
7
- data.tar.gz: c29f787e4f010be3f42f644423980e6eb365bf558f0220a9b35353a60de7dd9ec431b4271c868e8a2acf12b3106007b6414fbe24aa23dcff23c5ffb4d0e141a6
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, 'balance') do |data|
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(from, to)
25
- Request.new(card_args).send_data_for(MOD, 'transaction_details') do |data|
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', value: from)
31
- data.prop(name: 'ed', value: to)
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
- RestClient.post(
30
- make_url(mod, met),
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 make_url(mod, met)
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
@@ -1,3 +1,3 @@
1
1
  module Privat24Api
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3.0"
3
3
  end
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.2.1
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