mini_program 1.1.3 → 1.2.3

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