securionpay 0.3.0 → 1.1.0

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
- SHA1:
3
- metadata.gz: 8efb02864e14b2e430e5183a7122952de8fd2ffb
4
- data.tar.gz: 3111073d727ff437b163740a2daa6d9543e187cc
2
+ SHA256:
3
+ metadata.gz: 94a230d639cd3a0ffcb455e7156a8d80fe4f549b8189ea87c23ee47c073decc8
4
+ data.tar.gz: 00eb8e9b2137f969212f1895d8d9dbc1245cfdbcd1e473729513a1e7d2434b8d
5
5
  SHA512:
6
- metadata.gz: 3bad028498a41308150ee66c0283d6e9c3cd187376d0582662c457218bdc79635101156c541816421d6d21819d32bae016f402635c7fc380bac7933b5db4ba96
7
- data.tar.gz: b440a4ac8ac93c7a67373cf80188a661c57a40f4aa64b4ac0a524f6d44dacd657f1b32bd896de2e7fcf02d69d701a35dcea2e22ded30c7a12cfa538ef44b7b85
6
+ metadata.gz: 6c8a45558c53a14073954cc42a32f5110af06f0969b3a56bd7698124d79a6dd3af63c2571ac8e6e8bc2ee80dc150529db388ec1b84d89027f03a113691e7494b
7
+ data.tar.gz: 517a4b484b3abcf558625d3c9bb07cf26f4c88b76d9fcf4f4d9f0458febb4742f7f287d712ddca64fe1fafee00cd4c0bb1baf3661609e363a83c5b214df8d39f
data/bin/console CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  #!/usr/bin/env ruby
2
4
 
3
5
  require "bundler/setup"
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ # Blacklist can be used to block unwanted charges.
5
+ class Blacklist
6
+ extend TransactionBase
7
+
8
+ def self.create(params)
9
+ communicator.post("#{Configuration.api_url}/blacklist", json: params)
10
+ end
11
+
12
+ def self.retrieve(blacklist_rule_id)
13
+ communicator.get("#{Configuration.api_url}/blacklist/#{blacklist_rule_id}")
14
+ end
15
+
16
+ def self.delete(blacklist_rule_id)
17
+ communicator.delete("#{Configuration.api_url}/blacklist/#{blacklist_rule_id}")
18
+ end
19
+
20
+ def self.list(params = nil)
21
+ communicator.get("#{Configuration.api_url}/blacklist", query: params)
22
+ end
23
+ end
24
+ end
@@ -1,45 +1,27 @@
1
- require 'securionpay/communicator'
2
- require 'securionpay/builders/path_builder'
1
+ # frozen_string_literal: true
3
2
 
4
3
  module SecurionPay
5
4
  class Cards
6
- class << self
7
- attr_accessor :communicator, :path_builder
8
- end
9
-
10
- @communicator = Communicator
11
- @path_builder = Builders::PathBuilder
5
+ extend TransactionBase
12
6
 
13
7
  def self.create(customer_id, params)
14
- communicator.post(
15
- path_builder.build_card_path(customer_id),
16
- params
17
- )
8
+ communicator.post("#{Configuration.api_url}/customers/#{customer_id}/cards", json: params)
18
9
  end
19
10
 
20
11
  def self.retrieve(customer_id, card_id)
21
- communicator.get(
22
- path_builder.build_card_path(customer_id, card_id)
23
- )
12
+ communicator.get("#{Configuration.api_url}/customers/#{customer_id}/cards/#{card_id}")
24
13
  end
25
14
 
26
15
  def self.update(customer_id, card_id, params)
27
- communicator.post(
28
- path_builder.build_card_path(customer_id, card_id),
29
- params
30
- )
16
+ communicator.post("#{Configuration.api_url}/customers/#{customer_id}/cards/#{card_id}", json: params)
31
17
  end
32
-
18
+
33
19
  def self.delete(customer_id, card_id)
34
- communicator.delete(
35
- path_builder.build_card_path(customer_id, card_id)
36
- )
20
+ communicator.delete("#{Configuration.api_url}/customers/#{customer_id}/cards/#{card_id}")
37
21
  end
38
22
 
39
- def self.list(customer_id)
40
- communicator.get(
41
- path_builder.build_card_path(customer_id)
42
- )
23
+ def self.list(customer_id, params = nil)
24
+ communicator.get("#{Configuration.api_url}/customers/#{customer_id}/cards", query: params)
43
25
  end
44
26
  end
45
27
  end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ class Charges
5
+ extend TransactionBase
6
+
7
+ def self.create(params)
8
+ communicator.post("#{Configuration.api_url}/charges", json: params)
9
+ end
10
+
11
+ def self.retrieve(charge_id)
12
+ communicator.get("#{Configuration.api_url}/charges/#{charge_id}")
13
+ end
14
+
15
+ def self.update(charge_id, params)
16
+ communicator.post("#{Configuration.api_url}/charges/#{charge_id}", json: params)
17
+ end
18
+
19
+ def self.list(params = nil)
20
+ communicator.get("#{Configuration.api_url}/charges", query: params)
21
+ end
22
+
23
+ def self.capture(charge_id)
24
+ communicator.post("#{Configuration.api_url}/charges/#{charge_id}/capture")
25
+ end
26
+
27
+ def self.refund(charge_id, params = nil)
28
+ communicator.post("#{Configuration.api_url}/charges/#{charge_id}/refund", json: params)
29
+ end
30
+ end
31
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'httparty'
2
4
 
3
5
  module SecurionPay
@@ -8,44 +10,50 @@ module SecurionPay
8
10
 
9
11
  @web_consumer = HTTParty
10
12
 
11
- def self.get(path)
12
- web_consumer.get(
13
- url(path),
14
- request_body
15
- )
13
+ def self.get(url, query: nil)
14
+ response = web_consumer.get(url, request(query: query))
15
+ handle_response(response)
16
+ response
16
17
  end
17
18
 
18
- def self.post(path, body)
19
- web_consumer.post(
20
- url(path),
21
- request_body(body)
22
- )
19
+ def self.post(url, json: nil, body: nil)
20
+ response = web_consumer.post(url, request(json: json, body: body))
21
+ handle_response(response)
22
+ response
23
23
  end
24
24
 
25
- def self.delete(path)
26
- web_consumer.delete(
27
- url(path),
28
- request_body
29
- )
25
+ def self.delete(url)
26
+ response = web_consumer.delete(url, request)
27
+ handle_response(response)
28
+ response
30
29
  end
31
30
 
32
- def self.url(path)
33
- "#{Configuration.service_url}/#{path}"
34
- end
31
+ def self.request(json: nil, query: nil, body: nil)
32
+ headers = {
33
+ "User-Agent" => "SecurionPay-Ruby/#{SecurionPay::VERSION} (Ruby/#{RUBY_VERSION})",
34
+ "Accept" => "application/json",
35
+ }
36
+ if json
37
+ raise ArgumentError("Cannot specify both body and json") if body
38
+
39
+ body = json.to_json
40
+ headers["Content-Type"] = "application/json"
41
+ end
35
42
 
36
- def self.request_body(body = nil)
37
43
  {
38
44
  body: body,
39
- basic_auth: basic_auth
45
+ query: query,
46
+ headers: headers,
47
+ basic_auth: {
48
+ username: Configuration.secret_key
49
+ }
40
50
  }
41
51
  end
42
52
 
43
- def self.basic_auth
44
- {
45
- username: Configuration.private_key
46
- }
53
+ def self.handle_response(response)
54
+ raise SecurionPayException, response if (400..599).cover?(response.code)
47
55
  end
48
56
 
49
- private_class_method :url, :request_body, :basic_auth
57
+ private_class_method :request, :handle_response
50
58
  end
51
59
  end
@@ -1,9 +1,29 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SecurionPay
2
4
  class Configuration
3
5
  class << self
4
- attr_accessor :service_url, :private_key
6
+ attr_accessor :secret_key
7
+ attr_reader :api_url, :uploads_url
5
8
  end
6
9
 
7
- @service_url = 'https://api.securionpay.com'.freeze
10
+ @api_url = 'https://api.securionpay.com'
11
+ @uploads_url = 'https://uploads.securionpay.com'
12
+
13
+ def self.api_url=(api_url)
14
+ @api_url = if api_url.nil?
15
+ 'https://api.securionpay.com'
16
+ else
17
+ api_url.gsub(%r{/$}, "")
18
+ end
19
+ end
20
+
21
+ def self.uploads_url=(uploads_url)
22
+ @uploads_url = if uploads_url.nil?
23
+ 'https://uploads.securionpay.com'
24
+ else
25
+ uploads_url.gsub(%r{/$}, "")
26
+ end
27
+ end
8
28
  end
9
29
  end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ class Credits
5
+ extend TransactionBase
6
+
7
+ def self.create(params)
8
+ communicator.post("#{Configuration.api_url}/credits", json: params)
9
+ end
10
+
11
+ def self.retrieve(credit_id)
12
+ communicator.get("#{Configuration.api_url}/credits/#{credit_id}")
13
+ end
14
+
15
+ def self.update(credit_id, params)
16
+ communicator.post("#{Configuration.api_url}/credits/#{credit_id}", json: params)
17
+ end
18
+
19
+ def self.list(params = nil)
20
+ communicator.get("#{Configuration.api_url}/credits", query: params)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ class CrossSaleOffers
5
+ extend TransactionBase
6
+
7
+ def self.create(params)
8
+ communicator.post("#{Configuration.api_url}/cross-sale-offers", json: params)
9
+ end
10
+
11
+ def self.retrieve(cross_sale_offer_id)
12
+ communicator.get("#{Configuration.api_url}/cross-sale-offers/#{cross_sale_offer_id}")
13
+ end
14
+
15
+ def self.update(cross_sale_offer_id, params)
16
+ communicator.post("#{Configuration.api_url}/cross-sale-offers/#{cross_sale_offer_id}", json: params)
17
+ end
18
+
19
+ def self.delete(cross_sale_offer_id)
20
+ communicator.delete("#{Configuration.api_url}/cross-sale-offers/#{cross_sale_offer_id}")
21
+ end
22
+
23
+ def self.list(params = nil)
24
+ communicator.get("#{Configuration.api_url}/cross-sale-offers", query: params)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ class Customers
5
+ extend TransactionBase
6
+
7
+ def self.create(params)
8
+ communicator.post("#{Configuration.api_url}/customers", json: params)
9
+ end
10
+
11
+ def self.retrieve(customer_id)
12
+ communicator.get("#{Configuration.api_url}/customers/#{customer_id}")
13
+ end
14
+
15
+ def self.update(customer_id, params)
16
+ communicator.post("#{Configuration.api_url}/customers/#{customer_id}", json: params)
17
+ end
18
+
19
+ def self.delete(customer_id)
20
+ communicator.delete("#{Configuration.api_url}/customers/#{customer_id}")
21
+ end
22
+
23
+ def self.list(params = nil)
24
+ communicator.get("#{Configuration.api_url}/customers", query: params)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ class Disputes
5
+ extend TransactionBase
6
+
7
+ def self.retrieve(dispute_id)
8
+ communicator.get("#{Configuration.api_url}/disputes/#{dispute_id}")
9
+ end
10
+
11
+ def self.update(dispute_id, params)
12
+ communicator.post("#{Configuration.api_url}/disputes/#{dispute_id}", json: params)
13
+ end
14
+
15
+ def self.close(dispute_id)
16
+ communicator.post("#{Configuration.api_url}/disputes/#{dispute_id}/close")
17
+ end
18
+
19
+ def self.list(params = nil)
20
+ communicator.get("#{Configuration.api_url}/disputes", query: params)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ class Events
5
+ extend TransactionBase
6
+
7
+ def self.retrieve(event_id)
8
+ communicator.get("#{Configuration.api_url}/events/#{event_id}")
9
+ end
10
+
11
+ def self.list(params = nil)
12
+ communicator.get("#{Configuration.api_url}/events", query: params)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ class FileUploads
5
+ extend TransactionBase
6
+
7
+ def self.upload(file, params)
8
+ body = { file: file }.merge(params)
9
+ communicator.post("#{Configuration.uploads_url}/files", body: body)
10
+ end
11
+
12
+ def self.list(params = nil)
13
+ communicator.get("#{Configuration.uploads_url}/files", query: params)
14
+ end
15
+
16
+ def self.retrieve(file_upload_id)
17
+ communicator.get("#{Configuration.uploads_url}/files/#{file_upload_id}")
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ class FraudWarnings
5
+ extend TransactionBase
6
+
7
+ def self.retrieve(fraud_warning_id)
8
+ communicator.get("#{Configuration.api_url}/fraud-warnings/#{fraud_warning_id}")
9
+ end
10
+
11
+ def self.list(params = nil)
12
+ communicator.get("#{Configuration.api_url}/fraud-warnings", query: params)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ class PaymentMethods
5
+ extend TransactionBase
6
+
7
+ def self.create(params)
8
+ communicator.post("#{Configuration.api_url}/payment-methods", json: params)
9
+ end
10
+
11
+ def self.retrieve(plan_id)
12
+ communicator.get("#{Configuration.api_url}/payment-methods/#{plan_id}")
13
+ end
14
+
15
+ def self.delete(plan_id)
16
+ communicator.delete("#{Configuration.api_url}/payment-methods/#{plan_id}")
17
+ end
18
+
19
+ def self.list(params = nil)
20
+ communicator.get("#{Configuration.api_url}/payment-methods", query: params)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ class Plans
5
+ extend TransactionBase
6
+
7
+ def self.create(params)
8
+ communicator.post("#{Configuration.api_url}/plans", json: params)
9
+ end
10
+
11
+ def self.retrieve(plan_id)
12
+ communicator.get("#{Configuration.api_url}/plans/#{plan_id}")
13
+ end
14
+
15
+ def self.update(plan_id, params)
16
+ communicator.post("#{Configuration.api_url}/plans/#{plan_id}", json: params)
17
+ end
18
+
19
+ def self.delete(plan_id)
20
+ communicator.delete("#{Configuration.api_url}/plans/#{plan_id}")
21
+ end
22
+
23
+ def self.list(params = nil)
24
+ communicator.get("#{Configuration.api_url}/plans", query: params)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ class SecurionPayException < StandardError
5
+ attr_reader :response
6
+
7
+ def initialize(response)
8
+ super(response)
9
+ @response = response
10
+ end
11
+
12
+ def [](key)
13
+ response[key]
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ class Subscriptions
5
+ extend TransactionBase
6
+
7
+ def self.create(params)
8
+ communicator.post("#{Configuration.api_url}/subscriptions", json: params)
9
+ end
10
+
11
+ def self.retrieve(subscription_id)
12
+ communicator.get("#{Configuration.api_url}/subscriptions/#{subscription_id}")
13
+ end
14
+
15
+ def self.update(subscription_id, params)
16
+ communicator.post("#{Configuration.api_url}/subscriptions/#{subscription_id}", json: params)
17
+ end
18
+
19
+ def self.cancel(subscription_id)
20
+ communicator.delete("#{Configuration.api_url}/subscriptions/#{subscription_id}")
21
+ end
22
+
23
+ def self.list(params = nil)
24
+ communicator.get("#{Configuration.api_url}/subscriptions", query: params)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ class Tokens
5
+ extend TransactionBase
6
+
7
+ def self.create(params)
8
+ communicator.post("#{Configuration.api_url}/tokens", json: params)
9
+ end
10
+
11
+ def self.retrieve(token_id)
12
+ communicator.get("#{Configuration.api_url}/tokens/#{token_id}")
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ module TransactionBase
5
+ def communicator
6
+ @communicator ||= Communicator
7
+ end
8
+
9
+ def communicator=(value)
10
+ @communicator = value
11
+ end
12
+ end
13
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SecurionPay
2
- VERSION = '0.3.0'.freeze
4
+ VERSION = '1.1.0'
3
5
  end
data/lib/securionpay.rb CHANGED
@@ -1,7 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'securionpay/transaction_base'
4
+ require 'securionpay/version'
5
+ require 'securionpay/securion_pay_exception'
6
+
7
+ require 'securionpay/blacklist'
1
8
  require 'securionpay/cards'
9
+ require 'securionpay/charges'
2
10
  require 'securionpay/communicator'
3
11
  require 'securionpay/configuration'
4
- require 'securionpay/version'
12
+ require 'securionpay/credits'
13
+ require 'securionpay/cross_sale_offers'
14
+ require 'securionpay/customers'
15
+ require 'securionpay/disputes'
16
+ require 'securionpay/events'
17
+ require 'securionpay/file_uploads'
18
+ require 'securionpay/fraud_warnings'
19
+ require 'securionpay/payment_methods'
20
+ require 'securionpay/plans'
21
+ require 'securionpay/subscriptions'
22
+ require 'securionpay/tokens'
23
+
5
24
  #
6
25
  # SecurionPay start point
7
26
  module SecurionPay