wechat-pay 1.0.6 → 1.0.7

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: 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
  # 直连订单查询