razorpay 1.0.3 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: