zhima 0.2.6 → 0.3.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/README.md +31 -2
- data/lib/zhima/ivs.rb +11 -0
- data/lib/zhima/request.rb +36 -0
- data/lib/zhima/score.rb +3 -25
- data/lib/zhima/version.rb +1 -1
- data/lib/zhima.rb +3 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ae4098fe5acc3b45025e6cd8603676362d4c7c3
|
4
|
+
data.tar.gz: b64c2616fa053692d59d8e86a30c3d256e2167e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7c0ed4896d352c4302ca8dbcf640f8fedbf4c2e4123c67d600eaa952cd292196917b1108554ae0d9da5f70141d58fde4084b3da53d758aa8ceabc43f11784f52
|
7
|
+
data.tar.gz: 2602e39b06060ba1d44970b8d9e50ebde5aa63b8e929f542045779ad4acef5e1a6bb7eb8c6c538479ae7ebb17672ec5ffd3c506032de6f97d1db62e72739fdf2
|
data/README.md
CHANGED
@@ -21,8 +21,37 @@ Or install it yourself as:
|
|
21
21
|
$ gem install zhima
|
22
22
|
|
23
23
|
## Usage
|
24
|
+
配置(config/initializers/zhima.rb):
|
25
|
+
```ruby
|
26
|
+
Zhima.configure do |config|
|
27
|
+
config.app_id = 'xxxxxxx' # 应用id
|
28
|
+
config.private_key = private_key # 自己的私钥
|
29
|
+
config.public_key = public_key # 芝麻给的公钥
|
30
|
+
end
|
31
|
+
```
|
32
|
+
|
33
|
+
芝麻信用分,调用方法如下(请自行查阅芝麻文档的业务参数组织params):
|
34
|
+
```ruby
|
35
|
+
# 认证url 业务参数请参考 https://b.zmxy.com.cn/technology/openDoc.htm?id=67
|
36
|
+
Zhima::Score.auth_url(params) # 第二个参数可hash传入芝麻需要的系统参数,不传亦可(下同,省略)
|
37
|
+
|
38
|
+
# 获取芝麻分
|
39
|
+
# 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
|
40
|
+
Zhima::Score.get(params)
|
24
41
|
|
25
|
-
|
42
|
+
# auth_query
|
43
|
+
# https://b.zmxy.com.cn/technology/openDoc.htm?id=453
|
44
|
+
Zhima::Score.auth_query(params)
|
45
|
+
|
46
|
+
# 芝麻callback url中的params参数解密
|
47
|
+
Zhima::Score.param_decrypt(params_str)
|
48
|
+
```
|
49
|
+
|
50
|
+
反欺诈信息验证:
|
51
|
+
```ruby
|
52
|
+
# 参数 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
|
53
|
+
Zhima::Ivs.get(params)
|
54
|
+
```
|
26
55
|
|
27
56
|
## Development
|
28
57
|
|
@@ -32,7 +61,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
32
61
|
|
33
62
|
## Contributing
|
34
63
|
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
64
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/zhchsf/zhima. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
36
65
|
|
37
66
|
|
38
67
|
## License
|
data/lib/zhima/ivs.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
module Zhima
|
2
|
+
# 反欺诈信息验证
|
3
|
+
class Ivs
|
4
|
+
METHOD = 'zhima.credit.ivs.detail.get'
|
5
|
+
|
6
|
+
# 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
|
7
|
+
def self.get(params, sys_options = {})
|
8
|
+
Request.new(params, sys_options.merge(method: METHOD)).execute
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Zhima
|
2
|
+
class Request
|
3
|
+
GATEWAY = 'https://zmopenapi.zmxy.com.cn/openapi.do'
|
4
|
+
SYSTEM_OPTIONS = {charset: 'UTF-8', version: '1.0', channel: 'app'}
|
5
|
+
|
6
|
+
attr_accessor :biz_params, :sys_options
|
7
|
+
|
8
|
+
def initialize(biz_params, sys_options)
|
9
|
+
@biz_params = biz_params
|
10
|
+
@sys_options = SYSTEM_OPTIONS.merge(sys_options)
|
11
|
+
end
|
12
|
+
|
13
|
+
def url
|
14
|
+
params_value, sign = Param.encrypt(biz_params)
|
15
|
+
opts = SYSTEM_OPTIONS.merge(sys_options)
|
16
|
+
.merge(params: params_value, sign: sign, app_id: Config.app_id)
|
17
|
+
query_str = Util.to_query(opts)
|
18
|
+
[GATEWAY, query_str].join('?')
|
19
|
+
end
|
20
|
+
|
21
|
+
def execute
|
22
|
+
response = RestClient.get url
|
23
|
+
parse_response(response.body)
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
# 芝麻返回的json数据解析,结果为真正的业务参数
|
28
|
+
# TODO verify sign
|
29
|
+
def parse_response(response_str)
|
30
|
+
response_hash = JSON.parse(response_str)
|
31
|
+
biz_response = response_hash["biz_response"]
|
32
|
+
biz_response = Param.decrypt(biz_response) if response_hash["encrypted"]
|
33
|
+
JSON.parse(biz_response)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/zhima/score.rb
CHANGED
@@ -2,8 +2,6 @@ require "rest-client"
|
|
2
2
|
|
3
3
|
module Zhima
|
4
4
|
class Score
|
5
|
-
GATEWAY = 'https://zmopenapi.zmxy.com.cn/openapi.do'
|
6
|
-
SYSTEM_OPTIONS = {charset: 'UTF-8', version: '1.0', channel: 'app'}
|
7
5
|
AUTHORIZE_METHOD = 'zhima.auth.info.authorize'
|
8
6
|
SCORE_METHOD = 'zhima.credit.score.get'
|
9
7
|
AUTH_QUERY_METHOD = 'zhima.auth.info.authquery'
|
@@ -11,22 +9,17 @@ module Zhima
|
|
11
9
|
# params参数 请参考 https://b.zmxy.com.cn/technology/openDoc.htm?id=67
|
12
10
|
# 系统参数 SYSTEM_OPTIONS,可自己传入,一般只需要配置channel参数(与auth_code不对应芝麻信用会报错)
|
13
11
|
def self.auth_url(params, sys_options = {})
|
14
|
-
|
12
|
+
Request.new(params, sys_options.merge(method: AUTHORIZE_METHOD)).url
|
15
13
|
end
|
16
14
|
|
17
15
|
# 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
|
18
|
-
# TODO verify sign
|
19
16
|
def self.get(params, sys_options = {})
|
20
|
-
|
21
|
-
response = RestClient.get score_url
|
22
|
-
parse_response(response.body)
|
17
|
+
Request.new(params, sys_options.merge(method: SCORE_METHOD)).execute
|
23
18
|
end
|
24
19
|
|
25
20
|
# https://b.zmxy.com.cn/technology/openDoc.htm?id=453
|
26
21
|
def self.auth_query(params, sys_options = {})
|
27
|
-
|
28
|
-
response = RestClient.get query_url
|
29
|
-
parse_response(response.body)
|
22
|
+
Request.new(params, sys_options.merge(method: AUTH_QUERY_METHOD)).execute
|
30
23
|
end
|
31
24
|
|
32
25
|
# 芝麻callback url中的params参数解密方法
|
@@ -34,20 +27,5 @@ module Zhima
|
|
34
27
|
decrypted_str = Param.decrypt(params_str)
|
35
28
|
URI.decode_www_form(URI.decode URI.escape(decrypted_str)).to_h
|
36
29
|
end
|
37
|
-
|
38
|
-
def self.url_by(params, sys_options)
|
39
|
-
params_value, sign = Param.encrypt(params)
|
40
|
-
opts = SYSTEM_OPTIONS.merge(sys_options)
|
41
|
-
.merge(params: params_value, sign: sign, app_id: Config.app_id)
|
42
|
-
query_str = Util.to_query(opts)
|
43
|
-
[GATEWAY, query_str].join('?')
|
44
|
-
end
|
45
|
-
|
46
|
-
def self.parse_response(response_str)
|
47
|
-
response_hash = JSON.parse(response_str)
|
48
|
-
biz_response = response_hash["biz_response"]
|
49
|
-
biz_response = Param.decrypt(biz_response) if response_hash["encrypted"]
|
50
|
-
JSON.parse(biz_response)
|
51
|
-
end
|
52
30
|
end
|
53
31
|
end
|
data/lib/zhima/version.rb
CHANGED
data/lib/zhima.rb
CHANGED
@@ -11,8 +11,10 @@ module Zhima
|
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
+
require_relative "zhima/config"
|
14
15
|
require_relative "zhima/score"
|
16
|
+
require_relative "zhima/ivs"
|
17
|
+
require_relative "zhima/request"
|
15
18
|
require_relative "zhima/param"
|
16
19
|
require_relative "zhima/sign"
|
17
20
|
require_relative "zhima/util"
|
18
|
-
require_relative "zhima/config"
|
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.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sam
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -85,7 +85,9 @@ files:
|
|
85
85
|
- bin/setup
|
86
86
|
- lib/zhima.rb
|
87
87
|
- lib/zhima/config.rb
|
88
|
+
- lib/zhima/ivs.rb
|
88
89
|
- lib/zhima/param.rb
|
90
|
+
- lib/zhima/request.rb
|
89
91
|
- lib/zhima/score.rb
|
90
92
|
- lib/zhima/sign.rb
|
91
93
|
- lib/zhima/util.rb
|