smile-identity-core 2.1.1 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/release.yml +2 -0
- data/CHANGELOG.md +10 -0
- data/Gemfile.lock +1 -1
- data/examples/aml_check.rb +25 -0
- data/examples/get_web_token.rb +26 -0
- data/lib/smile-identity-core/aml_check.rb +91 -0
- data/lib/smile-identity-core/business_verification.rb +3 -4
- data/lib/smile-identity-core/constants/job_type.rb +3 -0
- data/lib/smile-identity-core/version.rb +1 -1
- data/lib/smile-identity-core/web_api.rb +2 -2
- data/lib/smile-identity-core.rb +10 -9
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1cd1f7ec1f9a1c9418ce0e3d5501eb8e32fcfaf029da9b9188145a16dbbdf70b
|
4
|
+
data.tar.gz: 4bb53eafd0b561c05599a33fda6450099ab7208d1800a7ed19f5f304745e9985
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fd09fe7c7e6117497dada79d8132eae2b08e58fd36def75626cd8883f151138d54868c16eb3b5ad5f45977c5d0fe6c1e01e9184350d8147bde3dee6513da0ea2
|
7
|
+
data.tar.gz: b442ba3c424a3d0eaf5f2fedba6596825da09053bf4d4a9221d8999c5e18c7359dde3c8abc2db6f23154d0e306cf220aa654a4ad3e4c1d9afe5fcb34f5e1038e
|
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
+
## [2.2.0] - 2023-04-05
|
10
|
+
### Added
|
11
|
+
- Adds support for AML check
|
12
|
+
### Changed
|
13
|
+
- Fix business verification docstrings
|
14
|
+
|
15
|
+
## [2.1.2] - 2023-03-09
|
16
|
+
### Changed
|
17
|
+
- Fix `get_web_token` by ensuring signature merges to request_params
|
18
|
+
|
9
19
|
## [2.1.1] - 2022-12-13
|
10
20
|
### Added
|
11
21
|
- Adds UPDATE_PHOTO and COMPARE_USER_INFO to JobType
|
data/Gemfile.lock
CHANGED
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'smile-identity-core'
|
4
|
+
require 'securerandom'
|
5
|
+
# See https://docs.smileidentity.com/products/for-individuals-kyc/aml-check for
|
6
|
+
# more information on business verification
|
7
|
+
|
8
|
+
# Initialize
|
9
|
+
partner_id = '' # login to the Smile Identity portal to view your partner id
|
10
|
+
api_key = '' # copy your API key from the Smile Identity portal
|
11
|
+
sid_server = '0' # Use 0 for the sandbox server, use 1 for production server
|
12
|
+
|
13
|
+
connection = SmileIdentityCore::AmlCheck.new(partner_id, api_key, sid_server)
|
14
|
+
|
15
|
+
request_params = {
|
16
|
+
job_id: "job-#{SecureRandom.uuid}",
|
17
|
+
user_id: "user-#{SecureRandom.uuid}",
|
18
|
+
full_name: 'John Leo Doe',
|
19
|
+
countries: ['US'],
|
20
|
+
birth_year: '1984', # yyyy
|
21
|
+
search_existing_user: false
|
22
|
+
}
|
23
|
+
|
24
|
+
# Submit the job
|
25
|
+
pp connection.submit_job(request_params)
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'smile-identity-core'
|
4
|
+
require 'random/formatter'
|
5
|
+
|
6
|
+
# See https://docs.smileidentity.com/server-to-server/ruby/products/biometric-kyc for
|
7
|
+
# how to setup and retrieve configuation values for the WebApi class.
|
8
|
+
|
9
|
+
# Initialize
|
10
|
+
partner_id = '<Put your partner ID here>'; # login to the Smile Identity portal to view your partner id
|
11
|
+
default_callback = '<Put your default callback url here>'
|
12
|
+
api_key = '<Put your API key here>'; # copy your API key from the Smile Identity portal
|
13
|
+
sid_server = '<0 | 1>'; # Use '0' for the sandbox server, use '1' for production server
|
14
|
+
|
15
|
+
connection = SmileIdentityCore::WebApi.new(partner_id, default_callback, api_key, sid_server)
|
16
|
+
|
17
|
+
# Set up request payload
|
18
|
+
request_params = {
|
19
|
+
user_id: '<your unique user id>',
|
20
|
+
job_id: '<your unique job id>',
|
21
|
+
product: '<smile identity product type>',
|
22
|
+
callback_url: '<your callback url>'
|
23
|
+
}
|
24
|
+
|
25
|
+
# Get web token
|
26
|
+
connection.get_web_token(request_params)
|
@@ -0,0 +1,91 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'json'
|
4
|
+
require 'typhoeus'
|
5
|
+
require_relative 'validations'
|
6
|
+
|
7
|
+
module SmileIdentityCore
|
8
|
+
##
|
9
|
+
# The AML Check product allows you to perform due diligence on your customers by screening them against
|
10
|
+
# global watchlists, politically exposed persons lists, and adverse media publications.
|
11
|
+
# For more info visit https://docs.smileidentity.com/products/for-individuals-kyc/aml-check
|
12
|
+
class AmlCheck
|
13
|
+
include Validations
|
14
|
+
|
15
|
+
###
|
16
|
+
# Submit AML
|
17
|
+
# @param [String] :partner_id A unique number assigned by Smile ID to your account. Can be found in the portal
|
18
|
+
# @param [String] :api_key your API key from the Smile Identity portal
|
19
|
+
# @param [String] :sid_server Use 0 for the sandbox server, use 1 for production server
|
20
|
+
def initialize(partner_id, api_key, sid_server)
|
21
|
+
@partner_id = partner_id.to_s
|
22
|
+
@api_key = api_key
|
23
|
+
@sid_server = sid_server
|
24
|
+
@url = if sid_server !~ URI::DEFAULT_PARSER.make_regexp
|
25
|
+
SmileIdentityCore::ENV::SID_SERVER_MAPPING[sid_server.to_s]
|
26
|
+
else
|
27
|
+
sid_server
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# Submit AML
|
32
|
+
# @param [Hash] params the options to create a job with.
|
33
|
+
# @option opts [String] :job_id A unique value generated by you to track jobs on your end.
|
34
|
+
# @option opts [String] :user_id A unique value generated by you.
|
35
|
+
# @option opts [String] :full_name The full name of the customer.
|
36
|
+
# @option opts [String] :birth_year The customer’s year of birth, in the format yyyy
|
37
|
+
# @option opts [Array] :countries An array that takes the customer’s known nationalities in 2-character
|
38
|
+
# (ISO 3166-1 alpha-2) format e.g. Nigeria is NG, Kenya is KE, etc
|
39
|
+
# @option opts [boolean] :search_existing_user If you intend to re-use the name and year of birth
|
40
|
+
# of a user’s previous KYC job
|
41
|
+
# @option opts [Hash] :optional_info Any optional data, this will be returned
|
42
|
+
# in partner_params.
|
43
|
+
def submit_job(params)
|
44
|
+
@params = symbolize_keys(params)
|
45
|
+
@optional_info = @params[:optional_info]
|
46
|
+
submit_requests
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def symbolize_keys(params)
|
52
|
+
params.is_a?(Hash) ? params.transform_keys(&:to_sym) : params
|
53
|
+
end
|
54
|
+
|
55
|
+
def build_payload
|
56
|
+
@payload = generate_signature
|
57
|
+
@payload.merge!(@params)
|
58
|
+
add_partner_info
|
59
|
+
add_sdk_info
|
60
|
+
@payload
|
61
|
+
end
|
62
|
+
|
63
|
+
def add_partner_info
|
64
|
+
@payload[:partner_id] = @partner_id
|
65
|
+
@payload[:job_type] = SmileIdentityCore::JobType::AML
|
66
|
+
@payload[:partner_params] = @optional_info if @optional_info
|
67
|
+
end
|
68
|
+
|
69
|
+
def add_sdk_info
|
70
|
+
@payload[:source_sdk] = SmileIdentityCore::SOURCE_SDK
|
71
|
+
@payload[:source_sdk_version] = SmileIdentityCore::VERSION
|
72
|
+
end
|
73
|
+
|
74
|
+
def generate_signature
|
75
|
+
SmileIdentityCore::Signature.new(@partner_id, @api_key).generate_signature
|
76
|
+
end
|
77
|
+
|
78
|
+
def submit_requests
|
79
|
+
request = Typhoeus::Request.new("#{@url}/aml", method: 'POST',
|
80
|
+
headers: { 'Content-Type' => 'application/json' },
|
81
|
+
body: build_payload.to_json)
|
82
|
+
|
83
|
+
request.on_complete do |response|
|
84
|
+
return response.body if response.success?
|
85
|
+
|
86
|
+
raise "#{response.code}: #{response.body}"
|
87
|
+
end
|
88
|
+
request.run
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -20,10 +20,9 @@ module SmileIdentityCore
|
|
20
20
|
|
21
21
|
###
|
22
22
|
# Submit business verification
|
23
|
-
# @param [
|
24
|
-
# @
|
25
|
-
# @
|
26
|
-
# @option opts [String] :user_id A unique value generated by you.
|
23
|
+
# @param [String] :partner_id A unique number assigned by Smile ID to your account. Can be found in the portal
|
24
|
+
# @param [String] :api_key your API key from the Smile Identity portal
|
25
|
+
# @param [String] :sid_server Use 0 for the sandbox server, use 1 for production server
|
27
26
|
def initialize(partner_id, api_key, sid_server)
|
28
27
|
@partner_id = partner_id.to_s
|
29
28
|
@api_key = api_key
|
@@ -22,5 +22,8 @@ module SmileIdentityCore
|
|
22
22
|
UPDATE_PHOTO = 8
|
23
23
|
# Compares document verification to an id check
|
24
24
|
COMPARE_USER_INFO = 9
|
25
|
+
# Performs due diligence by screening against global watchlists,
|
26
|
+
# politically exposed persons lists, and adverse media publications
|
27
|
+
AML = 10
|
25
28
|
end
|
26
29
|
end
|
@@ -129,9 +129,9 @@ module SmileIdentityCore
|
|
129
129
|
private
|
130
130
|
|
131
131
|
def request_web_token(request_params)
|
132
|
-
request_params
|
132
|
+
request_params = request_params
|
133
133
|
.merge(SmileIdentityCore::Signature.new(@partner_id, @api_key).generate_signature(Time.now.to_s))
|
134
|
-
.merge
|
134
|
+
.merge(
|
135
135
|
{ partner_id: @partner_id,
|
136
136
|
source_sdk: SmileIdentityCore::SOURCE_SDK,
|
137
137
|
source_sdk_version: SmileIdentityCore::VERSION }
|
data/lib/smile-identity-core.rb
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
3
|
+
require_relative 'smile-identity-core/version'
|
4
|
+
require_relative 'smile-identity-core/web_api'
|
5
|
+
require_relative 'smile-identity-core/id_api'
|
6
|
+
require_relative 'smile-identity-core/aml_check'
|
7
|
+
require_relative 'smile-identity-core/signature'
|
8
|
+
require_relative 'smile-identity-core/utilities'
|
9
|
+
require_relative 'smile-identity-core/business_verification'
|
10
|
+
require_relative 'smile-identity-core/constants/env'
|
11
|
+
require_relative 'smile-identity-core/constants/image_type'
|
12
|
+
require_relative 'smile-identity-core/constants/job_type'
|
12
13
|
|
13
14
|
module SmileIdentityCore
|
14
15
|
class Error < StandardError; end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smile-identity-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Smile Identity
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-04-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -168,6 +168,7 @@ files:
|
|
168
168
|
- Rakefile
|
169
169
|
- bin/console
|
170
170
|
- bin/setup
|
171
|
+
- examples/aml_check.rb
|
171
172
|
- examples/biometric_kyc.rb
|
172
173
|
- examples/business_verification.rb
|
173
174
|
- examples/document_verification.rb
|
@@ -177,8 +178,10 @@ files:
|
|
177
178
|
- examples/example-project/README.md
|
178
179
|
- examples/example-project/sample.env
|
179
180
|
- examples/example-project/smart_bank.rb
|
181
|
+
- examples/get_web_token.rb
|
180
182
|
- examples/smart_selfie_authentication.rb
|
181
183
|
- lib/smile-identity-core.rb
|
184
|
+
- lib/smile-identity-core/aml_check.rb
|
182
185
|
- lib/smile-identity-core/business_verification.rb
|
183
186
|
- lib/smile-identity-core/constants/env.rb
|
184
187
|
- lib/smile-identity-core/constants/image_type.rb
|
@@ -213,7 +216,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
213
216
|
- !ruby/object:Gem::Version
|
214
217
|
version: '0'
|
215
218
|
requirements: []
|
216
|
-
rubygems_version: 3.
|
219
|
+
rubygems_version: 3.4.10
|
217
220
|
signing_key:
|
218
221
|
specification_version: 4
|
219
222
|
summary: The Smile Identity Web API allows the user to access\ most of the features
|