zhima 0.3.0 → 0.3.3
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/.rspec +1 -0
- data/README.md +36 -3
- data/lib/zhima/param.rb +7 -10
- data/lib/zhima/request.rb +8 -3
- data/lib/zhima/sign.rb +3 -2
- data/lib/zhima/version.rb +1 -1
- data/lib/zhima/watch_list.rb +11 -0
- data/lib/zhima.rb +1 -0
- data/zhima.gemspec +2 -1
- metadata +18 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 43037687ae73f8b71a5753c0996ea7bfa0cce3d0
|
4
|
+
data.tar.gz: 1286fc66a6246181c7ac8b0527ef8e78107bef9a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c6fff8c94c128deef4616452768df00695351251daf63619841f1d7077c100e8a9670d2ce785c5eafe1b718643f83c1f7c2389edb91c1c6c665f0bc829b62cb
|
7
|
+
data.tar.gz: f555b189fc5da2a159de5c6bf09f3b54907b6ac3c62876c8cc5c6c6a5b3bca3b1c1407a8604585dd59fd523b2a20fa331770535ff5800e0380faeea145a3b5a8
|
data/.rspec
CHANGED
data/README.md
CHANGED
@@ -25,22 +25,39 @@ Or install it yourself as:
|
|
25
25
|
```ruby
|
26
26
|
Zhima.configure do |config|
|
27
27
|
config.app_id = 'xxxxxxx' # 应用id
|
28
|
-
config.private_key = private_key # 自己的私钥
|
29
|
-
config.public_key = public_key # 芝麻给的公钥
|
28
|
+
config.private_key = File.read('private_key.pkcs8') # 自己的私钥
|
29
|
+
config.public_key = File.read('public_key.pkcs8') # 芝麻给的公钥
|
30
30
|
end
|
31
31
|
```
|
32
32
|
|
33
33
|
芝麻信用分,调用方法如下(请自行查阅芝麻文档的业务参数组织params):
|
34
34
|
```ruby
|
35
35
|
# 认证url 业务参数请参考 https://b.zmxy.com.cn/technology/openDoc.htm?id=67
|
36
|
-
|
36
|
+
params = {
|
37
|
+
identity_type: '2',
|
38
|
+
identity_param: {certNo: 'idcard_no', name: 'name', certType: 'IDENTITY_CARD'},
|
39
|
+
biz_params: {auth_code: 'M_H5', channelType: 'app', state: '100111211'}
|
40
|
+
}
|
41
|
+
system_options = {charset: 'UTF-8', version: '1.0', channel: 'app'} # 可省略,默认为这些参数
|
42
|
+
Zhima::Score.auth_url(params, system_options) # 第二个参数system_options传入芝麻需要的系统参数,不传亦可(下同,省略)
|
37
43
|
|
38
44
|
# 获取芝麻分
|
39
45
|
# https://b.zmxy.com.cn/technology/openDoc.htm?relInfo=zhima.credit.score.get@1.0@1.4&relType=API_DOC&type=API_INFO_DOC&LEFT_MENU_MODEnull#Seq_1
|
46
|
+
params = {
|
47
|
+
transaction_id: 'transaction_id',
|
48
|
+
product_code: 'w1010100100000000001',
|
49
|
+
open_id: 'open_id'
|
50
|
+
}
|
40
51
|
Zhima::Score.get(params)
|
41
52
|
|
42
53
|
# auth_query
|
43
54
|
# https://b.zmxy.com.cn/technology/openDoc.htm?id=453
|
55
|
+
params = {
|
56
|
+
identity_type: '2',
|
57
|
+
identity_param: {
|
58
|
+
certNo: 'id_card_no', name: 'name', certType: 'IDENTITY_CARD'
|
59
|
+
}
|
60
|
+
}
|
44
61
|
Zhima::Score.auth_query(params)
|
45
62
|
|
46
63
|
# 芝麻callback url中的params参数解密
|
@@ -50,7 +67,23 @@ Zhima::Score.param_decrypt(params_str)
|
|
50
67
|
反欺诈信息验证:
|
51
68
|
```ruby
|
52
69
|
# 参数 https://b.zmxy.com.cn/technology/openDoc.htm?relInfo=zhima.credit.ivs.detail.get@1.0@1.2&relType=API_DOC&type=API_INFO_DOC&LEFT_MENU_MODEnull
|
70
|
+
params = {
|
71
|
+
product_code: 'w1010100000000000103',
|
72
|
+
transaction_id: 'transaction_id',
|
73
|
+
cert_no: '身份证',
|
74
|
+
cert_type: '100',
|
75
|
+
name: 'name',
|
76
|
+
mobile: '18888888888'
|
77
|
+
}
|
53
78
|
Zhima::Ivs.get(params)
|
79
|
+
|
80
|
+
行业关注名单2.0
|
81
|
+
params = {
|
82
|
+
product_code: 'w1010100100000000022',
|
83
|
+
transaction_id: 'transaction_id',
|
84
|
+
open_id: '268800000000000000000000'
|
85
|
+
}
|
86
|
+
Zhima::WatchList.get(params)
|
54
87
|
```
|
55
88
|
|
56
89
|
## Development
|
data/lib/zhima/param.rb
CHANGED
@@ -1,26 +1,23 @@
|
|
1
1
|
module Zhima
|
2
2
|
# 业务参数params加解密
|
3
3
|
class Param
|
4
|
-
# {identity_type: 2, identity_param: URI.encode({certNo: '
|
4
|
+
# {identity_type: 2, identity_param: URI.encode({certNo: 'xxx', name: 'xxx', certType: 'IDENTITY_CARD'}.to_json), biz_params: URI.encode({auth_code: 'M_APPPC_CERT', channelType: 'apppc'}.to_json)}
|
5
5
|
# 返回两个参数:加密后的params,及sign
|
6
|
-
# .slice(:identity_type, :identity_param, :biz_params)
|
7
6
|
def self.encrypt(params)
|
8
7
|
params = Util.symbolize_hash_keys(params)
|
9
8
|
params.each { |key, value| params[key] = value.to_json if value.is_a? Hash }
|
10
9
|
param_str = Util.to_query(params)
|
11
|
-
encrypted_str = param_str.split('').each_slice(117).inject('') do |str, bytes|
|
12
|
-
str += encrypt_str(bytes.join())
|
13
|
-
str
|
14
|
-
end
|
15
|
-
|
16
10
|
[
|
17
|
-
Util.base64_encode(
|
11
|
+
Util.base64_encode(rsa_encrypt(param_str)),
|
18
12
|
Util.base64_encode(Sign.sign(param_str))
|
19
13
|
]
|
20
14
|
end
|
21
15
|
|
22
|
-
def self.
|
23
|
-
|
16
|
+
def self.rsa_encrypt(str)
|
17
|
+
str.split('').each_slice(117).inject('') do |s, bytes|
|
18
|
+
s += Config.zm_rsa.public_encrypt(bytes.join())
|
19
|
+
s
|
20
|
+
end
|
24
21
|
end
|
25
22
|
|
26
23
|
def self.decrypt(param_str)
|
data/lib/zhima/request.rb
CHANGED
@@ -25,12 +25,17 @@ module Zhima
|
|
25
25
|
|
26
26
|
private
|
27
27
|
# 芝麻返回的json数据解析,结果为真正的业务参数
|
28
|
-
# TODO verify sign
|
29
28
|
def parse_response(response_str)
|
30
29
|
response_hash = JSON.parse(response_str)
|
31
|
-
|
30
|
+
biz_response_sign = response_hash['biz_response_sign']
|
31
|
+
biz_response = response_hash['biz_response']
|
32
32
|
biz_response = Param.decrypt(biz_response) if response_hash["encrypted"]
|
33
|
-
|
33
|
+
|
34
|
+
if response_hash["encrypted"] && !Sign.verify?(biz_response_sign, biz_response)
|
35
|
+
{error: true, error_msg: 'sign解签错误'}
|
36
|
+
else
|
37
|
+
JSON.parse(biz_response)
|
38
|
+
end
|
34
39
|
end
|
35
40
|
end
|
36
41
|
end
|
data/lib/zhima/sign.rb
CHANGED
@@ -6,8 +6,9 @@ module Zhima
|
|
6
6
|
Config.mech_rsa.sign(SIGN_METHOD, str)
|
7
7
|
end
|
8
8
|
|
9
|
-
|
10
|
-
|
9
|
+
def self.verify?(sign, str)
|
10
|
+
decode64_sign = Base64.strict_decode64(sign.to_s)
|
11
|
+
Config.zm_rsa.verify(SIGN_METHOD, decode64_sign, str.force_encoding("utf-8"))
|
11
12
|
end
|
12
13
|
end
|
13
14
|
end
|
data/lib/zhima/version.rb
CHANGED
@@ -0,0 +1,11 @@
|
|
1
|
+
module Zhima
|
2
|
+
# 行业关注名单2.0版
|
3
|
+
class WatchList
|
4
|
+
METHOD = 'zhima.credit.watchlistii.get'
|
5
|
+
|
6
|
+
# https://b.zmxy.com.cn/technology/openDoc.htm?relInfo=zhima.credit.watchlistii.get@1.0@1.0&relType=API_DOC&LEFT_MENU_MODE=null
|
7
|
+
def self.get(params, sys_options = {})
|
8
|
+
Request.new(params, sys_options.merge(method: METHOD)).execute
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
data/lib/zhima.rb
CHANGED
data/zhima.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["zhchsf@gmail.com"]
|
11
11
|
|
12
12
|
spec.summary = %q{芝麻信用}
|
13
|
-
spec.description = %q{芝麻信用}
|
13
|
+
spec.description = %q{芝麻信用 非官方ruby sdk}
|
14
14
|
spec.homepage = "https://github.com/zhchsf/zhima"
|
15
15
|
spec.license = "MIT"
|
16
16
|
|
@@ -32,4 +32,5 @@ Gem::Specification.new do |spec|
|
|
32
32
|
spec.add_development_dependency "bundler", "~> 1.12"
|
33
33
|
spec.add_development_dependency "rake", "~> 10.0"
|
34
34
|
spec.add_development_dependency "rspec", "~> 3.0"
|
35
|
+
spec.add_development_dependency "webmock", "~> 2.0"
|
35
36
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zhima
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sam
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-11-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -66,7 +66,21 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '3.0'
|
69
|
-
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: webmock
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '2.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '2.0'
|
83
|
+
description: "芝麻信用 非官方ruby sdk"
|
70
84
|
email:
|
71
85
|
- zhchsf@gmail.com
|
72
86
|
executables: []
|
@@ -92,6 +106,7 @@ files:
|
|
92
106
|
- lib/zhima/sign.rb
|
93
107
|
- lib/zhima/util.rb
|
94
108
|
- lib/zhima/version.rb
|
109
|
+
- lib/zhima/watch_list.rb
|
95
110
|
- zhima.gemspec
|
96
111
|
homepage: https://github.com/zhchsf/zhima
|
97
112
|
licenses:
|