mini_program 1.1.1 → 1.2.4

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: 25a1020a3d7bb6be380e8f6953a2caefd3a9f736acab37cd37956a5961e53720
4
- data.tar.gz: d17af0488527945784b0b714d9a5b19f62b4f1df937258217ba4a22b8769d46a
3
+ metadata.gz: cfba91664e79dd0e121021812a5bc5bbca9011ba21ea74955b6b15dd54f86562
4
+ data.tar.gz: 908efc23be5f5b65f48a4cbad44e1cc70b0c6ff9c6f8bd851d5498d52523fe8a
5
5
  SHA512:
6
- metadata.gz: c0a015fc57b16cb7eb000e4f27cf8f7bb4a87215b4cd4f42134c1b897abe4f3021d53399a8fde50f849fd37f2d88800240d8bdef1117439f967fabc622186e8a
7
- data.tar.gz: 42ee8743795a65ba7bd5afe32205847c557119fdb1b60424fed6f25d11c6640dfdbdee6f1e9918a39c138451acc8ba8d680d0739e749e35067372b534df8fa05
6
+ metadata.gz: 9c3c3406c1f4d9ea80e527a981b51a804488baccefec0620672ce53828fe8ca653c2f0db03811fd1605028c280b6afd8d645e542250bee6cfaccf3db6dcaea30
7
+ data.tar.gz: b728b6b149c4ae436b8eafe9167e6fdf0d5a8e6e15c7e7888ee3df2d4c459de7cb12d747a75c313ff8a5af111008815abe73b79cc790ba2cf637a66d10bdbcba
@@ -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_failed)
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_success)
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,31 +223,38 @@ module MiniProgram
186
223
  end
187
224
 
188
225
  #获取小程序二维码
189
- def qrcode_unlimited(data)
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
- params = {
197
- scene: data[:scene],
198
- page: data[:page],
199
- width: data[:width].blank? ? 280 : data[:width]
200
- }
201
-
202
- payload = params.as_json
203
233
 
204
- result = post(api, payload)
234
+ params = {
235
+ scene:,
236
+ page:,
237
+ width:,
238
+ check_path:,
239
+ env_version:
240
+ }
205
241
 
206
- if !result["errcode"].nil? && result["errcode"].to_s != "0"
207
- msg_logger.error {"{params: #{payload}, response: #{result}}"}
208
- 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)
209
255
  end
210
-
211
- MiniProgram::ServiceResult.new(success: true, data: { image: result })
212
256
  end
213
-
257
+
214
258
  private
215
259
 
216
260
  def get(api, payload = {})
@@ -221,7 +265,7 @@ module MiniProgram
221
265
  end
222
266
 
223
267
  Net::HTTP.get(uri)
224
- end
268
+ end
225
269
 
226
270
  def post(api, payload = {}, options = {})
227
271
  uri = URI(api)
@@ -231,14 +275,16 @@ module MiniProgram
231
275
  options = {
232
276
  use_ssl: true
233
277
  }.merge(options)
234
-
278
+
235
279
  res = Net::HTTP.start(uri.host, uri.port, **options) do |http|
236
280
  http.request(req, payload.to_json)
237
- end
238
-
239
- return res.body if res["Content-Type"] == "image/jpeg"
240
-
241
- 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)
242
288
  end
243
289
 
244
290
  def decrypt_phone_data(encrypted_data, iv, session_key)
@@ -1,3 +1,3 @@
1
1
  module MiniProgram
2
- VERSION = '1.1.1'
2
+ VERSION = '1.2.4'
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.1
4
+ version: 1.2.4
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-09 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