wechat-pay 1.0.6 → 1.0.7

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: 9f70f650e820e974fc587e7913dbd17290c515f77ce5666e6267fcd5a8dadce7
4
- data.tar.gz: 77b844c39432a5141b3ed9a837e03e3d07657b9668b9001828d479072dc20d79
3
+ metadata.gz: eb2eeb9cdeaa2ba383bb18c50fa4b3f9962fef6433b45792a48e5eb0bbf72339
4
+ data.tar.gz: 72ac02d6d3e687fb4ec457ca3ef49e0e1a433a75bfe53955936b2a0308df7098
5
5
  SHA512:
6
- metadata.gz: 0ce9abbf28b2bc2e49a2c45ca0b6ce732dd4707e241fd065e7d8408e4ce09c9f23b97d73fa9b48dda9efd49ca6055e42130df7f7e30f0f0fbd875932dd530cc1
7
- data.tar.gz: 8f590370a5cb1b0aacaeb874edad07325c72cc6391f4247efbb20bbccb731f7d9dc44a7815de3a6c9e8c19ca1c03683390b96fb4a6913f3d732ae3e3d2bdef29
6
+ metadata.gz: 35bfafd7b998abc6b03354acc1cee71facbfa5be198be03b4c0e9f4acfa6d1c1a93f779bb0bc8b37a234c967a5c47f43f7bb14f38a9386e0f834b4f88a533a9d
7
+ data.tar.gz: f3f912b410f6b391449157a65bd9cbf35ada56daf553cf2ad177c58b4ae96ee215496aaf1085fcec75742df8d8c60ba87d6ecd3c855e6f383e813ca3dd8149b2
@@ -29,5 +29,7 @@ jobs:
29
29
  with:
30
30
  ruby-version: ${{ matrix.ruby-version }}
31
31
  bundler-cache: true # runs 'bundle install' and caches installed gems automatically
32
+ - name: Run rubocop
33
+ run: bundle exec rubocop
32
34
  - name: Run tests
33
35
  run: bundle exec rake
data/.rubocop.yml ADDED
@@ -0,0 +1,21 @@
1
+ AllCops:
2
+ NewCops: enable
3
+ SuggestExtensions: false
4
+
5
+ Style/AsciiComments:
6
+ Enabled: false
7
+
8
+ Metrics/BlockLength:
9
+ Enabled: false
10
+
11
+ Metrics/AbcSize:
12
+ Enabled: false
13
+
14
+ Metrics/MethodLength:
15
+ Max: 30
16
+
17
+ Layout/LineLength:
18
+ Enabled: false
19
+
20
+ Metrics/ModuleLength:
21
+ Max: 200
data/CHANGELOG.md ADDED
@@ -0,0 +1,6 @@
1
+ # Next Release
2
+
3
+ ## 1.0.7 (05/16/2021)
4
+
5
+ * Change `WechatPay::Ecommerce.get_certificates` to `WechatPay::Ecommerce.certificates`
6
+ * Refactor code and document.
data/Gemfile CHANGED
@@ -13,4 +13,3 @@ gemspec
13
13
  # your gem to rubygems.org.
14
14
 
15
15
  # To use debugger
16
- gem 'rubocop', require: false
data/README.md CHANGED
@@ -62,7 +62,7 @@ def download_certificate
62
62
  download_path = 'Your Download Path'
63
63
  raise '必须提供证书下载路径' if download_path.blank?
64
64
 
65
- response = WechatPay::Ecommerce.get_certificates
65
+ response = WechatPay::Ecommerce.certificates
66
66
 
67
67
  raise '证书下载失败' unless response.code == 200
68
68
 
data/Rakefile CHANGED
@@ -5,7 +5,7 @@ begin
5
5
  require 'rspec/core/rake_task'
6
6
  RSpec::Core::RakeTask.new(:spec)
7
7
 
8
- task :default => :spec
8
+ task default: :spec
9
9
  rescue LoadError
10
10
  puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
11
11
  end
data/lib/wechat-pay.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # rubocop:disable Naming/FileName
2
+
1
3
  # frozen_string_literal: true
2
4
 
3
5
  require 'restclient'
@@ -8,7 +10,6 @@ require 'wechat-pay/ecommerce' # 电商平台
8
10
  # # 微信支付
9
11
  #
10
12
  # 设置关键信息
11
-
12
13
  module WechatPay
13
14
  class<< self
14
15
  attr_accessor :app_id, :mch_id, :mch_key
@@ -40,3 +41,4 @@ module WechatPay
40
41
  end
41
42
  end
42
43
  end
44
+ # rubocop:enable Naming/FileName
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'json'
2
4
  require 'wechat-pay/helper'
3
5
 
@@ -7,183 +9,80 @@ module WechatPay
7
9
  module Direct
8
10
  include WechatPayHelper
9
11
 
10
- ##
11
- # :singleton-method: invoke_combine_transactions_in_app
12
- #
13
- # 直连合单app下单
14
- #
15
- #
16
- # Document: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_1.shtml
17
- #
18
- # Example:
19
- #
20
- # ``` ruby
21
- # params = {
22
- # combine_out_trade_no: 'combine_out_trade_no',
23
- # combine_payer_info: {
24
- # openid: 'client open id'
25
- # },
26
- # sub_orders: [
27
- # {
28
- # mchid: 'mchid',
29
- # sub_mchid: 'sub mchid',
30
- # attach: 'attach',
31
- # amount: {
32
- # total_amount: 100,
33
- # currency: 'CNY'
34
- # },
35
- # out_trade_no: 'out_trade_no',
36
- # description: 'description'
37
- # }
38
- # ],
39
- # notify_url: 'the_url'
40
- # }
41
- #
42
- # WechatPay::Direct.invoke_combine_transactions_in_app(params)
43
- # ```
44
-
45
- ##
46
- # :singleton-method: invoke_combine_transactions_in_js
47
- #
48
- # js合单
49
- #
50
- # 直连合单js下单
51
- #
52
- # Document: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_3.shtml
53
- #
54
- # Example:
55
- #
56
- # ``` ruby
57
- # params = {
58
- # combine_out_trade_no: 'combine_out_trade_no',
59
- # combine_payer_info: {
60
- # openid: 'client open id'
61
- # },
62
- # sub_orders: [
63
- # {
64
- # mchid: 'mchid',
65
- # sub_mchid: 'sub mchid',
66
- # attach: 'attach',
67
- # amount: {
68
- # total_amount: 100,
69
- # currency: 'CNY'
70
- # },
71
- # out_trade_no: 'out_trade_no',
72
- # description: 'description'
73
- # }
74
- # ],
75
- # notify_url: 'the_url'
76
- # }
77
- #
78
- # WechatPay::Direct.invoke_combine_transactions_in_js(params)
79
- # ```
80
-
81
- ##
82
- # :singleton-method: invoke_combine_transactions_in_h5
83
- #
84
- # 直连合单h5下单
85
- #
86
- # TODO: 与电商平台类似,只是参数不同,稍后重构
87
- #
88
- # Document: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_2.shtml
89
- #
90
- # Example:
91
- #
92
- # ``` ruby
93
- # params = {
94
- # combine_out_trade_no: 'combine_out_trade_no',
95
- # sub_orders: [
96
- # {
97
- # mchid: 'mchid',
98
- # sub_mchid: 'sub mchid',
99
- # attach: 'attach',
100
- # amount: {
101
- # total_amount: 100,
102
- # currency: 'CNY'
103
- # },
104
- # out_trade_no: 'out_trade_no',
105
- # description: 'description'
106
- # }
107
- # ],
108
- # notify_url: 'the_url'
109
- # }
110
- #
111
- # WechatPay::Direct.invoke_combine_transactions_in_h5(params)
112
- # ```
113
-
114
- ##
115
- # :singleton-method: invoke_combine_transactions_in_miniprogram
116
- #
117
- # 直连合单小程序下单
118
- #
119
- #
120
- # Document: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_4.shtml
121
- #
122
- # Example:
123
- #
124
- # ``` ruby
125
- # params = {
126
- # combine_out_trade_no: 'combine_out_trade_no',
127
- # combine_payer_info: {
128
- # openid: 'client open id'
129
- # },
130
- # sub_orders: [
131
- # {
132
- # mchid: 'mchid',
133
- # sub_mchid: 'sub mchid',
134
- # attach: 'attach',
135
- # amount: {
136
- # total_amount: 100,
137
- # currency: 'CNY'
138
- # },
139
- # out_trade_no: 'out_trade_no',
140
- # description: 'description'
141
- # }
142
- # ],
143
- # notify_url: 'the_url'
144
- # }
145
- #
146
- # WechatPay::Direct.invoke_combine_transactions_in_miniprogram(params)
147
- # ```
12
+ # @private
13
+ # @!macro [attach] define_transaction_method
14
+ # 直连$1下单
15
+ #
16
+ # Document: $3
17
+ #
18
+ # Example:
19
+ #
20
+ # ``` ruby
21
+ # params = {
22
+ # appid: 'Your Open id',
23
+ # mchid: 'Your Mch id'',
24
+ # description: '回流',
25
+ # out_trade_no: 'Checking',
26
+ # payer: {
27
+ # openid: 'oly6s5c'
28
+ # },
29
+ # amount: {
30
+ # total: 1
31
+ # },
32
+ # notify_url: ENV['NOTIFICATION_URL']
33
+ # }
34
+ #
35
+ # WechatPay::Direct.invoke_transactions_in_$1(params)
36
+ # ```
37
+ # @!method invoke_transactions_in_$1
38
+ # @!scope class
39
+ def self.define_transaction_method(key, value, _document)
40
+ const_set("INVOKE_TRANSACTIONS_IN_#{key.upcase}_FIELDS",
41
+ %i[description out_trade out_trade_no payer amount notify_url].freeze)
42
+ define_singleton_method "invoke_transactions_in_#{key}" do |params|
43
+ direct_transactions_method_by_suffix(value, params)
44
+ end
45
+ end
148
46
 
149
- ##
150
- # :singleton-method: invoke_combine_transactions_in_native
151
- #
152
- # 直连合单native下单
153
- #
154
- #
155
- # Document: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_5.shtml
156
- #
157
- # Example:
158
- #
159
- # ``` ruby
160
- # params = {
161
- # combine_out_trade_no: 'combine_out_trade_no',
162
- # sub_orders: [
163
- # {
164
- # mchid: 'mchid',
165
- # sub_mchid: 'sub mchid',
166
- # attach: 'attach',
167
- # amount: {
168
- # total_amount: 100,
169
- # currency: 'CNY'
170
- # },
171
- # out_trade_no: 'out_trade_no',
172
- # description: 'description'
173
- # }
174
- # ],
175
- # notify_url: 'the_url'
176
- # }
177
- #
178
- # WechatPay::Direct.invoke_combine_transactions_in_native(params)
179
- # ```
180
- {
181
- js: 'jsapi',
182
- app: 'app',
183
- h5: 'h5',
184
- native: 'native',
185
- miniprogram: 'jsapi'
186
- }.each do |key, _value|
47
+ define_transaction_method('js', 'jsapi', 'https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_5_1.shtml')
48
+ define_transaction_method('miniprogram', 'jsapi', 'https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_5_1.shtml')
49
+ define_transaction_method('app', 'app', 'https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_2_1.shtml')
50
+ define_transaction_method('h5', 'h5', 'https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_3_1.shtml')
51
+ define_transaction_method('native', 'native', 'https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_4_1.shtml')
52
+
53
+ # @private
54
+ # @!macro [attach] define_combine_transaction_method
55
+ # 直连合单$1下单
56
+ #
57
+ # Document: $3
58
+ #
59
+ # ``` ruby
60
+ # params = {
61
+ # combine_out_trade_no: 'combine_out_trade_no',
62
+ # combine_payer_info: {
63
+ # openid: 'client open id'
64
+ # },
65
+ # sub_orders: [
66
+ # {
67
+ # mchid: 'mchid',
68
+ # sub_mchid: 'sub mchid',
69
+ # attach: 'attach',
70
+ # amount: {
71
+ # total_amount: 100,
72
+ # currency: 'CNY'
73
+ # },
74
+ # out_trade_no: 'out_trade_no',
75
+ # description: 'description'
76
+ # }
77
+ # ],
78
+ # notify_url: 'the_url'
79
+ # }
80
+ #
81
+ # WechatPay::Direct.invoke_combine_transactions_in_$1(params)
82
+ # ```
83
+ # @!method invoke_combine_transactions_in_$1
84
+ # @!scope class
85
+ def self.define_combine_transaction_method(key, _value, _document)
187
86
  const_set("INVOKE_COMBINE_TRANSACTIONS_IN_#{key.upcase}_FIELDS",
188
87
  %i[combine_out_trade_no scene_info sub_orders notify_url].freeze)
189
88
  define_singleton_method("invoke_combine_transactions_in_#{key}") do |params|
@@ -191,6 +90,12 @@ module WechatPay
191
90
  end
192
91
  end
193
92
 
93
+ define_combine_transaction_method('app', 'app', 'https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_1.shtml')
94
+ define_combine_transaction_method('js', 'jsapi', 'https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_3.shtml')
95
+ define_combine_transaction_method('h5', 'h5', 'https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_2.shtml')
96
+ define_combine_transaction_method('miniprogram', 'jsapi', 'https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_4.shtml')
97
+ define_combine_transaction_method('native', 'native', 'https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_5.shtml')
98
+
194
99
  QUERY_COMBINE_ORDER_FIELDS = %i[combine_out_trade_no].freeze # :nodoc:
195
100
  #
196
101
  # 合单查询
@@ -251,153 +156,6 @@ module WechatPay
251
156
  )
252
157
  end
253
158
 
254
- ##
255
- # :singleton-method: invoke_transactions_in_js
256
- #
257
- # 直连js下单
258
- #
259
- # Document: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_1.shtml
260
- #
261
- # Example:
262
- #
263
- # ``` ruby
264
- # params = {
265
- # appid: 'Your Open id',
266
- # mchid: 'Your Mch id'',
267
- # description: '回流',
268
- # out_trade_no: 'Checking',
269
- # payer: {
270
- # openid: 'oly6s5c'
271
- # },
272
- # amount: {
273
- # total: 1
274
- # },
275
- # notify_url: ENV['NOTIFICATION_URL']
276
- # }
277
- #
278
- # WechatPay::Direct.invoke_transactions_in_js(params)
279
- # ```
280
-
281
- ##
282
- # :singleton-method: invoke_transactions_in_miniprogram
283
- #
284
- # 直连小程序下单
285
- #
286
- # Document:https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_5_1.shtml
287
- #
288
- # Example:
289
- #
290
- # ``` ruby
291
- # params = {
292
- # appid: 'Your Open id',
293
- # mchid: 'Your Mch id'',
294
- # description: '回流',
295
- # out_trade_no: 'Checking',
296
- # payer: {
297
- # openid: 'oly6s5c'
298
- # },
299
- # amount: {
300
- # total: 1
301
- # },
302
- # notify_url: ENV['NOTIFICATION_URL']
303
- # }
304
- #
305
- # WechatPay::Direct.invoke_transactions_in_miniprogram(params)
306
- # ```
307
-
308
- ##
309
- # :singleton-method: invoke_transactions_in_app
310
- #
311
- # 直连APP下单
312
- #
313
- # Document: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_2_1.shtml
314
- #
315
- # Example:
316
- #
317
- # ``` ruby
318
- # params = {
319
- # appid: 'Your Open id',
320
- # mchid: 'Your Mch id'',
321
- # description: '回流',
322
- # out_trade_no: 'Checking',
323
- # payer: {
324
- # openid: 'oly6s5c'
325
- # },
326
- # amount: {
327
- # total: 1
328
- # },
329
- # notify_url: ENV['NOTIFICATION_URL']
330
- # }
331
- #
332
- # WechatPay::Direct.invoke_transactions_in_app(params)
333
- # ```
334
-
335
- ##
336
- # :singleton-method: invoke_transactions_in_h5
337
- #
338
- # 直连h5下单
339
- #
340
- # Document: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_3_1.shtml
341
- #
342
- # Example:
343
- #
344
- # ```
345
- # params = {
346
- # appid: 'Your Open id',
347
- # mchid: 'Your Mch id'',
348
- # description: '回流',
349
- # out_trade_no: 'Checking',
350
- # payer: {
351
- # openid: 'oly6s5c'
352
- # },
353
- # amount: {
354
- # total: 1
355
- # },
356
- # notify_url: ENV['NOTIFICATION_URL']
357
- # }
358
- #
359
- # WechatPay::Direct.invoke_transactions_in_h5(params)
360
- # ```
361
-
362
- ##
363
- # :singleton-method: invoke_transactions_in_native
364
- #
365
- # 直连native下单
366
- #
367
- # Document: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_4_1.shtml
368
- #
369
- # Example:
370
- #
371
- # ``` ruby
372
- # params = {
373
- # appid: 'Your Open id',
374
- # mchid: 'Your Mch id'',
375
- # description: '回流',
376
- # out_trade_no: 'Checking',
377
- # payer: {
378
- # openid: 'oly6s5c'
379
- # },
380
- # amount: {
381
- # total: 1
382
- # },
383
- # notify_url: ENV['NOTIFICATION_URL']
384
- # }
385
- #
386
- # WechatPay::Direct.invoke_transactions_in_native(params)
387
- # ```
388
- {
389
- js: 'jsapi',
390
- app: 'app',
391
- h5: 'h5',
392
- miniprogram: 'jsapi',
393
- native: 'native'
394
- }.each do |key, value|
395
- const_set("INVOKE_TRANSACTIONS_IN_#{key.upcase}_FIELDS", %i[description out_trade out_trade_no payer amount notify_url].freeze)
396
- define_singleton_method "invoke_transactions_in_#{key}" do |params|
397
- direct_transactions_method_by_suffix(value, params)
398
- end
399
- end
400
-
401
159
  QUERY_ORDER_FIELDS = %i[out_trade_no transaction_id].freeze # :nodoc:
402
160
  #
403
161
  # 直连订单查询