smile-identity-core 2.1.1 → 2.2.0
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 +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
|