veri_trans 0.1.1

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