mini_program 1.1.3 → 1.2.3

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: 296c4dddb41810576f1dd0cedbc9aae7f730b1cf50f52b99fea2bdcdac7b8ba1
4
- data.tar.gz: 89873bf39d9be8ebdc9e33602b6a00773266ba0c15751ae113755e1275719a76
3
+ metadata.gz: c820c7145603d0921958756bc171bf3f7fdf61d381846e762dd348c8c09e9e52
4
+ data.tar.gz: be8fd4bffb209a7dbf2b756398cacae660a01baa97ba70a648faf03177069d14
5
5
  SHA512:
6
- metadata.gz: 475db5f1df160f23df1e8b5adbfbe34b84033f86dc55eb44107c99d0167ef0e036d5a994b67bd47e981de8167deb7c0ecc1e82cb6446d01101ce2144e17d7496
7
- data.tar.gz: faa337e8129bbce833f0f4ffd5dea933f30d402618892579de31481c100df7f53ecc2c3d5671b69bdf386c075e948bfd5e8ad3b705304c58d327825b6812d272
6
+ metadata.gz: 03617d731ece40bc764c8c49eea0c45958b0a4b276ceb4c8494c7a88175efe93b33ccf1fa49d65048e17ea042dace3f4d4b3d61e2ce8302dd27122ce426aaf14
7
+ data.tar.gz: 2868ba04a6f66676d9e78d3c93db54ff52785b11fd31ef1251f9ef84987317f9afb13da809745c393be6ffc78fdf7604df4d9c54a2bd1bd5b4bb0ee0cc51f28f
@@ -15,9 +15,12 @@ module MiniProgram
15
15
 
16
16
  after_mp_login if respond_to? :after_mp_login
17
17
 
18
- render json: current_mp_user
18
+ render json: ServiceResult.new(success: true,
19
+ data: { current_user: current_mp_user },
20
+ message: "登录成功",
21
+ message_kind: :login_success)
19
22
  else
20
- render json: { error: result.error }
23
+ render json: result, status: 500
21
24
  end
22
25
  end
23
26
 
@@ -29,9 +32,9 @@ module MiniProgram
29
32
  if result.success?
30
33
  cookies.signed[:phone_num] = result.data[:phone_num]
31
34
 
32
- render json: result.data
35
+ render json: result
33
36
  else
34
- render json: { error: result.error }
37
+ render json: result, status: 500
35
38
  end
36
39
  end
37
40
  end
@@ -23,17 +23,22 @@ module MiniProgram
23
23
  access_token = Rails.cache.read(access_token_store_key)
24
24
 
25
25
  if access_token.present? && !fresh
26
- return MiniProgram::ServiceResult.new(success: true, data: {access_token: access_token})
26
+ return MiniProgram::ServiceResult.new(success: true,
27
+ data: { access_token: access_token },
28
+ message: "获取 access token 成功",
29
+ message_kind: :get_access_token_success)
27
30
  end
28
31
 
29
32
  result = request_access_token
30
33
 
31
34
  if result.success?
32
- # redis.setex access_token_store_key, 1.5.hours.to_i, result.data["access_token"]
33
35
  Rails.cache.write(access_token_store_key,
34
36
  result.data["access_token"],
35
37
  expires_in: 1.5.hours.to_i,
36
38
  race_condition_ttl: 10)
39
+
40
+ result.message = "获取 access token 成功"
41
+ result.message_kind = :get_access_token_success
37
42
  end
38
43
 
39
44
  yield result if block_given?
@@ -58,14 +63,21 @@ module MiniProgram
58
63
 
59
64
  if result["errcode"] && result["errcode"].to_s != "0"
60
65
  logger.error <<~ERROR
61
- Get access token failed.
62
- api: #{api}
63
- error: #{result}
66
+ Get access token failed.
67
+ api: #{api}
68
+ error: #{result}
64
69
  ERROR
65
- return MiniProgram::ServiceResult.new(success: false, error: result, message: result["errmsg"])
66
- end
67
70
 
68
- MiniProgram::ServiceResult.new(success: true, data: result)
71
+ MiniProgram::ServiceResult.new(success: false,
72
+ error: result,
73
+ message: result["errmsg"],
74
+ message_kind: :request_access_token_failed)
75
+ else
76
+ MiniProgram::ServiceResult.new(success: true,
77
+ data: { access_token: result["access_token"] },
78
+ message: "请求 access token 成功",
79
+ message_kind: :request_access_token_success)
80
+ end
69
81
  end
70
82
 
71
83
  # 调用微信授权登录 api
@@ -86,20 +98,29 @@ module MiniProgram
86
98
 
87
99
  if result["errcode"] && result["errcode"].to_s != "0"
88
100
  logger.error <<~ERROR
89
- Get session key failed.
90
- api: #{api}
91
- result: #{result}
101
+ Get session key failed.
102
+ api: #{api}
103
+ result: #{result}
92
104
  ERROR
93
- return MiniProgram::ServiceResult.new(error: result, message: result["errmsg"])
105
+
106
+ MiniProgram::ServiceResult.new(success: false,
107
+ error: result,
108
+ message: result["errmsg"],
109
+ message_kind: :login_failed)
110
+
111
+ else
112
+ MiniProgram::ServiceResult.new(success: true,
113
+ data: result,
114
+ message: "小程序登录成功",
115
+ message_kind: :login_success)
94
116
  end
95
117
 
96
- MiniProgram::ServiceResult.new(success: true, data: result)
97
118
  end
98
119
 
99
120
  # 发送订阅消息
100
121
  # @param [MiniProgram::Msg] msg
101
122
  # @param [String] to 用户的openid
102
- def send_msg(msg, to: )
123
+ def send_msg(msg, to:)
103
124
  openid = to.try(:openid) || to
104
125
 
105
126
  payload = msg.as_json.merge!(touser: openid)
@@ -114,19 +135,26 @@ module MiniProgram
114
135
  result = post(api, payload)
115
136
 
116
137
  if result["errcode"].to_s != "0"
117
- msg_logger.error {"{params: #{payload}, response: #{result}}"}
118
- return MiniProgram::ServiceResult.new(success: false, error: result)
138
+ msg_logger.error { "{params: #{payload}, response: #{result}}" }
139
+ MiniProgram::ServiceResult.new(success: false,
140
+ error: result,
141
+ message: "发送订阅消息成功",
142
+ message_kind: :send_subscribed_message_success)
143
+ else
144
+ msg_logger.info { "{params: #{payload}, response: #{result}}" }
145
+ MiniProgram::ServiceResult.new(success: true,
146
+ data: result,
147
+ message: "发送订阅消息失败",
148
+ message_kind: :send_subscribed_message_failed)
119
149
  end
120
150
 
121
- msg_logger.info {"{params: #{payload}, response: #{result}}"}
122
- MiniProgram::ServiceResult.new(success: true, data: result)
123
151
  end
124
152
 
125
153
  # 「发送统一服务消息」
126
154
  # 统一服务消息原本是可以从调用小程序的 api ,通过用户小程序的 openid 发送模板消息到小程序和公众号那里去,
127
155
  # 现在小程序的模板消息功能关闭了,就只剩下发送模板消息到公众号这个功能了
128
156
  #
129
- def send_uniform_msg(msg, to: )
157
+ def send_uniform_msg(msg, to:)
130
158
  openid = to.try(:openid) || to
131
159
 
132
160
  payload = msg.as_json
@@ -143,12 +171,19 @@ module MiniProgram
143
171
  })
144
172
 
145
173
  if result["errcode"].to_s != "0"
146
- msg_logger.error {"{params: #{payload}, response: #{result}}"}
147
- return MiniProgram::ServiceResult.new(success: false, error: result["errmsg"])
174
+ msg_logger.error { "{params: #{payload}, response: #{result}}" }
175
+ MiniProgram::ServiceResult.new(success: false,
176
+ error: result["errmsg"],
177
+ message: "发送统一服务消息失败",
178
+ message_kind: :send_uniform_message_failed)
179
+ else
180
+ msg_logger.info { "{params: #{payload}, response: #{result}}" }
181
+ MiniProgram::ServiceResult.new(success: true,
182
+ data: result,
183
+ message: "发送统一服务消息成功",
184
+ message_kind: :send_uniform_message_success)
148
185
  end
149
186
 
150
- msg_logger.info { "{params: #{payload}, response: #{result}}"}
151
- MiniProgram::ServiceResult.new(success: true, data: result)
152
187
  end
153
188
 
154
189
  # 获取用户手机号
@@ -165,17 +200,19 @@ module MiniProgram
165
200
 
166
201
  MiniProgram::ServiceResult.new(
167
202
  success: true,
203
+ message: "获取手机号成功",
204
+ message_kind: :get_phone_number_success,
168
205
  data: {
169
206
  openid: openid,
170
207
  phone_num: phone_num
171
- })
208
+ })
172
209
  end
173
210
 
174
211
  def config
175
212
  appid, app_secret = if MiniProgram.appid && MiniProgram.app_secret
176
213
  [MiniProgram.appid, MiniProgram.app_secret]
177
214
 
178
- # 如果有挂载 WechatPayment 的 engine 时,使用里边的小程序配置
215
+ # 如果有挂载 WechatPayment 的 engine 时,使用里边的小程序配置
179
216
  elsif Object.const_defined? "WechatPayment"
180
217
  [WechatPayment.sub_appid || WechatPayment.appid, WechatPayment.sub_app_secret || WechatPayment.app_secret]
181
218
  else
@@ -186,32 +223,38 @@ module MiniProgram
186
223
  end
187
224
 
188
225
  #获取小程序二维码
189
- def qrcode_unlimited(scene:, page:, width: 280, check_path: true, env_version: "release")
226
+ def qrcode_unlimited(scene:, page:, width: 280, check_path: true, env_version: "release")
190
227
  get_token_result = get_access_token
191
- if get_access_token.failure?
228
+ if get_access_token.failure?
192
229
  return get_token_result
193
230
  end
194
-
231
+
195
232
  api = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=#{get_token_result["access_token"]}"
196
-
197
- params = {
233
+
234
+ params = {
198
235
  scene:,
199
- page:,
236
+ page:,
200
237
  width:,
201
238
  check_path:,
202
239
  env_version:
203
240
  }
204
-
205
- result = post(api, params)
206
241
 
207
- if result["errcode"]
208
- msg_logger.error {"{params: #{params}, response: #{result}}"}
209
- return MiniProgram::ServiceResult.new(success: false, error: result)
242
+ result = post(api, params)
243
+
244
+ if result["errcode"]
245
+ msg_logger.error { "{params: #{params}, response: #{result}}" }
246
+ MiniProgram::ServiceResult.new(success: false,
247
+ error: result,
248
+ message: "获取二维码失败",
249
+ message_kind: :get_unlimited_qrcode_failed)
250
+ else
251
+ MiniProgram::ServiceResult.new(success: true,
252
+ data: { image: result },
253
+ message: "获取二维码成功",
254
+ message_kind: :get_unlimited_qrcode_success)
210
255
  end
211
-
212
- MiniProgram::ServiceResult.new(success: true, data: { image: result })
213
256
  end
214
-
257
+
215
258
  private
216
259
 
217
260
  def get(api, payload = {})
@@ -222,7 +265,7 @@ module MiniProgram
222
265
  end
223
266
 
224
267
  Net::HTTP.get(uri)
225
- end
268
+ end
226
269
 
227
270
  def post(api, payload = {}, options = {})
228
271
  uri = URI(api)
@@ -232,14 +275,16 @@ module MiniProgram
232
275
  options = {
233
276
  use_ssl: true
234
277
  }.merge(options)
235
-
278
+
236
279
  res = Net::HTTP.start(uri.host, uri.port, **options) do |http|
237
280
  http.request(req, payload.to_json)
238
- end
239
-
240
- return res.body if res["Content-Type"] == "image/jpeg"
241
-
242
- JSON.parse(res.body)
281
+ end
282
+
283
+ image_content_types = ["image/jpeg", "image/jpg", "image/gif", "image/png"]
284
+
285
+ return res.body if res["Content-Type"].in? image_content_types
286
+
287
+ JSON.parse(res.body)
243
288
  end
244
289
 
245
290
  def decrypt_phone_data(encrypted_data, iv, session_key)
@@ -1,3 +1,3 @@
1
1
  module MiniProgram
2
- VERSION = '1.1.3'
2
+ VERSION = '1.2.3'
3
3
  end
@@ -2,9 +2,9 @@ module MiniProgram
2
2
  class ServiceResult
3
3
  attr_accessor :success,
4
4
  :error,
5
- :error_type,
6
5
  :data,
7
6
  :message,
7
+ :message_kind,
8
8
  :message_type
9
9
 
10
10
  delegate :[], :[]=, to: :data
@@ -13,12 +13,15 @@ module MiniProgram
13
13
  error: nil,
14
14
  message: nil,
15
15
  message_type: nil,
16
+ message_kind: nil,
16
17
  data: {})
18
+
17
19
  self.success = success
18
20
  self.data = (data.presence || {}).with_indifferent_access
19
21
  self.error = error
20
22
  self.message = message
21
23
  self.message_type = message_type
24
+ self.message_kind = message_kind
22
25
  end
23
26
 
24
27
  alias success? :success
@@ -49,12 +52,12 @@ module MiniProgram
49
52
 
50
53
  def as_json(options = nil)
51
54
  {
52
- success: success,
53
- data: data,
54
- message: message,
55
+ success:,
56
+ data:,
57
+ message:,
55
58
  message_type: get_message_type,
56
- error: error,
57
- error_type: error_type
59
+ message_kind:,
60
+ error:,
58
61
  }
59
62
  end
60
63
  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: 1.1.3
4
+ version: 1.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - ian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-10 00:00:00.000000000 Z
11
+ date: 2022-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails