fadada 0.1.1 → 0.1.2
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/lib/fadada.rb +1 -0
- data/lib/fadada/digest.rb +40 -0
- data/lib/fadada/http_client.rb +1 -27
- data/lib/fadada/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 30a63692b47313b4aa60e29f7c426a45f9291e135fa32253da2ba5eff2e6e1e1
|
4
|
+
data.tar.gz: 73b3f16beaf6288da06696d12059dd6b43f1e84aac1ab6926f1578393ca92a35
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b9f8fe4d6885ff2a004e2a8ae370fc36353c850540dd8d05a651945e04ba9a01fdca70ffcafa97ab0f92902bac51775b855f6d597ba284ba47bf09b45901c025
|
7
|
+
data.tar.gz: 2d89c51ce12a31869a846146918785406dec6e02ce82d53d73c65a68ac7ab262d0a61c9a170952fe45fafceb06a00efad4d10a5bb833aa0f6c9e39996509b01f
|
data/lib/fadada.rb
CHANGED
@@ -0,0 +1,40 @@
|
|
1
|
+
# 法大大摘要相关
|
2
|
+
module Fadada
|
3
|
+
class Digest
|
4
|
+
# 生成摘要
|
5
|
+
# Base64(SHA1(app_id + MD5(timestamp + 参数集合1) + SHA1(app_secret + 参数集合) + 参数集合2 ))
|
6
|
+
# 示例:
|
7
|
+
# options = {
|
8
|
+
# _params: { a: 1, b: 2 },
|
9
|
+
# _md5_params: { a: 1, b: 2 },
|
10
|
+
# _extend_params: { a: 1, b: 2 }
|
11
|
+
# }
|
12
|
+
#
|
13
|
+
def self.generate(timestamp, options = {})
|
14
|
+
_biz_data = Fadada::config.app_secret + params_transform(options[:_params])
|
15
|
+
_sha1_biz_data = ::Digest::SHA1.hexdigest(_biz_data).upcase
|
16
|
+
_md5 = ::Digest::MD5.hexdigest(params_transform(options[:_md5_params]) + timestamp).upcase
|
17
|
+
_extend = params_transform(options[:_extend_params])
|
18
|
+
_data = ::Digest::SHA1.hexdigest(::Fadada::config.app_id + _md5 + _sha1_biz_data + _extend).upcase
|
19
|
+
Base64.strict_encode64(_data)
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
# 验证摘要
|
24
|
+
def self.verify?(params = {})
|
25
|
+
options = params.transform_keys(&:to_sym)
|
26
|
+
_timestamp = options[:timestamp]
|
27
|
+
digest_params = { _params: { transaction_id: options[:transaction_id] } }
|
28
|
+
options[:msg_digest].to_s == generate(_timestamp, digest_params)
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
# 处理参数
|
34
|
+
# 需要排序后使用
|
35
|
+
def self.params_transform(options)
|
36
|
+
_options = options || {}
|
37
|
+
_options.delete_if { |key, value| value.blank? }.sort.map { |k,v| v }.join
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/lib/fadada/http_client.rb
CHANGED
@@ -33,12 +33,6 @@ module Fadada
|
|
33
33
|
Fadada::config.server + action
|
34
34
|
end
|
35
35
|
|
36
|
-
# 处理参数
|
37
|
-
def params_transform(options)
|
38
|
-
_options = options || {}
|
39
|
-
_options.delete_if { |key, value| value.blank? }.sort.map { |k,v| v }.join
|
40
|
-
end
|
41
|
-
|
42
36
|
def form_header
|
43
37
|
{ 'Content-Type' => 'application/x-www-form-urlencoded;charset=utf8' }
|
44
38
|
end
|
@@ -50,30 +44,10 @@ module Fadada
|
|
50
44
|
app_id: Fadada::config.app_id,
|
51
45
|
timestamp: _timestamp,
|
52
46
|
v: '2.0',
|
53
|
-
msg_digest:
|
47
|
+
msg_digest: Fadada::Digest.generate(_timestamp, options)
|
54
48
|
}
|
55
49
|
end
|
56
50
|
|
57
|
-
# 摘要计算
|
58
|
-
# Base64(SHA1(app_id + MD5(timestamp + 参数集合1) + SHA1(app_secret + 参数集合) + 参数集合2 ))
|
59
|
-
# 示例:
|
60
|
-
# options = {
|
61
|
-
# _params: { a: 1, b: 2 },
|
62
|
-
# _md5_params: { a: 1, b: 2 },
|
63
|
-
# _extend_params: { a: 1, b: 2 }
|
64
|
-
# }
|
65
|
-
#
|
66
|
-
# params 需要排序后使用
|
67
|
-
#
|
68
|
-
def digest(timestamp, options = {})
|
69
|
-
_biz_data = Fadada::config.app_secret + params_transform(options[:_params])
|
70
|
-
_sha1_biz_data = Digest::SHA1.hexdigest(_biz_data).upcase
|
71
|
-
_md5 = Digest::MD5.hexdigest(params_transform(options[:_md5_params]) + timestamp).upcase
|
72
|
-
_extend = params_transform(options[:_extend_params])
|
73
|
-
_data = Digest::SHA1.hexdigest(::Fadada::config.app_id + _md5 + _sha1_biz_data + _extend).upcase
|
74
|
-
Base64.strict_encode64(_data)
|
75
|
-
end
|
76
|
-
|
77
51
|
# 处理异常
|
78
52
|
def hander_exception(response)
|
79
53
|
code = response['code'].to_s
|
data/lib/fadada/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fadada
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- wangrui
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-06-
|
11
|
+
date: 2019-06-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -81,6 +81,7 @@ files:
|
|
81
81
|
- lib/fadada/certificate.rb
|
82
82
|
- lib/fadada/configuration.rb
|
83
83
|
- lib/fadada/contract.rb
|
84
|
+
- lib/fadada/digest.rb
|
84
85
|
- lib/fadada/http_client.rb
|
85
86
|
- lib/fadada/signature.rb
|
86
87
|
- lib/fadada/version.rb
|