mini_program 0.9.0 → 1.0.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 +8 -8
- data/app/controllers/mini_program/application_controller.rb +4 -1
- data/app/controllers/mini_program/wechat_controller.rb +8 -4
- data/lib/application_controller_ext.rb +13 -2
- data/lib/mini_program/client.rb +13 -13
- data/lib/mini_program/user.rb +5 -3
- data/lib/mini_program/version.rb +1 -1
- data/lib/service_result.rb +3 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f2634f717dcf73780aefbd8a0a77ecbde8bc83e999ba37629456162497627a24
|
4
|
+
data.tar.gz: 980030d77aaaff28d2dce0e6755e03ccf6a994d341bae1b154a10fa1ac5e5507
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c770292107dd2f0a48b0b99f185aef1fe92d5e9d6a7ae86c377006dcd89be7b335c4c25e07507bd9c311275d9383ef57a15c0bf76365fe1b6d53c7db2b0b300
|
7
|
+
data.tar.gz: aafe64599c60eed573e048ab50035fcb1ec00458cf6d0d9eded8514c8087eaac490be82fb932e17aa2e17b81ab9a66773a98507e69ca83b7f6ca2a18158dae96
|
data/README.md
CHANGED
@@ -32,7 +32,7 @@ mp = MiniProgram::Client.new
|
|
32
32
|
# code 是在小程序端调用 wx.login 拿到的
|
33
33
|
result = mp.login(code)
|
34
34
|
if result.success?
|
35
|
-
|
35
|
+
openid = result.data[:openid]
|
36
36
|
session_key = result.data[:session_key]
|
37
37
|
end
|
38
38
|
```
|
@@ -71,11 +71,11 @@ end
|
|
71
71
|
# page: "/pages/index/index"
|
72
72
|
# data:
|
73
73
|
# thing2:
|
74
|
-
#
|
75
|
-
#
|
76
|
-
#
|
77
|
-
#
|
78
|
-
#
|
74
|
+
# value: "%{title}"
|
75
|
+
# phrase4:
|
76
|
+
# value: "%{state}"
|
77
|
+
# thing1:
|
78
|
+
# value: "%{detail}"
|
79
79
|
|
80
80
|
msg = MiniProgram::Msg.new(:progress, {
|
81
81
|
title: "测试",
|
@@ -83,12 +83,12 @@ msg = MiniProgram::Msg.new(:progress, {
|
|
83
83
|
detail: "测试已完成"
|
84
84
|
})
|
85
85
|
|
86
|
-
# send_to 的参数可以是 openid(字符串),或者是带有
|
86
|
+
# send_to 的参数可以是 openid(字符串),或者是带有 openid 方法的对象,返回 MiniProgram::ServiceResult
|
87
87
|
result = msg.send_to("ogT7J5YddGnll-ippRvJq62Nv5W0")
|
88
88
|
|
89
89
|
# or
|
90
90
|
user = User.first
|
91
|
-
user.
|
91
|
+
user.openid # => ogT7J5YddGnll-ippRvJq62Nv5W0
|
92
92
|
result = msg.send_to(user)
|
93
93
|
|
94
94
|
if result.success?
|
@@ -2,18 +2,22 @@ require_dependency "mini_program/application_controller"
|
|
2
2
|
|
3
3
|
module MiniProgram
|
4
4
|
class WechatController < ApplicationController
|
5
|
-
skip_forgery_protection
|
5
|
+
skip_forgery_protection if respond_to? :skip_forgery_protection
|
6
6
|
|
7
7
|
# POST /wechat/login
|
8
8
|
def login
|
9
9
|
result = MiniProgram::Client.new.login(params["code"])
|
10
10
|
|
11
11
|
if result.success?
|
12
|
-
cookies.signed[:
|
12
|
+
cookies.signed[:openid] = result.data["openid"]
|
13
13
|
cookies.signed[:session_key] = result.data["session_key"]
|
14
|
+
cookies.signed[:options] = params[:options].permit!
|
15
|
+
|
16
|
+
after_mp_login if respond_to? :after_mp_login
|
17
|
+
|
14
18
|
render json: current_mp_user
|
15
19
|
else
|
16
|
-
render json: {
|
20
|
+
render json: { error: result.error }
|
17
21
|
end
|
18
22
|
end
|
19
23
|
|
@@ -27,7 +31,7 @@ module MiniProgram
|
|
27
31
|
|
28
32
|
render json: result.data
|
29
33
|
else
|
30
|
-
render json: {
|
34
|
+
render json: { error: result.error }
|
31
35
|
end
|
32
36
|
end
|
33
37
|
end
|
@@ -1,10 +1,21 @@
|
|
1
1
|
|
2
2
|
|
3
|
-
ActionController::Base.class_eval do
|
3
|
+
ActionController::Base.class_eval do
|
4
4
|
def current_mp_user
|
5
5
|
MiniProgram::User.new(open_id: cookies.signed[:open_id],
|
6
6
|
nickname: cookies.signed[:nickname],
|
7
7
|
phone_num: cookies.signed[:phone_num],
|
8
|
-
session_key: cookies.signed[:session_key]
|
8
|
+
session_key: cookies.signed[:session_key],
|
9
|
+
options: cookies.signed[:options])
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
ActionController::API.class_eval do
|
14
|
+
def current_mp_user
|
15
|
+
MiniProgram::User.new(open_id: cookies.signed[:open_id],
|
16
|
+
nickname: cookies.signed[:nickname],
|
17
|
+
phone_num: cookies.signed[:phone_num],
|
18
|
+
session_key: cookies.signed[:session_key],
|
19
|
+
options: cookies.signed[:options])
|
9
20
|
end
|
10
21
|
end
|
data/lib/mini_program/client.rb
CHANGED
@@ -58,7 +58,7 @@ module MiniProgram
|
|
58
58
|
api: #{api}
|
59
59
|
error: #{result}
|
60
60
|
ERROR
|
61
|
-
return MiniProgram::ServiceResult.new(success: false,
|
61
|
+
return MiniProgram::ServiceResult.new(success: false, error: result, message: result["errmsg"])
|
62
62
|
end
|
63
63
|
|
64
64
|
MiniProgram::ServiceResult.new(success: true, data: result)
|
@@ -80,13 +80,13 @@ module MiniProgram
|
|
80
80
|
|
81
81
|
result = JSON.parse(response)
|
82
82
|
|
83
|
-
if result["errcode"].to_s != "0"
|
83
|
+
if result["errcode"] && result["errcode"].to_s != "0"
|
84
84
|
logger.error <<~ERROR
|
85
85
|
Get session key failed.
|
86
86
|
api: #{api}
|
87
87
|
result: #{result}
|
88
88
|
ERROR
|
89
|
-
return MiniProgram::ServiceResult.new(
|
89
|
+
return MiniProgram::ServiceResult.new(error: result, message: result["errmsg"])
|
90
90
|
end
|
91
91
|
|
92
92
|
MiniProgram::ServiceResult.new(success: true, data: result)
|
@@ -94,11 +94,11 @@ module MiniProgram
|
|
94
94
|
|
95
95
|
# 发送订阅消息
|
96
96
|
# @param [MiniProgram::Msg] msg
|
97
|
-
# @param [String] to 用户的
|
97
|
+
# @param [String] to 用户的openid
|
98
98
|
def send_msg(msg, to: )
|
99
|
-
|
99
|
+
openid = to.try(:openid) || to
|
100
100
|
|
101
|
-
payload = msg.as_json.merge!(touser:
|
101
|
+
payload = msg.as_json.merge!(touser: openid)
|
102
102
|
|
103
103
|
# 获取 access_token
|
104
104
|
get_token_result = get_access_token
|
@@ -111,7 +111,7 @@ module MiniProgram
|
|
111
111
|
|
112
112
|
if result["errcode"].to_s != "0"
|
113
113
|
msg_logger.error {"{params: #{payload}, response: #{result}}"}
|
114
|
-
return MiniProgram::ServiceResult.new(success: false,
|
114
|
+
return MiniProgram::ServiceResult.new(success: false, error: result["errmsg"])
|
115
115
|
end
|
116
116
|
|
117
117
|
msg_logger.info {"{params: #{payload}, response: #{result}}"}
|
@@ -123,7 +123,7 @@ module MiniProgram
|
|
123
123
|
# 现在小程序的模板消息功能关闭了,就只剩下发送模板消息到公众号这个功能了
|
124
124
|
#
|
125
125
|
def send_uniform_msg(msg, to: )
|
126
|
-
|
126
|
+
openid = to.try(:openid) || to
|
127
127
|
|
128
128
|
payload = msg.as_json
|
129
129
|
|
@@ -134,13 +134,13 @@ module MiniProgram
|
|
134
134
|
|
135
135
|
api = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token=#{get_token_result["access_token"]}"
|
136
136
|
result = post(api, {
|
137
|
-
touser:
|
137
|
+
touser: openid,
|
138
138
|
mp_template_msg: payload
|
139
139
|
})
|
140
140
|
|
141
141
|
if result["errcode"].to_s != "0"
|
142
142
|
msg_logger.error {"{params: #{payload}, response: #{result}}"}
|
143
|
-
return MiniProgram::ServiceResult.new(success: false,
|
143
|
+
return MiniProgram::ServiceResult.new(success: false, error: result["errmsg"])
|
144
144
|
end
|
145
145
|
|
146
146
|
msg_logger.info { "{params: #{payload}, response: #{result}}"}
|
@@ -152,7 +152,7 @@ module MiniProgram
|
|
152
152
|
login_result = login(code)
|
153
153
|
return login_result if login_result.failure?
|
154
154
|
|
155
|
-
|
155
|
+
openid = login_result.data[:openid]
|
156
156
|
session_key = login_result.data[:session_key]
|
157
157
|
|
158
158
|
data = decrypt_phone_data(encrypted_data, iv, session_key)
|
@@ -162,7 +162,7 @@ module MiniProgram
|
|
162
162
|
MiniProgram::ServiceResult.new(
|
163
163
|
success: true,
|
164
164
|
data: {
|
165
|
-
|
165
|
+
openid: openid,
|
166
166
|
phone_num: phone_num
|
167
167
|
})
|
168
168
|
end
|
@@ -234,4 +234,4 @@ module MiniProgram
|
|
234
234
|
end
|
235
235
|
|
236
236
|
end
|
237
|
-
end
|
237
|
+
end
|
data/lib/mini_program/user.rb
CHANGED
@@ -1,14 +1,16 @@
|
|
1
1
|
|
2
2
|
class MiniProgram::User
|
3
|
-
attr_accessor :open_id, :nickname, :phone_num, :session_key
|
4
|
-
|
3
|
+
attr_accessor :open_id, :nickname, :phone_num, :session_key, :options
|
4
|
+
|
5
5
|
def initialize(open_id: :blank_open_id,
|
6
6
|
nickname: :blank_nickname,
|
7
7
|
phone_num: :blank_phone_num,
|
8
|
-
session_key: :blank_session_key
|
8
|
+
session_key: :blank_session_key,
|
9
|
+
options: nil)
|
9
10
|
@open_id = open_id
|
10
11
|
@nickname = nickname
|
11
12
|
@phone_num = phone_num
|
12
13
|
@session_key = session_key
|
14
|
+
@options = options
|
13
15
|
end
|
14
16
|
end
|
data/lib/mini_program/version.rb
CHANGED
data/lib/service_result.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module MiniProgram
|
2
2
|
class ServiceResult
|
3
3
|
attr_accessor :success,
|
4
|
-
:
|
4
|
+
:error,
|
5
5
|
:data,
|
6
6
|
:message,
|
7
7
|
:message_type
|
@@ -9,13 +9,13 @@ module MiniProgram
|
|
9
9
|
delegate :[], :[]=, to: :data
|
10
10
|
|
11
11
|
def initialize(success: false,
|
12
|
-
|
12
|
+
error: nil,
|
13
13
|
message: nil,
|
14
14
|
message_type: nil,
|
15
15
|
data: {})
|
16
16
|
self.success = success
|
17
17
|
self.data = (data.presence || {}).with_indifferent_access
|
18
|
-
self.
|
18
|
+
self.error = error
|
19
19
|
self.message = message
|
20
20
|
self.message_type = message_type
|
21
21
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mini_program
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ian
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-11-
|
11
|
+
date: 2021-11-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|