third_party_wxa 0.1.3 → 0.1.4
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/Gemfile.lock +3 -1
- data/lib/third_party_wxa/api/authorize.rb +6 -4
- data/lib/third_party_wxa/api/member.rb +8 -8
- data/lib/third_party_wxa/api/proxy.rb +14 -14
- data/lib/third_party_wxa/api/qrcode.rb +4 -4
- data/lib/third_party_wxa/config.rb +29 -0
- data/lib/third_party_wxa/plugin.rb +38 -28
- data/lib/third_party_wxa/version.rb +1 -1
- data/lib/third_party_wxa.rb +3 -1
- data/third_party_wxa.gemspec +1 -0
- metadata +16 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 280928b0721a0434248e99da225d36754c1ccfa37871ceff0da650149aeae8a4
|
4
|
+
data.tar.gz: dd5825c6eef9f208ef353abc6b2375c7c93af1875654775f3aa09cedf97521c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ccee3ffb383e9ae8325ef9162a872d129d3cea7a95c885eef036ff5b49d31167832c5265e35c5f1b7aaa4b7c4e7910474b88b4ef5205c02542d3d304190d949
|
7
|
+
data.tar.gz: cc7b50cf0f3c00f56f1069d67d63aa4a26b51f1a2876be8cbe49499103efbe59403254fe349ae3bf23ae6b34ff6c08e4de3a7a129ea4ffd24950d7a8ea575767
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
third_party_wxa (0.1.
|
4
|
+
third_party_wxa (0.1.4)
|
5
5
|
json (>= 1.8.6)
|
6
|
+
redis
|
6
7
|
rest-client (>= 2.0)
|
7
8
|
|
8
9
|
GEM
|
@@ -18,6 +19,7 @@ GEM
|
|
18
19
|
mime-types-data (3.2018.0812)
|
19
20
|
netrc (0.11.0)
|
20
21
|
rake (10.4.2)
|
22
|
+
redis (4.1.2)
|
21
23
|
rest-client (2.0.2)
|
22
24
|
http-cookie (>= 1.0.2, < 2.0)
|
23
25
|
mime-types (>= 1.16, < 4.0)
|
@@ -1,8 +1,10 @@
|
|
1
1
|
module ThirdPartyWxa
|
2
2
|
module Api
|
3
3
|
module Authorize
|
4
|
-
|
5
|
-
|
4
|
+
|
5
|
+
def componentloginpage_url redirect, sign, type=2
|
6
|
+
redirect_uri = "#{redirect}?sign=#{sign}"
|
7
|
+
"https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid=#{appid}&pre_auth_code=#{get_pre_auth_code}&auth_type=#{type}&redirect_uri=#{redirect_uri}"
|
6
8
|
end
|
7
9
|
|
8
10
|
def bindcomponent redirect, type=2
|
@@ -19,8 +21,8 @@ module ThirdPartyWxa
|
|
19
21
|
|
20
22
|
params = {
|
21
23
|
"component_appid": appid,
|
22
|
-
"authorizer_appid":
|
23
|
-
"authorizer_refresh_token":
|
24
|
+
"authorizer_appid": wx_redis.hget(sign, 'appid'),
|
25
|
+
"authorizer_refresh_token": wx_redis.hget(sign, 'refresh_token'),
|
24
26
|
}
|
25
27
|
http_post 'cgi-bin', 'component/api_authorizer_token', params
|
26
28
|
end
|
@@ -4,25 +4,25 @@ module ThirdPartyWxa
|
|
4
4
|
|
5
5
|
# 1、绑定微信用户为小程序体验者
|
6
6
|
# https://api.weixin.qq.com/wxa/bind_tester?access_token=TOKEN
|
7
|
-
def bind_tester test_id
|
8
|
-
http_post_with_token 'wxa', 'bind_tester', {wechatid: test_id}
|
7
|
+
def bind_tester sign, test_id
|
8
|
+
http_post_with_token sign, 'wxa', 'bind_tester', {wechatid: test_id}
|
9
9
|
end
|
10
10
|
|
11
11
|
# 2、解除绑定小程序的体验者
|
12
12
|
# https://api.weixin.qq.com/wxa/unbind_tester?access_token=TOKEN
|
13
|
-
def unbind_tester test_id
|
14
|
-
http_post_with_token 'wxa', 'unbind_tester', {wechatid: test_id}
|
13
|
+
def unbind_tester sign, test_id
|
14
|
+
http_post_with_token sign, 'wxa', 'unbind_tester', {wechatid: test_id}
|
15
15
|
end
|
16
16
|
|
17
17
|
# 3. 获取体验者列表
|
18
18
|
# https://api.weixin.qq.com/wxa/memberauth?access_token=TOKEN
|
19
|
-
def get_experiencer
|
20
|
-
http_post_with_token 'wxa', 'memberauth', {action:"get_experiencer"}
|
19
|
+
def get_experiencer sign
|
20
|
+
http_post_with_token sign, 'wxa', 'memberauth', {action:"get_experiencer"}
|
21
21
|
end
|
22
22
|
|
23
23
|
# 发送消息
|
24
|
-
def send_message query_auth_code
|
25
|
-
http_post_with_token 'cgi-bin', 'memberauth', {"touser": "OPENID", "msgtype": "text", "text": {"content":"#{query_auth_code}_from_api"}}
|
24
|
+
def send_message sign, query_auth_code
|
25
|
+
http_post_with_token sign, 'cgi-bin', 'memberauth', {"touser": "OPENID", "msgtype": "text", "text": {"content":"#{query_auth_code}_from_api"}}
|
26
26
|
end
|
27
27
|
|
28
28
|
|
@@ -4,44 +4,44 @@ module ThirdPartyWxa
|
|
4
4
|
|
5
5
|
# 获取授权小程序帐号的可选类目
|
6
6
|
# https://api.weixin.qq.com/wxa/get_category?access_token=TOKEN
|
7
|
-
def get_category
|
8
|
-
http_get_with_token 'wxa', 'get_category'
|
7
|
+
def get_category sign
|
8
|
+
http_get_with_token sign, 'wxa', 'get_category'
|
9
9
|
end
|
10
10
|
|
11
11
|
# 获取小程序的第三方提交代码的页面配置(仅供第三方开发者代小程序调用)
|
12
12
|
# https://api.weixin.qq.com/wxa/get_page?access_token=TOKEN
|
13
|
-
def get_page
|
14
|
-
http_get_with_token 'wxa', 'get_page'
|
13
|
+
def get_page sign
|
14
|
+
http_get_with_token 'sign', 'wxa', 'get_page'
|
15
15
|
end
|
16
16
|
|
17
17
|
# 将第三方提交的代码包提交审核(仅供第三方开发者代小程序调用
|
18
18
|
# https://api.weixin.qq.com/wxa/submit_audit?access_token=TOKEN
|
19
|
-
def submit_audit config_json
|
20
|
-
http_post_with_token 'wxa', 'submit_audit', config_json
|
19
|
+
def submit_audit sign, config_json
|
20
|
+
http_post_with_token 'sign', 'wxa', 'submit_audit', config_json
|
21
21
|
end
|
22
22
|
|
23
23
|
# 7、查询某个指定版本的审核状态(仅供第三方代小程序调用
|
24
24
|
# https://api.weixin.qq.com/wxa/get_auditstatus?access_token=TOKEN
|
25
|
-
def get_auditstatus auditid
|
26
|
-
http_post_with_token 'wxa', 'get_auditstatus', {auditid: auditid}
|
25
|
+
def get_auditstatus sign, auditid
|
26
|
+
http_post_with_token sign, 'wxa', 'get_auditstatus', {auditid: auditid}
|
27
27
|
end
|
28
28
|
|
29
29
|
# 8、查询最新一次提交的审核状态(仅供第三方代小程序调用)
|
30
30
|
# https://api.weixin.qq.com/wxa/get_latest_auditstatus?access_token=TOKEN
|
31
|
-
def get_latest_auditstatus
|
32
|
-
http_get_with_token 'wxa', 'get_latest_auditstatus'
|
31
|
+
def get_latest_auditstatus sign
|
32
|
+
http_get_with_token 'sign', 'wxa', 'get_latest_auditstatus'
|
33
33
|
end
|
34
34
|
|
35
35
|
# 9、发布已通过审核的小程序(仅供第三方代小程序调用)
|
36
36
|
# https://api.weixin.qq.com/wxa/release?access_token=TOKEN
|
37
|
-
def release
|
38
|
-
http_post_with_token 'wxa', 'release'
|
37
|
+
def release sign
|
38
|
+
http_post_with_token sign, 'wxa', 'release'
|
39
39
|
end
|
40
40
|
|
41
41
|
# 10、修改小程序线上代码的可见状态(仅供第三方代小程序调用)close为不可见,open为可见
|
42
42
|
# https://api.weixin.qq.com/wxa/change_visitstatus?access_token=TOKEN
|
43
|
-
def change_visitstatus action
|
44
|
-
http_post_with_token 'wxa', 'change_visitstatus', {action: action}
|
43
|
+
def change_visitstatus sign, action
|
44
|
+
http_post_with_token sign, 'wxa', 'change_visitstatus', {action: action}
|
45
45
|
end
|
46
46
|
|
47
47
|
end
|
@@ -5,17 +5,17 @@ module ThirdPartyWxa
|
|
5
5
|
# 获取小程序码
|
6
6
|
# 接口A: 适用于需要的码数量较少的业务场景 接口地址:
|
7
7
|
# https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN
|
8
|
-
def get_wxa_code(path , width = 430 )
|
8
|
+
def get_wxa_code(sign, path , width = 430 )
|
9
9
|
params
|
10
|
-
http_post_with_token 'wxa', 'getwxacode', {path: path, width: width}
|
10
|
+
http_post_with_token sign, 'wxa', 'getwxacode', {path: path, width: width}
|
11
11
|
end
|
12
12
|
|
13
13
|
# 获取体验小程序的体验二维码
|
14
14
|
# https://api.weixin.qq.com/wxa/ get_qrcode?access_token=TOKEN&path=page%2Findex%3Faction%3D1
|
15
|
-
def get_qrcode(path = nil
|
15
|
+
def get_qrcode(sign, path = nil)
|
16
16
|
params = {}
|
17
17
|
params.merge!({path: path}) if path.present?
|
18
|
-
http_get_with_token 'wxa', 'get_qrcode', params
|
18
|
+
http_get_with_token sign, 'wxa', 'get_qrcode', params
|
19
19
|
end
|
20
20
|
|
21
21
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module ThirdPartyWxa
|
2
|
+
|
3
|
+
class << self
|
4
|
+
|
5
|
+
attr_accessor :config
|
6
|
+
|
7
|
+
def configure
|
8
|
+
yield self.config ||= Config.new
|
9
|
+
end
|
10
|
+
|
11
|
+
def wx_redis
|
12
|
+
config.redis
|
13
|
+
end
|
14
|
+
|
15
|
+
def appid
|
16
|
+
config.appid
|
17
|
+
end
|
18
|
+
|
19
|
+
def appsecret
|
20
|
+
config.appsecret
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
class Config
|
26
|
+
attr_accessor :redis, :appid, :appsecret
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -12,12 +12,13 @@ module ThirdPartyWxa
|
|
12
12
|
attr_accessor :component_verify_ticket, :ticket_expire_at
|
13
13
|
attr_accessor :component_access_token, :component_expire_at #2小时
|
14
14
|
attr_accessor :pre_auth_code, :pre_expire_at #10分钟
|
15
|
-
attr_accessor :authorizer_appid
|
16
|
-
attr_accessor :authorizer_access_token, :authorizer_refresh_token, :authorizer_expire_at
|
15
|
+
# attr_accessor :authorizer_appid
|
16
|
+
# attr_accessor :authorizer_access_token, :authorizer_refresh_token, :authorizer_expire_at
|
17
|
+
# attr_accessor :authorizer
|
17
18
|
|
18
19
|
def initialize
|
19
|
-
@appid =
|
20
|
-
@appsecret =
|
20
|
+
@appid = ThirdPartyWxa.appid
|
21
|
+
@appsecret = ThirdPartyWxa.appsecret
|
21
22
|
end
|
22
23
|
|
23
24
|
def set_tickect ticket, expire_in
|
@@ -31,7 +32,7 @@ module ThirdPartyWxa
|
|
31
32
|
@component_expire_at <= Time.now.to_i
|
32
33
|
end
|
33
34
|
|
34
|
-
def get_component_access_token
|
35
|
+
def get_component_access_token
|
35
36
|
set_component_access_token if !component_access_token_valid?
|
36
37
|
@component_access_token
|
37
38
|
end
|
@@ -60,37 +61,42 @@ module ThirdPartyWxa
|
|
60
61
|
self
|
61
62
|
end
|
62
63
|
|
63
|
-
def authorizer_access_token_valid?
|
64
|
-
|
65
|
-
|
64
|
+
def authorizer_access_token_valid? sign
|
65
|
+
expire_at = wx_redis.hget sign, 'expire_at'
|
66
|
+
return false if wx_redis.hget(sign, 'access_token').blank? || expire_at.blank?
|
67
|
+
expire_at <= Time.now.to_i
|
66
68
|
end
|
67
69
|
|
68
|
-
def get_authorizer_access_token
|
70
|
+
def get_authorizer_access_token sign
|
69
71
|
if !authorizer_access_token_valid? # raise exception?
|
70
|
-
if
|
72
|
+
if wx_redis.hget(sign, 'refresh_token').present?
|
71
73
|
refresh_authorizer_access_token
|
72
74
|
else
|
73
|
-
|
75
|
+
raise 'refresh token is missing, please authorize again'
|
74
76
|
end
|
75
77
|
end
|
76
|
-
|
78
|
+
wx_redis.hget(sign, 'access_token')
|
77
79
|
end
|
78
80
|
|
79
|
-
def set_authorizer_access_token code
|
81
|
+
def set_authorizer_access_token sign, code
|
80
82
|
res = authorizer_access_token_api code
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
83
|
+
authorizer_access_token = res['authorization_info']['authorizer_access_token']
|
84
|
+
authorizer_appid = res['authorization_info']['authorizer_appid']
|
85
|
+
authorizer_expire_at = ThirdPartyWxa.cal_expire_at res['authorization_info']['expire_in']
|
86
|
+
authorizer_refresh_token = res['authorization_info']['authorizer_refresh_token']
|
87
|
+
wx_redis.hset sign, 'access_token', authorizer_access_token, 'appid', authorizer_appid,
|
88
|
+
'expire_at', authorizer_expire_at, 'refresh_token', authorizer_refresh_token
|
89
|
+
authorizer_access_token
|
86
90
|
end
|
87
91
|
|
88
|
-
def refresh_authorizer_access_token
|
89
|
-
res = authorizer_access_token_fresh
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
92
|
+
def refresh_authorizer_access_token sign
|
93
|
+
res = authorizer_access_token_fresh sign
|
94
|
+
authorizer_access_token = res['authorizer_access_token']
|
95
|
+
authorizer_expire_at = ThirdPartyWxa.cal_expire_at res['expires_in']
|
96
|
+
authorizer_refresh_token = res['authorizer_refresh_token']
|
97
|
+
wx_redis.hset sign, 'access_token', authorizer_access_token,
|
98
|
+
'expire_at', authorizer_expire_at, 'refresh_token', authorizer_refresh_token
|
99
|
+
authorizer_access_token
|
94
100
|
end
|
95
101
|
|
96
102
|
def http_get scope, url, url_params={}
|
@@ -103,12 +109,12 @@ module ThirdPartyWxa
|
|
103
109
|
ThirdPartyWxa.http_post_without_component_access_token scope, url, post_params, url_params
|
104
110
|
end
|
105
111
|
|
106
|
-
def http_get_with_token scope, url, url_params={}
|
112
|
+
def http_get_with_token sign, scope, url, url_params={}
|
107
113
|
url_params.merge! auth_token_params
|
108
114
|
ThirdPartyWxa.http_get_without_component_access_token scope, url, url_params
|
109
115
|
end
|
110
116
|
|
111
|
-
def http_post_with_token scope, url, post_params={}, url_params={}
|
117
|
+
def http_post_with_token sign, scope, url, post_params={}, url_params={}
|
112
118
|
url_params.merge! auth_token_params
|
113
119
|
ThirdPartyWxa.http_post_without_component_access_token scope, url, post_params, url_params
|
114
120
|
end
|
@@ -119,8 +125,12 @@ module ThirdPartyWxa
|
|
119
125
|
{access_token: get_component_access_token}
|
120
126
|
end
|
121
127
|
|
122
|
-
def auth_token_params
|
123
|
-
{access_token: get_authorizer_access_token}
|
128
|
+
def auth_token_params sign
|
129
|
+
{access_token: get_authorizer_access_token(sign)}
|
130
|
+
end
|
131
|
+
|
132
|
+
def wx_redis
|
133
|
+
ThirdPartyWxa.wx_redis
|
124
134
|
end
|
125
135
|
|
126
136
|
|
data/lib/third_party_wxa.rb
CHANGED
data/third_party_wxa.gemspec
CHANGED
@@ -37,6 +37,7 @@ Gem::Specification.new do |spec|
|
|
37
37
|
|
38
38
|
spec.add_dependency 'rest-client', ['>= 2.0']
|
39
39
|
spec.add_dependency 'json', ['>=1.8.6']
|
40
|
+
spec.add_dependency 'redis'
|
40
41
|
|
41
42
|
spec.add_development_dependency "bundler", "~> 2.0"
|
42
43
|
spec.add_development_dependency "rake", "~> 10.0"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: third_party_wxa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- hzy
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 1.8.6
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: redis
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: bundler
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -88,6 +102,7 @@ files:
|
|
88
102
|
- lib/third_party_wxa/api/qrcode.rb
|
89
103
|
- lib/third_party_wxa/api/template.rb
|
90
104
|
- lib/third_party_wxa/api/token.rb
|
105
|
+
- lib/third_party_wxa/config.rb
|
91
106
|
- lib/third_party_wxa/plugin.rb
|
92
107
|
- lib/third_party_wxa/version.rb
|
93
108
|
- third_party_wxa.gemspec
|