razorpay 2.0.1 → 2.1.0.pre

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
  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