fadada 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 02debfe884b15344e0ad8038653660112430aa53fd0c99668bd3966841d3ac7a
4
- data.tar.gz: 20e4f68966bdda8685448ea2916669c3967865820853cf5f8f8d0d7573705692
3
+ metadata.gz: 30a63692b47313b4aa60e29f7c426a45f9291e135fa32253da2ba5eff2e6e1e1
4
+ data.tar.gz: 73b3f16beaf6288da06696d12059dd6b43f1e84aac1ab6926f1578393ca92a35
5
5
  SHA512:
6
- metadata.gz: 10203be71eec6e17d9c5df6bb9846d0db17d60a870263348912ca4ef7366b27a4e0811fa838aa400b402884fba9531853a886ccd4a516a2e5d8f0b5a8c603e84
7
- data.tar.gz: 8e1e67dc0724f4f981f6e645c2c8dccf754d63c71e4e0a7b5a9f33caf436166c1e05734374a1e05eb789a6c6d967a7ee3e1a8dde47b835111f12165088bdea93
6
+ metadata.gz: b9f8fe4d6885ff2a004e2a8ae370fc36353c850540dd8d05a651945e04ba9a01fdca70ffcafa97ab0f92902bac51775b855f6d597ba284ba47bf09b45901c025
7
+ data.tar.gz: 2d89c51ce12a31869a846146918785406dec6e02ce82d53d73c65a68ac7ab262d0a61c9a170952fe45fafceb06a00efad4d10a5bb833aa0f6c9e39996509b01f
@@ -1,5 +1,6 @@
1
1
  require "fadada/version"
2
2
  require "fadada/configuration"
3
+ require "fadada/digest"
3
4
  require "fadada/http_client"
4
5
 
5
6
  # resources
@@ -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
@@ -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: digest(_timestamp, options)
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
@@ -1,3 +1,3 @@
1
1
  module Fadada
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
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.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-19 00:00:00.000000000 Z
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