razorpay 2.0.1 → 2.1.0.pre

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0c5e4a481b2e5c76f95a1b57784911d2c597a692
4
- data.tar.gz: 11d9f4211bc2a291a43ddac976d562e16410907d
3
+ metadata.gz: b464a4ac1b55d618bb1af484eba8f9cb07fb8ae7
4
+ data.tar.gz: 8e2d8c5f6c9abd7f08bf7beee1c643fa86b10e64
5
5
  SHA512:
6
- metadata.gz: 75d442e5f84558f8dd223410450efe0c0e59ab9581c5418c24506332cf13e3df22c1ea4fc0a0322aa39ff87129564b2ef941fca1b00ed23316a7f3d3999b02e4
7
- data.tar.gz: 7dbb7b5703a9fb06f7f0b4ddc4525a0223f337aba26e2d6318de28cdb024c831ca795af4090cd4f6f0ee14b7ccd5b2f9f8ef596d345afc2ffa5681c448e98b1d
6
+ metadata.gz: 10acefb42404585616e9f17092c1f85da4f5cea75b9e83d3f453b9c35dfbca7c77307da27e04edc7b9020da51d72465c0ff7702b0018b174e0beb6ad9e8bd640
7
+ data.tar.gz: 765e74db5ff99dd15b4f1c078497f1e6532bbe3e96b723c6bb967b3b8d554cefb4c30f9ecdf3e627a652b293ca0d5c137c95b45da4a22a1164efaa91fda58e68
data/CHANGELOG CHANGED
@@ -4,6 +4,10 @@ Changelog for Razorpay-Ruby SDK.
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ ## [2.1.0.pre] - 2017-08-17
8
+ ### Added
9
+ - Support for Virtual Accounts
10
+
7
11
  ## [2.0.1] - 2017-07-31
8
12
  ### Fixed
9
13
  - Webhook signature verification
@@ -50,7 +54,8 @@ Changelog for Razorpay-Ruby SDK.
50
54
  ### Added
51
55
  - Initial Release
52
56
 
53
- [Unreleased]: https://github.com/razorpay/razorpay-ruby/compare/2.0.1...HEAD
57
+ [Unreleased]: https://github.com/razorpay/razorpay-ruby/compare/2.1.0.pre...HEAD
58
+ [2.1.0.pre]: https://github.com/razorpay/razorpay-ruby/compare/2.0.1...2.1.0.pre
54
59
  [2.0.1]: https://github.com/razorpay/razorpay-ruby/compare/2.0.0...2.0.1
55
60
  [2.0.0]: https://github.com/razorpay/razorpay-ruby/compare/1.2.1...2.0.0
56
61
  [1.2.1]: https://github.com/razorpay/razorpay-ruby/compare/1.2.0...1.2.1
data/Rakefile CHANGED
@@ -16,7 +16,7 @@ task :rubocop do
16
16
  end
17
17
 
18
18
  FileList['test/razorpay/test_*.rb'].each do |file|
19
- group = File.basename(file, '.rb').split('_').last.to_sym
19
+ group = File.basename(file, '.rb').split('_').drop(1).join('_').to_sym
20
20
  Rake::TestTask.new(group) do |t|
21
21
  t.libs << 'test'
22
22
  t.test_files = [file]
@@ -8,6 +8,7 @@ require 'razorpay/utility'
8
8
  require 'razorpay/customer'
9
9
  require 'razorpay/constants'
10
10
  require 'razorpay/collection'
11
+ require 'razorpay/virtual_account'
11
12
 
12
13
  # Base Razorpay module
13
14
  module Razorpay
@@ -2,5 +2,5 @@
2
2
  module Razorpay
3
3
  BASE_URI = 'https://api.razorpay.com/v1/'.freeze
4
4
  TEST_URL = 'https://api.razorpay.com/'.freeze
5
- VERSION = '2.0.1'.freeze
5
+ VERSION = '2.1.0.pre'.freeze
6
6
  end
@@ -38,5 +38,9 @@ module Razorpay
38
38
  def method
39
39
  method_missing(:method)
40
40
  end
41
+
42
+ def bank_transfer
43
+ self.class.request.get "#{id}/bank_transfer"
44
+ end
41
45
  end
42
46
  end
@@ -46,6 +46,10 @@ module Razorpay
46
46
  request :put, "/#{@entity_name}/#{id}", data
47
47
  end
48
48
 
49
+ def patch(id, data = {})
50
+ request :patch, "/#{@entity_name}/#{id}", data
51
+ end
52
+
49
53
  def create(data)
50
54
  request :post, "/#{@entity_name}", data
51
55
  end
@@ -54,9 +58,7 @@ module Razorpay
54
58
  case method
55
59
  when :get
56
60
  @options[:query] = data
57
- when :post
58
- @options[:body] = data
59
- when :put
61
+ when :post, :put, :patch
60
62
  @options[:body] = data
61
63
  end
62
64
  create_instance self.class.send(method, url, @options)
@@ -77,8 +79,9 @@ module Razorpay
77
79
 
78
80
  # There must be a top level entity
79
81
  # This is either one of payment, refund, or collection at present
80
- class_name = response['entity'].capitalize
81
82
  begin
83
+ class_name = response['entity'].split('_').collect(&:capitalize).join
84
+
82
85
  klass = Razorpay.const_get class_name
83
86
  rescue NameError
84
87
  # Use Entity class if we don't find any
@@ -0,0 +1,33 @@
1
+ require 'razorpay/request'
2
+ require 'razorpay/entity'
3
+
4
+ module Razorpay
5
+ # Virtual Account API allows you to create and
6
+ # manage virtual accounts with Razorpay
7
+ class VirtualAccount < Entity
8
+ def self.request
9
+ Razorpay::Request.new('virtual_accounts')
10
+ end
11
+
12
+ def self.create(options)
13
+ request.create options
14
+ end
15
+
16
+ def self.fetch(id)
17
+ request.fetch id
18
+ end
19
+
20
+ def self.all(options = {})
21
+ request.all options
22
+ end
23
+
24
+ def self.close(id)
25
+ request.patch id, status: 'closed'
26
+ end
27
+
28
+ def payments(options = {})
29
+ r = self.class.request
30
+ r.request :get, "/virtual_accounts/#{id}/payments", options
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,12 @@
1
+ {
2
+ "payment_id" : "fake_payment_id",
3
+ "virtual_account_id" : "va_4xbQrmEoA5WJ0G",
4
+ "amount" : 900,
5
+ "payer_bank_account" : {
6
+ "id" : "ba_8JpVEbAkzgjtuB",
7
+ "entity" : "bank_account",
8
+ "account_number" : "765432123456789",
9
+ "ifsc" : "RAZR0000001",
10
+ "name" : "Merchant Billing Label"
11
+ }
12
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "id": "va_4xbQrmEoA5WJ0G",
3
+ "entity": "virtual_account",
4
+ "description": "First Virtual Account",
5
+ "customer_id": "cust_805c8oBQdBGPwS",
6
+ "status": "active",
7
+ "amount_paid": 0,
8
+ "notes": {
9
+ "reference_key": "reference_value"
10
+ },
11
+ "receivers": [
12
+ {
13
+ "id": "ba_4lsdkfldlteskf",
14
+ "entity": "bank_account",
15
+ "name": "Merchant Billing Label",
16
+ "account_number": "RAZORPAY9876543210",
17
+ "ifsc": "RZPB0000001"
18
+ }
19
+ ],
20
+ "created_at": 1455696638
21
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "id": "va_4xbQrmEoA5WJ0G",
3
+ "entity": "virtual_account",
4
+ "description": "First Virtual Account",
5
+ "customer_id": "cust_805c8oBQdBGPwS",
6
+ "status": "closed",
7
+ "amount_paid": 900,
8
+ "notes": {
9
+ "reference_key": "reference_value"
10
+ },
11
+ "receivers": [
12
+ {
13
+ "id": "ba_4lsdkfldlteskf",
14
+ "entity": "bank_account",
15
+ "name": "Merchant Billing Label",
16
+ "account_number": "RAZORPAY9876543210",
17
+ "ifsc": "RZPB0000001"
18
+ }
19
+ ],
20
+ "created_at": 1455696638
21
+ }
@@ -0,0 +1,48 @@
1
+ {
2
+ "entity": "collection",
3
+ "count": 2,
4
+ "items": [
5
+ {
6
+ "id": "va_84lyVss1CRZ6eM",
7
+ "entity": "virtual_account",
8
+ "name": "Merchant Billing Label",
9
+ "description": "Second Virtual Account",
10
+ "status": "active",
11
+ "amount_paid": 1200,
12
+ "notes": [],
13
+ "customer_id": null,
14
+ "receivers": [
15
+ {
16
+ "id": "ba_87txVas2oSzzvx",
17
+ "entity": "bank_account",
18
+ "name": "Merchant Billing Label",
19
+ "account_number": "RAZORPAY9KWHB7BL92",
20
+ "ifsc": "RZPB0000001"
21
+ }
22
+ ],
23
+ "created_at": 1497873405
24
+ },
25
+ {
26
+ "id": "va_4xbQrmEoA5WJ0G",
27
+ "entity": "virtual_account",
28
+ "name": "Merchant Billing Label",
29
+ "description": "First Virtual Account",
30
+ "status": "active",
31
+ "amount_paid": 900,
32
+ "notes": {
33
+ "reference_key": "reference_value"
34
+ },
35
+ "receivers": [
36
+ {
37
+ "id": "ba_4lsdkfldlteskf",
38
+ "entity": "bank_account",
39
+ "name": "Merchant Billing Label",
40
+ "account_number": "RAZORPAY9876543210",
41
+ "ifsc": "RZPB0000001"
42
+ }
43
+ ],
44
+ "customer_id": "cust_805c8oBQdBGPwS",
45
+ "created_at": 1497922042
46
+ }
47
+ ]
48
+ }
@@ -0,0 +1,72 @@
1
+ require 'test_helper'
2
+
3
+ module Razorpay
4
+ # Tests for Razorpay::VirtualAccount
5
+ class RazorpayVirtualAccountTest < Minitest::Test
6
+ def setup
7
+ @virtual_account_id = 'va_4xbQrmEoA5WJ0G'
8
+
9
+ @virtual_account_create_array = {
10
+ receiver_types: ['bank_account'],
11
+ description: 'First Virtual Account'
12
+ }
13
+
14
+ # Any request that ends with virtual_accounts/id
15
+ stub_get(%r{virtual_accounts/#{@virtual_account_id}$}, 'fake_virtual_account')
16
+ stub_get(/virtual_accounts$/, 'fake_virtual_account_collection')
17
+ end
18
+
19
+ def test_virtual_account_should_be_defined
20
+ refute_nil Razorpay::VirtualAccount
21
+ end
22
+
23
+ def test_virtual_account_should_be_created
24
+ stub_post(
25
+ /virtual_accounts$/,
26
+ 'fake_virtual_account',
27
+ 'receiver_types[]=bank_account&description=First%20Virtual%20Account'
28
+ )
29
+
30
+ virtual_account = Razorpay::VirtualAccount.create @virtual_account_create_array
31
+ assert_equal 'First Virtual Account', virtual_account.description
32
+ assert_equal 'active', virtual_account.status
33
+ refute_empty virtual_account.receivers
34
+
35
+ receiver = virtual_account.receivers.first
36
+ assert_includes receiver.keys, 'account_number'
37
+ end
38
+
39
+ def test_close_virtual_account
40
+ stub_patch(%r{virtual_accounts/#{@virtual_account_id}$}, 'fake_virtual_account_closed', 'status=closed')
41
+ virtual_account = Razorpay::VirtualAccount.close(@virtual_account_id)
42
+ assert_instance_of Razorpay::VirtualAccount, virtual_account
43
+ assert_equal 'closed', virtual_account.status
44
+ end
45
+
46
+ def test_fetch_all_virtual_accounts
47
+ virtual_accounts = Razorpay::VirtualAccount.all
48
+ assert_instance_of Razorpay::Collection, virtual_accounts
49
+ end
50
+
51
+ def test_fetch_specific_virtual_account
52
+ virtual_account = Razorpay::VirtualAccount.fetch(@virtual_account_id)
53
+ assert_instance_of Razorpay::VirtualAccount, virtual_account
54
+ assert_equal @virtual_account_id, virtual_account.id
55
+ end
56
+
57
+ def test_fetch_payment_bank_transfer
58
+ stub_get(%r{payments/fake_payment_id$$}, 'fake_payment')
59
+ stub_get(%r{payments/fake_payment_id/bank_transfer$}, 'fake_payment_bank_transfer')
60
+ bank_transfer = Razorpay::Payment.fetch('fake_payment_id').bank_transfer
61
+ assert_equal @virtual_account_id, bank_transfer.virtual_account_id
62
+ assert_equal 'fake_payment_id', bank_transfer.payment_id
63
+ end
64
+
65
+ def test_fetch_virtual_account_payments
66
+ stub_get(/payments$/, 'payment_collection')
67
+ payments = Razorpay::VirtualAccount.fetch(@virtual_account_id).payments
68
+ assert_instance_of Razorpay::Collection, payments, 'Payments should be an array'
69
+ assert !payments.items.empty?, 'Payments should be more than one'
70
+ end
71
+ end
72
+ end
@@ -25,17 +25,21 @@ def stub_get(*args)
25
25
  end
26
26
 
27
27
  def stub_post(*args)
28
- # The last argument is post data
29
- data = args.pop
30
- response = stub_response(*args)
31
- url = args[0]
32
- stub_request(:post, url).with(body: data).to_return(response)
28
+ stub_request_with_body(:post, *args)
33
29
  end
34
30
 
35
31
  def stub_put(*args)
36
- # The last argument is put data
32
+ stub_request_with_body(:put, *args)
33
+ end
34
+
35
+ def stub_patch(*args)
36
+ stub_request_with_body(:patch, *args)
37
+ end
38
+
39
+ def stub_request_with_body(verb, *args)
40
+ # The last argument is the data
37
41
  data = args.pop
38
42
  response = stub_response(*args)
39
43
  url = args[0]
40
- stub_request(:put, url).with(body: data).to_return(response)
44
+ stub_request(verb, url).with(body: data).to_return(response)
41
45
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: razorpay
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.1.0.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Abhay Rana
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-07-31 00:00:00.000000000 Z
12
+ date: 2017-08-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -131,6 +131,7 @@ files:
131
131
  - lib/razorpay/refund.rb
132
132
  - lib/razorpay/request.rb
133
133
  - lib/razorpay/utility.rb
134
+ - lib/razorpay/virtual_account.rb
134
135
  - razorpay-ruby.gemspec
135
136
  - test/fixtures/bad_request_error.json
136
137
  - test/fixtures/customer_collection.json
@@ -142,7 +143,11 @@ files:
142
143
  - test/fixtures/fake_order.json
143
144
  - test/fixtures/fake_payment.json
144
145
  - test/fixtures/fake_payment_authorized_webhook.json
146
+ - test/fixtures/fake_payment_bank_transfer.json
145
147
  - test/fixtures/fake_refund.json
148
+ - test/fixtures/fake_virtual_account.json
149
+ - test/fixtures/fake_virtual_account_closed.json
150
+ - test/fixtures/fake_virtual_account_collection.json
146
151
  - test/fixtures/hello_response.json
147
152
  - test/fixtures/invoice_collection.json
148
153
  - test/fixtures/order_collection.json
@@ -161,6 +166,7 @@ files:
161
166
  - test/razorpay/test_razorpay.rb
162
167
  - test/razorpay/test_refund.rb
163
168
  - test/razorpay/test_utility.rb
169
+ - test/razorpay/test_virtual_account.rb
164
170
  - test/test_helper.rb
165
171
  homepage: https://razorpay.com/
166
172
  licenses:
@@ -177,12 +183,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
177
183
  version: '0'
178
184
  required_rubygems_version: !ruby/object:Gem::Requirement
179
185
  requirements:
180
- - - ">="
186
+ - - ">"
181
187
  - !ruby/object:Gem::Version
182
- version: '0'
188
+ version: 1.3.1
183
189
  requirements: []
184
190
  rubyforge_project:
185
- rubygems_version: 2.5.1
191
+ rubygems_version: 2.6.12
186
192
  signing_key:
187
193
  specification_version: 4
188
194
  summary: Razorpay's Ruby API
@@ -197,7 +203,11 @@ test_files:
197
203
  - test/fixtures/fake_order.json
198
204
  - test/fixtures/fake_payment.json
199
205
  - test/fixtures/fake_payment_authorized_webhook.json
206
+ - test/fixtures/fake_payment_bank_transfer.json
200
207
  - test/fixtures/fake_refund.json
208
+ - test/fixtures/fake_virtual_account.json
209
+ - test/fixtures/fake_virtual_account_closed.json
210
+ - test/fixtures/fake_virtual_account_collection.json
201
211
  - test/fixtures/hello_response.json
202
212
  - test/fixtures/invoice_collection.json
203
213
  - test/fixtures/order_collection.json
@@ -216,4 +226,5 @@ test_files:
216
226
  - test/razorpay/test_razorpay.rb
217
227
  - test/razorpay/test_refund.rb
218
228
  - test/razorpay/test_utility.rb
229
+ - test/razorpay/test_virtual_account.rb
219
230
  - test/test_helper.rb