wechat_payment 0.1.0 → 0.2.0

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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +215 -13
  3. data/Rakefile +5 -0
  4. data/app/assets/config/wechat_payment_manifest.js +1 -0
  5. data/app/assets/stylesheets/wechat_payment/application.css +15 -0
  6. data/app/controllers/wechat_payment/application_controller.rb +5 -0
  7. data/app/controllers/wechat_payment/callback_controller.rb +30 -0
  8. data/app/helpers/wechat_payment/application_helper.rb +4 -0
  9. data/app/jobs/wechat_payment/application_job.rb +4 -0
  10. data/app/mailers/wechat_payment/application_mailer.rb +6 -0
  11. data/app/models/wechat_payment/application_record.rb +5 -0
  12. data/app/models/wechat_payment/payment_order.rb +228 -0
  13. data/app/models/wechat_payment/refund_order.rb +127 -0
  14. data/app/services/wechat_payment/service.rb +74 -0
  15. data/app/views/layouts/wechat_payment/application.html.erb +15 -0
  16. data/config/routes.rb +4 -0
  17. data/db/migrate/20210706075217_create_wechat_payment_payment_orders.rb +22 -0
  18. data/db/migrate/20210706095205_create_wechat_payment_refund_orders.rb +20 -0
  19. data/lib/generators/wechat_payment/goods/USAGE +8 -0
  20. data/lib/generators/wechat_payment/goods/goods_generator.rb +5 -0
  21. data/lib/generators/wechat_payment/install/USAGE +8 -0
  22. data/lib/generators/wechat_payment/install/install_generator.rb +86 -0
  23. data/lib/generators/wechat_payment/install/templates/initializer.rb +19 -0
  24. data/lib/generators/wechat_payment/routes/USAGE +8 -0
  25. data/lib/generators/wechat_payment/routes/routes_generator.rb +7 -0
  26. data/lib/tasks/wechat_payment_tasks.rake +10 -0
  27. data/lib/wechat_payment.rb +40 -2
  28. data/lib/wechat_payment/client.rb +272 -0
  29. data/lib/wechat_payment/concern/goods.rb +80 -0
  30. data/lib/wechat_payment/concern/user.rb +22 -0
  31. data/lib/wechat_payment/concern/user_goods.rb +14 -0
  32. data/lib/wechat_payment/engine.rb +7 -0
  33. data/lib/wechat_payment/invoke_result.rb +35 -0
  34. data/lib/wechat_payment/missing_key_error.rb +4 -0
  35. data/lib/wechat_payment/r_logger.rb +36 -0
  36. data/lib/wechat_payment/service_result.rb +49 -0
  37. data/lib/wechat_payment/sign.rb +41 -0
  38. data/lib/wechat_payment/version.rb +1 -1
  39. metadata +68 -9
  40. data/lib/wechat_payment/railtie.rb +0 -4
@@ -0,0 +1,49 @@
1
+ module WechatPayment
2
+ class ServiceResult
3
+ attr_accessor :success,
4
+ :errors,
5
+ :data,
6
+ :message,
7
+ :message_type
8
+
9
+ def initialize(success: false,
10
+ errors: nil,
11
+ message: nil,
12
+ message_type: nil,
13
+ data: nil)
14
+ self.success = success
15
+ self.data = data
16
+ self.errors = errors.is_a?(Enumerable) ? errors : [errors]
17
+ self.message = message
18
+ self.message_type = message_type
19
+ end
20
+
21
+ alias success? :success
22
+
23
+ def failure?
24
+ !success?
25
+ end
26
+
27
+ def on_success
28
+ yield(self) if success?
29
+ end
30
+
31
+ def on_failure
32
+ yield(self) if failure?
33
+ end
34
+
35
+ def get_message_type
36
+ if message_type.present?
37
+ message_type.to_sym
38
+ elsif success?
39
+ :notice
40
+ else
41
+ :error
42
+ end
43
+ end
44
+
45
+ def as_json(options = {})
46
+ data.as_json(options)
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,41 @@
1
+ require 'digest/md5'
2
+
3
+ module WechatPayment
4
+ module Sign
5
+
6
+ SIGN_TYPE_MD5 = 'MD5'
7
+ SIGN_TYPE_HMAC_SHA256 = 'HMAC-SHA256'
8
+
9
+ def self.generate(params, sign_type = SIGN_TYPE_MD5)
10
+ key = params.delete(:key)
11
+
12
+ new_key = params["key"] #after
13
+ key = params.delete("key") if params["key"] #after
14
+
15
+ query = params.sort.map do |k, v|
16
+ "#{k}=#{v}" if v.to_s != ''
17
+ end.compact.join('&')
18
+
19
+ string_sign_temp = "#{query}&key=#{key || new_key || WechatPayment.key}" #after
20
+
21
+ if sign_type == SIGN_TYPE_MD5
22
+ Digest::MD5.hexdigest(string_sign_temp).upcase
23
+ elsif sign_type == SIGN_TYPE_HMAC_SHA256
24
+ OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), key, string_sign_temp).upcase
25
+ else
26
+ warn("WxPay Warn: unknown sign_type : #{sign_type}")
27
+ end
28
+ end
29
+
30
+ def self.verify?(params, options = {})
31
+ params = params.dup
32
+ params["appid"] = options[:appid] if options[:appid]
33
+ params["mch_id"] = options[:mch_id] if options[:mch_id]
34
+ params["key"] = options[:key] if options[:key]
35
+
36
+ sign = params.delete('sign') || params.delete(:sign)
37
+
38
+ generate(params, options[:sign_type] || SIGN_TYPE_MD5) == sign
39
+ end
40
+ end
41
+ end
@@ -1,3 +1,3 @@
1
1
  module WechatPayment
2
- VERSION = '0.1.0'
2
+ VERSION = '0.2.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wechat_payment
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-23 00:00:00.000000000 Z
11
+ date: 2021-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -24,7 +24,35 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 6.1.4
27
- description: no more
27
+ - !ruby/object:Gem::Dependency
28
+ name: wx_pay
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rexml
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: Description of WechatPayment.
28
56
  email:
29
57
  - ianlynxk@gmail.com
30
58
  executables: []
@@ -34,17 +62,48 @@ files:
34
62
  - MIT-LICENSE
35
63
  - README.md
36
64
  - Rakefile
65
+ - app/assets/config/wechat_payment_manifest.js
66
+ - app/assets/stylesheets/wechat_payment/application.css
67
+ - app/controllers/wechat_payment/application_controller.rb
68
+ - app/controllers/wechat_payment/callback_controller.rb
69
+ - app/helpers/wechat_payment/application_helper.rb
70
+ - app/jobs/wechat_payment/application_job.rb
71
+ - app/mailers/wechat_payment/application_mailer.rb
72
+ - app/models/wechat_payment/application_record.rb
73
+ - app/models/wechat_payment/payment_order.rb
74
+ - app/models/wechat_payment/refund_order.rb
75
+ - app/services/wechat_payment/service.rb
76
+ - app/views/layouts/wechat_payment/application.html.erb
77
+ - config/routes.rb
78
+ - db/migrate/20210706075217_create_wechat_payment_payment_orders.rb
79
+ - db/migrate/20210706095205_create_wechat_payment_refund_orders.rb
80
+ - lib/generators/wechat_payment/goods/USAGE
81
+ - lib/generators/wechat_payment/goods/goods_generator.rb
82
+ - lib/generators/wechat_payment/install/USAGE
83
+ - lib/generators/wechat_payment/install/install_generator.rb
84
+ - lib/generators/wechat_payment/install/templates/initializer.rb
85
+ - lib/generators/wechat_payment/routes/USAGE
86
+ - lib/generators/wechat_payment/routes/routes_generator.rb
37
87
  - lib/tasks/wechat_payment_tasks.rake
38
88
  - lib/wechat_payment.rb
39
- - lib/wechat_payment/railtie.rb
89
+ - lib/wechat_payment/client.rb
90
+ - lib/wechat_payment/concern/goods.rb
91
+ - lib/wechat_payment/concern/user.rb
92
+ - lib/wechat_payment/concern/user_goods.rb
93
+ - lib/wechat_payment/engine.rb
94
+ - lib/wechat_payment/invoke_result.rb
95
+ - lib/wechat_payment/missing_key_error.rb
96
+ - lib/wechat_payment/r_logger.rb
97
+ - lib/wechat_payment/service_result.rb
98
+ - lib/wechat_payment/sign.rb
40
99
  - lib/wechat_payment/version.rb
41
- homepage: https://mini-geek.com
100
+ homepage: https://github.com/bkyz/wechat_payment
42
101
  licenses:
43
102
  - MIT
44
103
  metadata:
45
- homepage_uri: https://mini-geek.com
46
- source_code_uri: https://github.com/otorain/wechat_payment
47
- changelog_uri: https://github.com/otorain/wechat_payment/CHANGELOG.md
104
+ homepage_uri: https://github.com/bkyz/wechat_payment
105
+ source_code_uri: https://github.com/bkyz/wechat_payment
106
+ changelog_uri: https://github.com/bkyz/wechat_payment/CHANGELOG.md
48
107
  post_install_message:
49
108
  rdoc_options: []
50
109
  require_paths:
@@ -63,5 +122,5 @@ requirements: []
63
122
  rubygems_version: 3.2.15
64
123
  signing_key:
65
124
  specification_version: 4
66
- summary: 微信支付 engine
125
+ summary: Summary of WechatPayment.
67
126
  test_files: []
@@ -1,4 +0,0 @@
1
- module WechatPayment
2
- class Railtie < ::Rails::Railtie
3
- end
4
- end