razorpay 1.0.3 → 1.1.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.
@@ -1,5 +1,6 @@
1
1
  # Version and other constants are defined here
2
2
  module Razorpay
3
- BASE_URI = 'https://api.razorpay.com/v1/'
4
- VERSION = '1.0.3'
3
+ BASE_URI = 'https://api.razorpay.com/v1/'.freeze
4
+ TEST_URL = 'https://api.razorpay.com/'.freeze
5
+ VERSION = '1.1.0'.freeze
5
6
  end
@@ -14,11 +14,8 @@ module Razorpay
14
14
  # instance variables
15
15
  def method_missing(name)
16
16
  name = name.to_s
17
- if @attributes.key?(name)
18
- @attributes[name]
19
- else
20
- fail NameError, "No such data member: #{name}"
21
- end
17
+ raise NameError, "No such data member: #{name}" unless @attributes.key? name
18
+ @attributes[name]
22
19
  end
23
20
 
24
21
  # Public: Convert the Entity object to JSON
@@ -0,0 +1,32 @@
1
+ require 'razorpay/request'
2
+ require 'razorpay/entity'
3
+
4
+ module Razorpay
5
+ # Order API is currently in beta and allows you to
6
+ # associate Payments with an order entity
7
+ class Order < Entity
8
+ def self.request
9
+ Razorpay::Request.new('orders')
10
+ end
11
+
12
+ def self.create(options)
13
+ raise ArgumentError, 'Please provide order amount' unless options.key?(:amount)
14
+ raise ArgumentError, 'Please provide order currency' unless options.key?(:currency)
15
+ raise ArgumentError, 'Please provide order receipt' unless options.key?(:receipt)
16
+ request.create options
17
+ end
18
+
19
+ def self.fetch(id)
20
+ request.fetch id
21
+ end
22
+
23
+ def self.all(options = {})
24
+ request.all options
25
+ end
26
+
27
+ def payments(options = {})
28
+ r = self.class.request
29
+ r.request :get, "/orders/#{id}/payments", options
30
+ end
31
+ end
32
+ end
@@ -29,7 +29,7 @@ module Razorpay
29
29
  end
30
30
 
31
31
  def capture(options)
32
- fail ArgumentError, 'Please provide capture amount' unless options.key?(:amount)
32
+ raise ArgumentError, 'Please provide capture amount' unless options.key?(:amount)
33
33
  self.class.request.post "#{id}/capture", options
34
34
  end
35
35
  end
@@ -8,9 +8,18 @@ module Razorpay
8
8
  class Request
9
9
  include HTTParty
10
10
 
11
+ ssl_ca_file File.dirname(__FILE__) + '/../ca-bundle.crt'
12
+
11
13
  def initialize(entity_name)
12
14
  self.class.base_uri(Razorpay::BASE_URI)
13
15
  @entity_name = entity_name
16
+ @options = {
17
+ basic_auth: Razorpay.auth,
18
+ timeout: 30,
19
+ headers: {
20
+ 'User-Agent' => "Razorpay-Ruby/#{Razorpay::VERSION}"
21
+ }
22
+ }
14
23
  end
15
24
 
16
25
  def fetch(id)
@@ -25,13 +34,23 @@ module Razorpay
25
34
  request :post, "/#{@entity_name}/#{url}", data
26
35
  end
27
36
 
37
+ def create(data)
38
+ request :post, "/#{@entity_name}", data
39
+ end
40
+
28
41
  def request(method, url, data = {})
29
42
  case method
30
43
  when :get
31
- create_instance self.class.send(method, url, query: data, basic_auth: Razorpay.auth)
44
+ @options[:query] = data
32
45
  when :post
33
- create_instance self.class.send(method, url, body: data, basic_auth: Razorpay.auth)
46
+ @options[:body] = data
34
47
  end
48
+ create_instance self.class.send(method, url, @options)
49
+ end
50
+
51
+ # Since we need to change the base route
52
+ def make_test_request
53
+ self.class.get Razorpay::TEST_URL, @options
35
54
  end
36
55
 
37
56
  # Recursively builds entity instances
@@ -67,7 +86,7 @@ module Razorpay
67
86
  rescue NameError
68
87
  Razorpay::Error
69
88
  end
70
- fail klass.new(*args), error['description']
89
+ raise klass.new(*args), error['description']
71
90
  end
72
91
  end
73
92
  end
@@ -18,10 +18,9 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(/^(test|spec|features)/)
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_development_dependency 'bundler', '~> 1.6'
22
- spec.add_development_dependency 'rake', '~> 10.4'
23
- spec.add_development_dependency 'minitest', '~> 5.5'
24
- spec.add_development_dependency 'webmock', '~> 1.20'
25
- spec.add_development_dependency 'simplecov', '~> 0.9'
21
+ spec.add_development_dependency 'rake', '~> 10.5'
22
+ spec.add_development_dependency 'minitest', '~> 5.8'
23
+ spec.add_development_dependency 'webmock', '~> 1.24'
24
+ spec.add_development_dependency 'simplecov', '~> 0.11'
26
25
  spec.add_dependency 'httparty', '~> 0.13'
27
26
  end
@@ -0,0 +1,10 @@
1
+ {
2
+ "id": "order_50sX9hGHZJvjjI",
3
+ "entity": "order",
4
+ "amount": 5000,
5
+ "currency": "INR",
6
+ "receipt": "TEST",
7
+ "status": "attempted",
8
+ "attempts": 1,
9
+ "created_at": 1456411883
10
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "message": "Welcome to Razorpay API."
3
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "entity": "collection",
3
+ "count": 3,
4
+ "items": [
5
+ {
6
+ "id": "order_50snfRNtuFmFBZ",
7
+ "entity": "order",
8
+ "amount": 5000,
9
+ "currency": "INR",
10
+ "receipt": "TEST",
11
+ "status": "created",
12
+ "attempts": 0,
13
+ "created_at": 1456412821
14
+ },
15
+ {
16
+ "id": "order_50snJlH2AMYOYK",
17
+ "entity": "order",
18
+ "amount": 5000,
19
+ "currency": "INR",
20
+ "receipt": "TEST",
21
+ "status": "created",
22
+ "attempts": 0,
23
+ "created_at": 1456412801
24
+ },
25
+ {
26
+ "id": "order_50smJrkZ4Qb0HJ",
27
+ "entity": "order",
28
+ "amount": 5000,
29
+ "currency": "INR",
30
+ "receipt": "TEST",
31
+ "status": "created",
32
+ "attempts": 0,
33
+ "created_at": 1456412744
34
+ }
35
+ ]
36
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "entity": "collection",
3
+ "count": 1,
4
+ "items": [
5
+ {
6
+ "id": "pay_50sbkZA9AcyE5a",
7
+ "entity": "payment",
8
+ "amount": 5000,
9
+ "currency": "INR",
10
+ "status": "authorized",
11
+ "method": "card",
12
+ "emi_plan_id": null,
13
+ "amount_refunded": 0,
14
+ "refund_status": null,
15
+ "captured": false,
16
+ "description": null,
17
+ "email": "test@razorpay.com",
18
+ "contact": "1234567890",
19
+ "notes": {
20
+ "order_id": "3453"
21
+ },
22
+ "fee": 0,
23
+ "service_tax": 0,
24
+ "error_code": null,
25
+ "error_description": null,
26
+ "created_at": 1456412144
27
+ }
28
+ ]
29
+ }
@@ -7,7 +7,7 @@ module Razorpay
7
7
  class ErrorTest < Minitest::Test
8
8
  def setup
9
9
  @payment_id = 'fake_payment_id'
10
- stub_get(/payments\/#{Regexp.quote(@payment_id)}$/, 'fake_payment')
10
+ stub_get(%r{payments\/#{Regexp.quote(@payment_id)}$}, 'fake_payment')
11
11
  end
12
12
 
13
13
  def test_bad_request_error
@@ -0,0 +1,50 @@
1
+ require 'test_helper'
2
+ require 'razorpay/order'
3
+ require 'razorpay/collection'
4
+
5
+ module Razorpay
6
+ # Tests for Razorpay::Order
7
+ class RazorpayOrderTest < Minitest::Test
8
+ def setup
9
+ @order_id = 'order_50sX9hGHZJvjjI'
10
+
11
+ # Any request that ends with orders/order_id
12
+ stub_get(%r{orders/#{@order_id}$}, 'fake_order')
13
+ end
14
+
15
+ def test_order_should_be_defined
16
+ refute_nil Razorpay::Order
17
+ end
18
+
19
+ def test_order_should_be_created
20
+ stub_post(/orders$/, 'fake_order', 'amount=5000&currency=INR&receipt=TEST')
21
+ order = Razorpay::Order.create amount: 5000, currency: 'INR', receipt: 'TEST'
22
+
23
+ assert_equal 5000, order.amount
24
+ assert_equal 'INR', order.currency
25
+ assert_equal 'TEST', order.receipt
26
+ end
27
+
28
+ def test_orders_should_be_fetched
29
+ order = Razorpay::Order.fetch(@order_id)
30
+ assert_instance_of Razorpay::Order, order, 'order not an instance of Razorpay::Order class'
31
+ assert_equal @order_id, order.id, 'order IDs do not match'
32
+ end
33
+
34
+ def test_fetching_all_orders
35
+ stub_get(/orders$/, 'order_collection')
36
+ orders = Razorpay::Order.all
37
+ assert_instance_of Razorpay::Collection, orders, 'Orders should be an array'
38
+ assert !orders.items.empty?, 'orders should be more than one'
39
+ end
40
+
41
+ def test_order_payments_should_be_fetched
42
+ stub_get(%r{orders/#{@order_id}/payments$}, 'order_payments')
43
+
44
+ payments = Razorpay::Order.fetch(@order_id).payments
45
+ assert_instance_of Razorpay::Collection, payments, 'Payments should be an array'
46
+ assert !payments.items.empty?, 'payments should be more than one'
47
+ assert_equal 'pay_50sbkZA9AcyE5a', payments.items[0]['id'], 'payment id should match'
48
+ end
49
+ end
50
+ end
@@ -9,7 +9,7 @@ module Razorpay
9
9
  @payment_id = 'fake_payment_id'
10
10
 
11
11
  # Any request that ends with payments/payment_id
12
- stub_get(/payments\/#{Regexp.quote(@payment_id)}$/, 'fake_payment')
12
+ stub_get(%r{payments\/#{Regexp.quote(@payment_id)}$}, 'fake_payment')
13
13
  stub_get(/payments$/, 'payment_collection')
14
14
  end
15
15
 
@@ -26,7 +26,7 @@ module Razorpay
26
26
  def test_all_payments
27
27
  payments = Razorpay::Payment.all
28
28
  assert_instance_of Razorpay::Collection, payments, 'Payments should be an array'
29
- assert payments.items.size > 0, 'Payments should be more than one'
29
+ assert !payments.items.empty?, 'Payments should be more than one'
30
30
  end
31
31
 
32
32
  def test_all_payments_with_options
@@ -1,5 +1,7 @@
1
1
  require 'test_helper'
2
2
  require 'razorpay'
3
+ require 'webmock'
4
+ require 'test_helper'
3
5
 
4
6
  module Razorpay
5
7
  # Tests for Razorpay
@@ -16,5 +18,24 @@ module Razorpay
16
18
  auth = { username: 'key_id', password: 'key_secret' }
17
19
  assert_equal auth, Razorpay.auth
18
20
  end
21
+
22
+ # We make a request to the / endpoint to test SSL support
23
+ def test_sample_request
24
+ WebMock.allow_net_connect!
25
+ req = Razorpay::Request.new('dummy')
26
+ response = req.make_test_request.parsed_response
27
+ assert_equal 'Welcome to Razorpay API.', response['message']
28
+ WebMock.disable_net_connect!
29
+ end
30
+
31
+ # We mock this request
32
+ def test_auth_header_and_user_agent
33
+ stub_get(/$/, 'hello_response')
34
+ Razorpay::Request.new('dummy').make_test_request
35
+ user_agent = "Razorpay-Ruby/#{Razorpay::VERSION}"
36
+ assert_requested :get, 'https://key_id:key_secret@api.razorpay.com/',
37
+ headers: { 'User-Agent' => user_agent },
38
+ times: 1
39
+ end
19
40
  end
20
41
  end
@@ -7,7 +7,7 @@ module Razorpay
7
7
  class RazorpayRefundTest < Minitest::Test
8
8
  def setup
9
9
  @payment_id = 'fake_payment_id'
10
- stub_get(/payments\/#{Regexp.quote(@payment_id)}$/, 'fake_payment')
10
+ stub_get(%r{payments\/#{Regexp.quote(@payment_id)}$}, 'fake_payment')
11
11
  end
12
12
 
13
13
  def test_refund_should_be_defined
@@ -15,7 +15,7 @@ module Razorpay
15
15
  end
16
16
 
17
17
  def test_fetch_all_refunds
18
- stub_get(%r{/payments/#{@payment_id}/refunds$}, 'refund_collection')
18
+ stub_get(%r{payments/#{@payment_id}/refunds$}, 'refund_collection')
19
19
  refunds = Razorpay::Payment.fetch(@payment_id).refunds.all
20
20
  assert_instance_of Razorpay::Collection, refunds
21
21
  end
data/test/test_helper.rb CHANGED
@@ -10,7 +10,7 @@ end
10
10
 
11
11
  def stub_response(_url, filename, status = nil)
12
12
  response = { body: fixture_file(filename) }
13
- response.merge!(status: status) unless status.nil?
13
+ response[:status] = status unless status.nil?
14
14
  response.merge!(headers: { 'Content-Type' => 'application/json' })
15
15
  end
16
16
 
metadata CHANGED
@@ -1,97 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: razorpay
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Abhay Rana
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-31 00:00:00.000000000 Z
11
+ date: 2016-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ~>
18
- - !ruby/object:Gem::Version
19
- version: '1.6'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ~>
25
- - !ruby/object:Gem::Version
26
- version: '1.6'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: rake
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
- - - ~>
17
+ - - "~>"
32
18
  - !ruby/object:Gem::Version
33
- version: '10.4'
19
+ version: '10.5'
34
20
  type: :development
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
- - - ~>
24
+ - - "~>"
39
25
  - !ruby/object:Gem::Version
40
- version: '10.4'
26
+ version: '10.5'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: minitest
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
- - - ~>
31
+ - - "~>"
46
32
  - !ruby/object:Gem::Version
47
- version: '5.5'
33
+ version: '5.8'
48
34
  type: :development
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
- - - ~>
38
+ - - "~>"
53
39
  - !ruby/object:Gem::Version
54
- version: '5.5'
40
+ version: '5.8'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: webmock
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
- - - ~>
45
+ - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: '1.20'
47
+ version: '1.24'
62
48
  type: :development
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
- - - ~>
52
+ - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: '1.20'
54
+ version: '1.24'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: simplecov
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
- - - ~>
59
+ - - "~>"
74
60
  - !ruby/object:Gem::Version
75
- version: '0.9'
61
+ version: '0.11'
76
62
  type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
- - - ~>
66
+ - - "~>"
81
67
  - !ruby/object:Gem::Version
82
- version: '0.9'
68
+ version: '0.11'
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: httparty
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
- - - ~>
73
+ - - "~>"
88
74
  - !ruby/object:Gem::Version
89
75
  version: '0.13'
90
76
  type: :runtime
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
- - - ~>
80
+ - - "~>"
95
81
  - !ruby/object:Gem::Version
96
82
  version: '0.13'
97
83
  description: Official ruby bindings for the Razorpay API
@@ -101,15 +87,17 @@ executables: []
101
87
  extensions: []
102
88
  extra_rdoc_files: []
103
89
  files:
104
- - .editorconfig
105
- - .gitignore
106
- - .rubocop.yml
107
- - .simplecov
108
- - .travis.yml
90
+ - ".editorconfig"
91
+ - ".gitignore"
92
+ - ".rubocop.yml"
93
+ - ".simplecov"
94
+ - ".travis.yml"
95
+ - CHANGELOG
109
96
  - Gemfile
110
97
  - LICENSE.txt
111
98
  - README.md
112
99
  - Rakefile
100
+ - lib/ca-bundle.crt
113
101
  - lib/razorpay.rb
114
102
  - lib/razorpay/collection.rb
115
103
  - lib/razorpay/constants.rb
@@ -119,19 +107,25 @@ files:
119
107
  - lib/razorpay/errors/gateway_error.rb
120
108
  - lib/razorpay/errors/razorpay_error.rb
121
109
  - lib/razorpay/errors/server_error.rb
110
+ - lib/razorpay/order.rb
122
111
  - lib/razorpay/payment.rb
123
112
  - lib/razorpay/refund.rb
124
113
  - lib/razorpay/request.rb
125
114
  - razorpay-ruby.gemspec
126
115
  - test/fixtures/bad_request_error.json
127
116
  - test/fixtures/fake_captured_payment.json
117
+ - test/fixtures/fake_order.json
128
118
  - test/fixtures/fake_payment.json
129
119
  - test/fixtures/fake_refund.json
120
+ - test/fixtures/hello_response.json
121
+ - test/fixtures/order_collection.json
122
+ - test/fixtures/order_payments.json
130
123
  - test/fixtures/payment_collection.json
131
124
  - test/fixtures/payment_collection_with_one_payment.json
132
125
  - test/fixtures/refund_collection.json
133
126
  - test/razorpay/test_entity.rb
134
127
  - test/razorpay/test_errors.rb
128
+ - test/razorpay/test_order.rb
135
129
  - test/razorpay/test_payment.rb
136
130
  - test/razorpay/test_razorpay.rb
137
131
  - test/razorpay/test_refund.rb
@@ -146,32 +140,36 @@ require_paths:
146
140
  - lib
147
141
  required_ruby_version: !ruby/object:Gem::Requirement
148
142
  requirements:
149
- - - ! '>='
143
+ - - ">="
150
144
  - !ruby/object:Gem::Version
151
145
  version: '0'
152
146
  required_rubygems_version: !ruby/object:Gem::Requirement
153
147
  requirements:
154
- - - ! '>='
148
+ - - ">="
155
149
  - !ruby/object:Gem::Version
156
150
  version: '0'
157
151
  requirements: []
158
152
  rubyforge_project:
159
- rubygems_version: 2.2.2
153
+ rubygems_version: 2.4.8
160
154
  signing_key:
161
155
  specification_version: 4
162
156
  summary: Razorpay's Ruby API
163
157
  test_files:
164
158
  - test/fixtures/bad_request_error.json
165
159
  - test/fixtures/fake_captured_payment.json
160
+ - test/fixtures/fake_order.json
166
161
  - test/fixtures/fake_payment.json
167
162
  - test/fixtures/fake_refund.json
163
+ - test/fixtures/hello_response.json
164
+ - test/fixtures/order_collection.json
165
+ - test/fixtures/order_payments.json
168
166
  - test/fixtures/payment_collection.json
169
167
  - test/fixtures/payment_collection_with_one_payment.json
170
168
  - test/fixtures/refund_collection.json
171
169
  - test/razorpay/test_entity.rb
172
170
  - test/razorpay/test_errors.rb
171
+ - test/razorpay/test_order.rb
173
172
  - test/razorpay/test_payment.rb
174
173
  - test/razorpay/test_razorpay.rb
175
174
  - test/razorpay/test_refund.rb
176
175
  - test/test_helper.rb
177
- has_rdoc: