veri_trans 0.1.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7bdb1fc377feb4deb29b461134fb5449263a2e69
4
+ data.tar.gz: cfeaf366f0ac2244837cba0be00d6cc1ef1f483e
5
+ SHA512:
6
+ metadata.gz: 4aabd9566288f910bfd669eb6a6b6ae76842d0944646d5b064ec44bb2c9fe533d14b2ebba4d8b0b710c34a9c5ee0076569a42f3d3673602bad1164dcf8901919
7
+ data.tar.gz: af4c89ea99049759cf2882907e4dbf0d92861cda8e05c5341a6128d2ccf31b00bf9b69629f062be6f747aaa37867234d0f4f87c19430a5de4376c66250b0d0e1
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ Gemfile.lock
2
+ .ruby-version
3
+ .ruby-gemset
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source "https://rubygems.org"
2
+ gemspec
@@ -0,0 +1,3 @@
1
+ .idea
2
+ *.iml
3
+ Gemfile.lock
@@ -0,0 +1,60 @@
1
+ module VeriTrans
2
+ require 'json'
3
+ require 'active_model'
4
+ require 'active_model/serializers/json'
5
+ require_relative 'setting'
6
+ require_relative 'http_request.rb'
7
+
8
+
9
+ class ApiBase
10
+
11
+ attr_accessor :ca_cert_file_path, :verify_ssl, :port, :use_ssl, :host, :server_key
12
+ attr_reader :http_request
13
+
14
+ # @param [Setting] setting
15
+ def initialize(setting)
16
+ @server_key = setting.server_key
17
+ @ca_cert_file_path = setting.ca_cert_path
18
+ @host = setting.request_host
19
+ @use_ssl = setting.use_https_request
20
+ @port = setting.request_host_port
21
+ @verify_ssl = setting.verify_ssl
22
+
23
+ @http_request = HttpRequest.new(
24
+ server_key: @server_key,
25
+ host: @host,
26
+ use_ssl: @use_ssl,
27
+ port: @port,
28
+ verify_ssl: @verify_ssl,
29
+ ca_cert_file_path: @ca_cert_file_path,
30
+ )
31
+
32
+ end
33
+
34
+ # @param [String] path
35
+ # @param [Object] entity
36
+ def do_request_post(path, entity)
37
+ result_body = @http_request.send_post_request(path: path, body: ActiveSupport::JSON.encode(entity))
38
+ begin
39
+ JSON.parse(result_body)
40
+ rescue
41
+ raise VtdException::VtDirectError("Could not decode from JSON to ruby object.\r\n#{result_body}")
42
+ end
43
+
44
+ end
45
+
46
+ # @param [String] path
47
+ # @param [Array] params
48
+ # @return [Object] Json decoded object
49
+ def do_request_get(path, params)
50
+ result_body = @http_request.send_get_request(path: path, params: params)
51
+ begin
52
+ JSON.parse(result_body)
53
+ rescue
54
+ raise VtdException::VtDirectError("Could not decode from JSON to ruby object.\r\n#{result_body}")
55
+ end
56
+
57
+ end
58
+
59
+ end
60
+ end
@@ -0,0 +1,21 @@
1
+ module VeriTrans
2
+ require_relative 'api_base'
3
+ require_relative 'setting'
4
+ require_relative './Request/capture_parameter'
5
+
6
+ class Capture < ApiBase
7
+
8
+ API_PATH = '/vtdirect/v1/capture'
9
+
10
+ # @param [Setting] setting
11
+ def initialize(setting)
12
+ super(setting)
13
+ end
14
+
15
+ # @param [Request::CaptureParameter] param
16
+ def capture_order(param)
17
+ self.do_request_post(API_PATH, param)
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module VeriTrans
2
+ require_relative 'api_base'
3
+ require_relative 'setting'
4
+ require_relative './Request/charges_parameter'
5
+
6
+ class Charges < ApiBase
7
+
8
+ API_PATH = '/vtdirect/v1/charges'
9
+
10
+ # @param [Setting] setting
11
+ def initialize(setting)
12
+ super(setting)
13
+ end
14
+
15
+ # @param [Request::ChargesParameter] param
16
+ def charge_with_token(param)
17
+ self.do_request_post(API_PATH, param)
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module VeriTrans
2
+ require_relative 'api_base'
3
+ require_relative 'setting'
4
+ require_relative './Request/credit_card_destroy_parameter'
5
+
6
+ class CreditCardDestroy < ApiBase
7
+
8
+ API_PATH = '/vtdirect/v1/creditcard/destroy'
9
+
10
+ # @param [Setting] setting
11
+ def initialize(setting)
12
+ super(setting)
13
+ end
14
+
15
+ # @param [Request::CreditCardDestroyParameter] param
16
+ def destroy_credit_card_bind(param)
17
+ self.do_request_post(API_PATH, param)
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module VeriTrans
2
+ require_relative 'api_base'
3
+ require_relative 'setting'
4
+ require_relative './Request/credit_card_list_parameter'
5
+
6
+ class CreditCardList < ApiBase
7
+
8
+ API_PATH = '/vtdirect/v1/creditcard/list'
9
+
10
+ # @param [Setting] setting
11
+ def initialize(setting)
12
+ super(setting)
13
+ end
14
+
15
+ # @param [Request::CreditCardListParameter] param
16
+ def list_credit_card_bind(param)
17
+ self.do_request_post(API_PATH, param)
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module VeriTrans
2
+ require_relative 'api_base'
3
+ require_relative 'setting'
4
+ require_relative './Request/cvs_parameter'
5
+
6
+ class Cvs < ApiBase
7
+
8
+ API_PATH = '/vtdirect/v1/cvs'
9
+
10
+ # @param [Setting] setting
11
+ def initialize(setting)
12
+ super(setting)
13
+ end
14
+
15
+ # @param [Request::CvsParameter] param
16
+ def payment_at_cvs(param)
17
+ self.do_request_post(API_PATH, param)
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,77 @@
1
+ module VeriTrans
2
+ require 'rest-client'
3
+ require 'uri'
4
+ require 'openssl'
5
+ require 'active_support/core_ext/object/to_query'
6
+ require 'base64'
7
+
8
+ class HttpRequest
9
+ attr_accessor :server_key, :host, :use_ssl, :port
10
+
11
+ def initialize(server_key: nil, host: nil, use_ssl: true, port: 443, verify_ssl: true, ca_cert_file_path: nil)
12
+ @server_key = server_key
13
+ @host = host
14
+ @port = port
15
+ @use_ssl = use_ssl
16
+ @verify_ssl = verify_ssl
17
+ @ca_cert_file_path = ca_cert_file_path
18
+ end
19
+
20
+ def send_get_request(path: nil, params: nil)
21
+ full_url = generate_api_url(path: path)
22
+ full_url += '?' + params.to_query(nil) if params
23
+ begin
24
+ resource = RestClient::Resource.new(full_url, generate_resource_option)
25
+ response = resource.get
26
+ if response.code == 200
27
+ response.to_str
28
+ else
29
+ raise(VtdException::VtDirectNetworkError, 'Http status error occurred.')
30
+ end
31
+ rescue => e
32
+ raise(VtdException::VtDirectNetworkError, e.message)
33
+ end
34
+ end
35
+
36
+ def send_post_request(path: nil, body: nil)
37
+ full_url = generate_api_url(path: path)
38
+ begin
39
+ resource = RestClient::Resource.new(full_url, generate_resource_option)
40
+ header =
41
+ {
42
+ :content_type => :json,
43
+ :accept => :json,
44
+ 'User-Agent' => "VTDirect/v1 RubyBindings/#{Setting::VERSION}",
45
+ 'Authorization' => "Basic #{Base64.strict_encode64(@server_key)}"
46
+ }
47
+ response = resource.post(
48
+ body,
49
+ header
50
+ )
51
+ if response.code == 200
52
+ response.to_str
53
+ else
54
+ raise(VtdException::VtDirectNetworkError, 'Http status error occurred.')
55
+ end
56
+ rescue => e
57
+ raise(VtdException::VtDirectNetworkError, e.message)
58
+ end
59
+
60
+ end
61
+
62
+ def generate_resource_option
63
+ {
64
+ :timeout => 130,
65
+ :verify_ssl => (@verify_ssl) ? OpenSSL::SSL::VERIFY_PEER : OpenSSL::SSL::VERIFY_NONE,
66
+ :ssl_ca_file => @ca_cert_file_path
67
+ }
68
+ end
69
+
70
+ def generate_api_url(path: nil)
71
+ ((@use_ssl) ? 'https' : 'http') + "://#{@host}:#{@port}#{path}"
72
+ end
73
+
74
+ private :generate_api_url
75
+
76
+ end
77
+ end
@@ -0,0 +1,21 @@
1
+ module VeriTrans
2
+ require_relative 'api_base'
3
+ require_relative 'setting'
4
+ require_relative './Request/re_charges_parameter'
5
+
6
+ class ReCharges < ApiBase
7
+
8
+ API_PATH = '/vtdirect/v1/recharges'
9
+
10
+ # @param [Setting] setting
11
+ def initialize(setting)
12
+ super(setting)
13
+ end
14
+
15
+ # @param [Request::ReChargesParameter] param
16
+ def re_charge_with_register_id(param)
17
+ self.do_request_post(API_PATH, param)
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,7 @@
1
+ module VeriTrans::Request
2
+ class CaptureParameter
3
+ def initialize
4
+ end
5
+ attr_accessor :order_id, :amount
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module VeriTrans::Request
2
+ class ChargesParameter
3
+ def initialize
4
+ end
5
+ attr_accessor :token_id, :order_id, :gross_amount, :with_capture, :register, :customer_id, :test_mode
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module VeriTrans::Request
2
+ class CreditCardDestroyParameter
3
+ def initialize
4
+ end
5
+ attr_accessor :register_id
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module VeriTrans::Request
2
+ class CreditCardListParameter
3
+ def initialize
4
+ end
5
+ attr_accessor :customer_id
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module VeriTrans::Request
2
+ class CvsParameter
3
+ def initialize
4
+ end
5
+ attr_accessor :order_id, :option_type, :tel, :gross_amount, :name1, :name2, :test_mode, :pay_limit
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module VeriTrans::Request
2
+ class ReChargesParameter
3
+ def initialize
4
+ end
5
+ attr_accessor :order_id, :gross_amount, :with_capture, :register_id
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module VeriTrans::Request
2
+ class StatusParameter
3
+ def initialize
4
+ end
5
+ attr_accessor :order_id
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module VeriTrans::Request
2
+ class VoidParameter
3
+ def initialize
4
+ end
5
+ attr_accessor :order_id, :amount
6
+ end
7
+ end
@@ -0,0 +1,16 @@
1
+ module VeriTrans
2
+ class Setting
3
+ VERSION = '1.0'
4
+
5
+ attr_accessor :server_key, :request_host, :use_https_request, :request_host_port, :verify_ssl, :ca_cert_path
6
+
7
+ def initialize
8
+ @request_host = 'air.veritrans.co.jp'
9
+ @use_https_request = true
10
+ @request_host_port = 443
11
+ @verify_ssl = true
12
+ end
13
+
14
+ end
15
+
16
+ end
@@ -0,0 +1,21 @@
1
+ module VeriTrans
2
+ require_relative 'api_base'
3
+ require_relative 'setting'
4
+ require_relative './Request/status_parameter'
5
+
6
+ class Status < ApiBase
7
+
8
+ API_PATH = '/vtdirect/v1/status'
9
+
10
+ # @param [Setting] setting
11
+ def initialize(setting)
12
+ super(setting)
13
+ end
14
+
15
+ # @param [Request::StatusParameter] param
16
+ def get_order_status(param)
17
+ self.do_request_post(API_PATH, param)
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,27 @@
1
+ module VeriTrans
2
+ require_relative 'api_base'
3
+ require_relative 'setting'
4
+
5
+ class Tokens < ApiBase
6
+
7
+ API_PATH = '/vtdirect/v1/tokens'
8
+
9
+ # @param [Setting] setting
10
+ def initialize(setting)
11
+ super(setting)
12
+ end
13
+
14
+ # @param [String] client_key
15
+ # @param [String] card_number
16
+ # @param [String] card_exp_year
17
+ # @param [String] card_exp_month
18
+ # @param [String] card_cvv
19
+ def get_token(client_key, card_number, card_exp_year, card_exp_month, card_cvv)
20
+ params = {:card_number => card_number, :card_exp_month => card_exp_month,
21
+ :card_exp_year => card_exp_year, :card_cvv => card_cvv,
22
+ :client_key => client_key}
23
+ self.do_request_get(API_PATH, params)
24
+ end
25
+
26
+ end
27
+ end
@@ -0,0 +1,21 @@
1
+ module VeriTrans
2
+ require_relative 'api_base'
3
+ require_relative 'setting'
4
+ require_relative './Request/void_parameter'
5
+
6
+ class Void < ApiBase
7
+
8
+ API_PATH = '/vtdirect/v1/void'
9
+
10
+ # @param [Setting] setting
11
+ def initialize(setting)
12
+ super(setting)
13
+ end
14
+
15
+ # @param [Request::VoidParameter] param
16
+ def void_order(param)
17
+ self.do_request_post(API_PATH, param)
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,4 @@
1
+ module VeriTrans::VtdException
2
+ class VtDirectError < StandardError
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module VeriTrans::VtdException
2
+ class VtDirectNetworkError < StandardError
3
+ end
4
+ end
data/lib/veri_trans.rb ADDED
@@ -0,0 +1,12 @@
1
+ require 'veri_trans/api_base'
2
+ require 'veri_trans/capture'
3
+ require 'veri_trans/charges'
4
+ require 'veri_trans/credit_card_destroy'
5
+ require 'veri_trans/credit_card_list'
6
+ require 'veri_trans/cvs'
7
+ require 'veri_trans/http_request'
8
+ require 'veri_trans/re_charges'
9
+ require 'veri_trans/setting'
10
+ require 'veri_trans/status'
11
+ require 'veri_trans/tokens'
12
+ require 'veri_trans/void'
@@ -0,0 +1,19 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'veri_trans'
3
+ s.version = '0.1.1'
4
+ s.summary = 'veritrans Air Direct API'
5
+ s.description = 'A Ruby wrapper library for veritrans Air Direct API'
6
+ s.authors = ['Yuichiro NAKAGAWA']
7
+ s.email = 'ii.hsif.drows@gmail.com'
8
+ s.homepage = 'https://github.com/Mekajiki/VeriTrans'
9
+ s.files = `git ls-files`.split("\n")
10
+ s.require_paths = ["lib"]
11
+ s.add_dependency 'activemodel', '~> 4.0'
12
+ s.add_dependency 'active_model_serializers', '0.8.1'
13
+ s.add_dependency 'activesupport', '~> 4.0'
14
+ s.add_dependency 'rest-client', '1.6.7'
15
+ s.add_dependency 'uuidtools', '2.1.4'
16
+ s.add_dependency 'minitest-reporters', '~> 0.5'
17
+ s.add_dependency 'test-unit', '2.5.5'
18
+ s.license = 'MIT'
19
+ end
metadata ADDED
@@ -0,0 +1,168 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: veri_trans
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Yuichiro NAKAGAWA
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-06-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activemodel
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: active_model_serializers
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 0.8.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 0.8.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: activesupport
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '4.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '4.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rest-client
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.6.7
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 1.6.7
69
+ - !ruby/object:Gem::Dependency
70
+ name: uuidtools
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '='
74
+ - !ruby/object:Gem::Version
75
+ version: 2.1.4
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 2.1.4
83
+ - !ruby/object:Gem::Dependency
84
+ name: minitest-reporters
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.5'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.5'
97
+ - !ruby/object:Gem::Dependency
98
+ name: test-unit
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '='
102
+ - !ruby/object:Gem::Version
103
+ version: 2.5.5
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '='
109
+ - !ruby/object:Gem::Version
110
+ version: 2.5.5
111
+ description: A Ruby wrapper library for veritrans Air Direct API
112
+ email: ii.hsif.drows@gmail.com
113
+ executables: []
114
+ extensions: []
115
+ extra_rdoc_files: []
116
+ files:
117
+ - ".gitignore"
118
+ - Gemfile
119
+ - lib/veri_trans.rb
120
+ - lib/veri_trans/.gitignore
121
+ - lib/veri_trans/api_base.rb
122
+ - lib/veri_trans/capture.rb
123
+ - lib/veri_trans/charges.rb
124
+ - lib/veri_trans/credit_card_destroy.rb
125
+ - lib/veri_trans/credit_card_list.rb
126
+ - lib/veri_trans/cvs.rb
127
+ - lib/veri_trans/http_request.rb
128
+ - lib/veri_trans/re_charges.rb
129
+ - lib/veri_trans/request/capture_parameter.rb
130
+ - lib/veri_trans/request/charges_parameter.rb
131
+ - lib/veri_trans/request/credit_card_destroy_parameter.rb
132
+ - lib/veri_trans/request/credit_card_list_parameter.rb
133
+ - lib/veri_trans/request/cvs_parameter.rb
134
+ - lib/veri_trans/request/re_charges_parameter.rb
135
+ - lib/veri_trans/request/status_parameter.rb
136
+ - lib/veri_trans/request/void_parameter.rb
137
+ - lib/veri_trans/setting.rb
138
+ - lib/veri_trans/status.rb
139
+ - lib/veri_trans/tokens.rb
140
+ - lib/veri_trans/void.rb
141
+ - lib/veri_trans/vtd_exception/vt_direct_error.rb
142
+ - lib/veri_trans/vtd_exception/vt_direct_network_error.rb
143
+ - veri_trans.gemspec
144
+ homepage: https://github.com/Mekajiki/VeriTrans
145
+ licenses:
146
+ - MIT
147
+ metadata: {}
148
+ post_install_message:
149
+ rdoc_options: []
150
+ require_paths:
151
+ - lib
152
+ required_ruby_version: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ required_rubygems_version: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
162
+ requirements: []
163
+ rubyforge_project:
164
+ rubygems_version: 2.2.2
165
+ signing_key:
166
+ specification_version: 4
167
+ summary: veritrans Air Direct API
168
+ test_files: []