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 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