yookassa 0.1.0 → 0.2.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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/main.yml +31 -0
  3. data/.rubocop.yml +16 -9
  4. data/Gemfile +10 -3
  5. data/Gemfile.lock +108 -69
  6. data/README.md +43 -14
  7. data/Rakefile +7 -1
  8. data/bin/console +13 -0
  9. data/bin/rake +29 -0
  10. data/bin/rspec +29 -0
  11. data/bin/rubocop +29 -0
  12. data/bin/setup +8 -0
  13. data/lib/yookassa/client.rb +44 -0
  14. data/lib/yookassa/config.rb +7 -0
  15. data/lib/yookassa/entity/amount.rb +5 -7
  16. data/lib/yookassa/entity/authorization_details.rb +28 -0
  17. data/lib/yookassa/entity/cancellation_details.rb +18 -0
  18. data/lib/yookassa/entity/card.rb +38 -11
  19. data/lib/yookassa/entity/confirmation.rb +7 -9
  20. data/lib/yookassa/entity/error.rb +19 -0
  21. data/lib/yookassa/entity/payment.rb +110 -14
  22. data/lib/yookassa/entity/payment_methods.rb +107 -0
  23. data/lib/yookassa/entity/recipient.rb +12 -0
  24. data/lib/yookassa/entity/refund.rb +11 -7
  25. data/lib/yookassa/entity/transfer.rb +33 -0
  26. data/lib/yookassa/entity/types.rb +9 -0
  27. data/lib/yookassa/payments.rb +35 -0
  28. data/lib/yookassa/refunds.rb +25 -0
  29. data/lib/yookassa/version.rb +1 -1
  30. data/lib/yookassa.rb +29 -11
  31. data/spec/fixtures/refund.json +4 -4
  32. data/spec/spec_helper.rb +3 -8
  33. data/spec/yookassa/config_spec.rb +7 -0
  34. data/spec/yookassa/payments_spec.rb +101 -0
  35. data/spec/yookassa/refunds_spec.rb +54 -0
  36. data/spec/yookassa_spec.rb +38 -1
  37. data/yookassa.gemspec +13 -18
  38. metadata +36 -82
  39. data/.circleci/config.yml +0 -28
  40. data/lib/yookassa/callable.rb +0 -10
  41. data/lib/yookassa/entity/payment_method.rb +0 -19
  42. data/lib/yookassa/error.rb +0 -30
  43. data/lib/yookassa/optional.rb +0 -23
  44. data/lib/yookassa/payment.rb +0 -65
  45. data/lib/yookassa/refund.rb +0 -35
  46. data/lib/yookassa/response.rb +0 -20
  47. data/spec/yookassa/payment_spec.rb +0 -104
  48. data/spec/yookassa/refund_spec.rb +0 -54
@@ -1,104 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe Yookassa::Payment do
4
- let(:settings) { { shop_id: 'SHOP_ID', api_key: 'API_KEY' } }
5
- let(:idempotency_key) { 12_345 }
6
- let(:payment) { described_class.new(settings) }
7
-
8
- shared_examples 'returns_payment_object' do
9
- it 'returns success' do
10
- expect(subject).to be_kind_of Yookassa::Response
11
- expect(subject.id).to eq '2490ded1-000f-5000-8000-1f64111bc63e'
12
- expect(subject.test).to eq true
13
- expect(subject.paid).to eq false
14
- expect(subject.status).to eq 'pending'
15
- expect(subject.captured_at).to eq nil
16
- expect(subject.created_at).to eq '2019-06-10T21:26:41.395Z'
17
- expect(subject.description).to eq nil
18
- expect(subject.expires_at).to eq nil
19
- expect(subject.metadata).to eq Hash[]
20
-
21
- expect(subject.amount).to be_kind_of Yookassa::Entity::Amount
22
- expect(subject.amount.currency).to eq 'RUB'
23
- expect(subject.amount.value).to eq 10.0
24
-
25
- expect(subject.confirmation).to be_kind_of Yookassa::Entity::Confirmation
26
- expect(subject.confirmation.confirmation_url).to eq 'https://money.yookassa.ru/payments/external/confirmation?orderId=2490ded1-000f-5000-8000-1f64111bc63e'
27
- expect(subject.confirmation.type).to eq 'redirect'
28
- expect(subject.confirmation.return_url).to eq 'https://url.test'
29
- expect(subject.confirmation.enforce).to eq nil
30
-
31
- expect(subject.payment_method).to be_kind_of Yookassa::Entity::PaymentMethod
32
- expect(subject.payment_method.card).to eq nil
33
- expect(subject.payment_method.id).to eq '2490ded1-000f-5000-8000-1f64111bc63e'
34
- expect(subject.payment_method.saved).to eq false
35
- expect(subject.payment_method.type).to eq 'bank_card'
36
- expect(subject.payment_method.title).to eq nil
37
- end
38
- end
39
-
40
- describe '#create' do
41
- let(:params) { { payment: File.read('spec/fixtures/payment.json') } }
42
- let(:url) { 'https://api.yookassa.ru/v3/payments' }
43
- let(:body) { File.read('spec/fixtures/payment_response.json') }
44
-
45
- before { stub_request(:any, //).to_return(body: body) }
46
- subject { payment.create(payment: params, idempotency_key: idempotency_key) }
47
-
48
- it 'sends a request' do
49
- subject
50
- expect(a_request(:post, url)).to have_been_made
51
- end
52
-
53
- it_behaves_like 'returns_payment_object'
54
- end
55
-
56
- describe '#get_payment_info' do
57
- let(:payment_id) { '2490ded1-000f-5000-8000-1f64111bc63e' }
58
- let(:url) { "https://api.yookassa.ru/v3/payments/#{payment_id}" }
59
- let(:body) { File.read('spec/fixtures/payment_response.json') }
60
-
61
- before { stub_request(:any, //).to_return(body: body) }
62
- subject { payment.get_payment_info(payment_id: payment_id) }
63
-
64
- it 'sends a request' do
65
- subject
66
- expect(a_request(:get, url)).to have_been_made
67
- end
68
-
69
- it_behaves_like 'returns_payment_object'
70
- end
71
-
72
- describe '#capture' do
73
- let(:payment_id) { '2490ded1-000f-5000-8000-1f64111bc63e' }
74
- let(:params) { { payment: File.read('spec/fixtures/payment.json') } }
75
- let(:url) { "https://api.yookassa.ru/v3/payments/#{payment_id}/capture" }
76
- let(:body) { File.read('spec/fixtures/payment_response.json') }
77
-
78
- before { stub_request(:any, //).to_return(body: body) }
79
- subject { payment.capture(payment_id: payment_id, idempotency_key: idempotency_key) }
80
-
81
- it 'sends a request' do
82
- subject
83
- expect(a_request(:post, url)).to have_been_made
84
- end
85
-
86
- it_behaves_like 'returns_payment_object'
87
- end
88
-
89
- describe '#cancel' do
90
- let(:payment_id) { '2490ded1-000f-5000-8000-1f64111bc63e' }
91
- let(:url) { "https://api.yookassa.ru/v3/payments/#{payment_id}/cancel" }
92
- let(:body) { File.read('spec/fixtures/payment_response.json') }
93
-
94
- before { stub_request(:any, //).to_return(body: body) }
95
- subject { payment.cancel(payment_id: payment_id, idempotency_key: idempotency_key) }
96
-
97
- it 'sends a request' do
98
- subject
99
- expect(a_request(:post, url)).to have_been_made
100
- end
101
-
102
- it_behaves_like 'returns_payment_object'
103
- end
104
- end
@@ -1,54 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe Yookassa::Refund do
4
- let(:settings) { { shop_id: 'SHOP_ID', api_key: 'API_KEY' } }
5
- let(:idempotency_key) { 12_345 }
6
- let(:payment) { described_class.new(settings) }
7
-
8
- shared_examples 'returns_refund_object' do
9
- it 'returns success' do
10
- expect(subject).to be_kind_of Yookassa::Response
11
- expect(subject.id).to eq '2491ab0c-0015-5000-9000-1640c7f1a6f0'
12
- expect(subject.payment_id).to eq '2491a6e2-000f-5000-9000-1480e820ae17'
13
- expect(subject.status).to eq 'succeeded'
14
- expect(subject.created_at).to eq '2019-06-11T11:58:04.502Z'
15
- expect(subject.description).to eq 'test refund, idem-key 78c95366-ec4b-4284-a0fd-41e694bcdf11'
16
-
17
- expect(subject.amount).to be_kind_of Yookassa::Entity::Amount
18
- expect(subject.amount.currency).to eq 'RUB'
19
- expect(subject.amount.value).to eq 8.0
20
- end
21
- end
22
-
23
- describe '#create' do
24
- let(:payload) { File.read('spec/fixtures/refund.json') }
25
- let(:url) { 'https://api.yookassa.ru/v3/refunds' }
26
- let(:body) { File.read('spec/fixtures/refund_response.json') }
27
-
28
- before { stub_request(:any, //).to_return(body: body) }
29
- subject { payment.create(payload: payload, idempotency_key: idempotency_key) }
30
-
31
- it 'sends a request' do
32
- subject
33
- expect(a_request(:post, url)).to have_been_made
34
- end
35
-
36
- it_behaves_like 'returns_refund_object'
37
- end
38
-
39
- describe '#get_refund_info' do
40
- let(:payment_id) { '2490ded1-000f-5000-8000-1f64111bc63e' }
41
- let(:url) { "https://api.yookassa.ru/v3/refunds/#{payment_id}" }
42
- let(:body) { File.read('spec/fixtures/refund_response.json') }
43
-
44
- before { stub_request(:any, //).to_return(body: body) }
45
- subject { payment.get_refund_info(payment_id: payment_id) }
46
-
47
- it 'sends a request' do
48
- subject
49
- expect(a_request(:get, url)).to have_been_made
50
- end
51
-
52
- it_behaves_like 'returns_refund_object'
53
- end
54
- end