wechat_payment 2.0.5 → 2.0.9

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: 6a2f9d7deaaaed1d3b98076b2f01e2c8f3717ec1523e036324c5a479c5cc5385
4
- data.tar.gz: 38e2e94679a07a1128aa1b88111b54c43dea2614aa8ead79808c8beb882421ab
3
+ metadata.gz: 3acba715b3e59f36af2ae3bbec80a199773f262e07fc95fff8a3a8da7fd339c8
4
+ data.tar.gz: 84fb7b364df1ac7cae171a4fafa64a1f4396336471f2637a176154de110edb99
5
5
  SHA512:
6
- metadata.gz: ec536f1580a1ce147f0892a0c90c3f696929dc5ad1f6cfbef1ddd8b25df65c3e9ecf31fef578054e952d385995734d59bc59fbdbe17f195f7c4bd6d04286fc59
7
- data.tar.gz: 73988c1100320edfab0babc54a144e96067b9a13212c1ef3253e7186c3c54cfab6dd860d33d6f0ddbc490d2a29c0d8280071f994672ca8c8537c70741af53ba1
6
+ metadata.gz: cfd511f056ecf1b79e87eaa2a1b8d0c8eda5f73449cb95b57dbaf12cca7ad9600cad2b9d6553782c665b6781de9ec50abe8f330d3983dfb39b0e1b1c77328d71
7
+ data.tar.gz: e78ecd5f76ad88e07696a6eb14ec8d558ee91306331a0de687d8fb18392407258ceddbc5d441ec4b336fe227302cb271a868edba42d07e7146645454b4bee2f0
@@ -17,7 +17,7 @@ module WechatPayment
17
17
  pending_pay: "pending_pay",
18
18
  refunded: "refunded",
19
19
  failed: "failed"
20
- }, _default: "pending"
20
+ }, _default: "pending_pay"
21
21
 
22
22
  # 将部分用户信息保存至订单
23
23
  def set_customer_info
@@ -109,7 +109,7 @@ module WechatPayment
109
109
 
110
110
  # 已退款的金额(包括正在退款的金额)
111
111
  def refunded_fee
112
- refund_orders.where(state: [:pending, :refunded]).sum(:refund_fee)
112
+ refund_orders.where(state: [:pending_refund, :refunded]).sum(:refund_fee)
113
113
  end
114
114
 
115
115
  # 实际已退的金额
@@ -8,10 +8,10 @@ module WechatPayment
8
8
  belongs_to :customer, polymorphic: true
9
9
 
10
10
  enum state: {
11
- pending: "pending",
11
+ pending_refund: "pending_refund",
12
12
  refunded: "refunded",
13
13
  failed: "failed"
14
- }, _default: :pending
14
+ }, _default: "pending_refund"
15
15
 
16
16
  # 生成退款编号
17
17
  def gen_out_refund_no
@@ -62,7 +62,7 @@ module WechatPayment
62
62
 
63
63
  update(
64
64
  refund_id: result["refund_id"],
65
- state: :pending
65
+ state: :pending_refund
66
66
  )
67
67
 
68
68
  result
@@ -44,7 +44,7 @@ module WechatPayment
44
44
  result = WechatPayment::Client.handle_payment_notify(notify_data)
45
45
  payment_order = WechatPayment::PaymentOrder.find_by(out_trade_no: notify_data["out_trade_no"])
46
46
 
47
- if result.success? && payment_order.pending?
47
+ if result.success? && payment_order.pending_pay?
48
48
  payment_order.with_lock do
49
49
  payment_order.payment_exec_success(result.data)
50
50
  end
@@ -60,7 +60,7 @@ module WechatPayment
60
60
  result = WechatPayment::Client.handle_refund_notify(notify_data)
61
61
  refund_order = WechatPayment::RefundOrder.find_by(out_refund_no: result.data["out_refund_no"])
62
62
 
63
- if result.success? && refund_order.pending?
63
+ if result.success? && refund_order.pending_refund?
64
64
  refund_order.with_lock do
65
65
  refund_order.refund_exec_success(result.data)
66
66
  end
@@ -39,11 +39,10 @@ module WechatPayment
39
39
  if order_result.success?
40
40
 
41
41
  payment_logger.info("{params: #{order_params}, result: #{order_result}}")
42
- # WechatPayment::ServiceResult.new(success: true, data: { order_result: order_result.with_indifferent_access, js_payload: mini_program_request_params.with_indifferent_access })
43
42
  WechatPayment::ServiceResult.new(success: true, data: order_result.with_indifferent_access)
44
43
  else
45
44
  payment_logger.error("{params: #{order_params}, result: #{order_result}}")
46
- WechatPayment::ServiceResult.new(success: false, errors: order_result.with_indifferent_access)
45
+ WechatPayment::ServiceResult.new(success: false, error: order_result.with_indifferent_access)
47
46
  end
48
47
  end
49
48
 
@@ -79,17 +78,17 @@ module WechatPayment
79
78
  def self.handle_payment_notify(notify_data)
80
79
  if !WechatPayment::Sign.verify?(notify_data)
81
80
  payment_logger.error("{msg: 签名验证失败, errors: #{notify_data}}")
82
- WechatPayment::ServiceResult.new(errors: notify_data, message: "回调签名验证失败")
81
+ WechatPayment::ServiceResult.new(success: false, error: notify_data, message: "回调签名验证失败")
83
82
  end
84
83
 
85
84
  result = WechatPayment::InvokeResult.new(notify_data)
86
85
 
87
86
  if result.success?
88
87
  payment_logger.info("{callback: #{notify_data}}")
89
- WechatPayment::ServiceResult.new(success: true, data: notify_data)
88
+ WechatPayment::ServiceResult.new(success: true, data: notify_data, message: "支付执行成功", )
90
89
  else
91
90
  payment_logger.error("{callback: #{notify_data}}")
92
- WechatPayment::ServiceResult.new(errors: notify_data)
91
+ WechatPayment::ServiceResult.new(success: false, error: notify_data, message: "支付执行失败", error_type: :payment_exec_failed)
93
92
  end
94
93
  end
95
94
 
@@ -99,11 +98,11 @@ module WechatPayment
99
98
 
100
99
  result = WechatPayment::InvokeResult.new(notify_data)
101
100
  if result.success?
102
- refund_logger.info "{callback: #{notify_data}}"
101
+ refund_logger.info "退款执行成功{callback: #{notify_data}}"
103
102
  WechatPayment::ServiceResult.new(success: true, data: notify_data)
104
103
  else
105
- refund_logger.error "{callback: #{notify_data}}"
106
- WechatPayment::ServiceResult.new(errors: notify_data)
104
+ refund_logger.error "退款执行失败: {callback: #{notify_data}}"
105
+ WechatPayment::ServiceResult.new(success:false, error: notify_data, message: "退款回调失败")
107
106
  end
108
107
  end
109
108
 
@@ -32,38 +32,52 @@ module WechatPayment
32
32
  end
33
33
  end
34
34
 
35
- user_goods = self.class.user_goods_model.constantize.create(
35
+ user_goods_model = self.class.user_goods_model.constantize
36
+
37
+ user_goods = user_goods_model.new(
36
38
  self.class.goods_ref_field => self,
37
39
  self.class.user_ref_field => user,
38
40
  **with_info,
39
41
  **persist_goods_data,
40
42
  )
41
43
 
42
- user_goods.payment_orders.create(
44
+ unless user_goods.save
45
+ return WechatPayment::ServiceResult.new(success: false,
46
+ error: user_goods.errors,
47
+ message: "商品中间表 #{user_goods_model.table_name} 插入数据失败",
48
+ error_type: :create_user_goods_failed)
49
+ end
50
+
51
+ payment_order = user_goods.payment_orders.new(
43
52
  body: name,
44
53
  total_fee: price,
45
54
  trade_type: :JSAPI,
46
55
  customer: user
47
56
  )
48
- end
49
57
 
50
- # 重新支付,应用场景是: 用户取消了支付后,使用最后一张订单进行支付
51
- # @return [WechatPayment::ServiceResult]
52
- def repay
53
- # 如果不是待支付状态
54
- unless pending?
55
- WechatPayment::ServiceResult.new(message: "当前状态不可支付")
58
+ unless payment_order.save
59
+ return WechatPayment::ServiceResult.new(success: false, error: user_goods.errors, message: "支付订单创建失败")
56
60
  end
57
61
 
58
- result = payment_orders.last.repay
59
-
60
- if result.success?
61
- WechatPayment::ServiceResult.new(success: true, data: result.data[:js_payload])
62
- else
63
- WechatPayment::ServiceResult.new(message: result.errors.first[:err_code_des])
64
- end
65
62
  end
66
63
 
64
+ # 重新支付,应用场景是: 用户取消了支付后,使用最后一张订单进行支付
65
+ # @return [WechatPayment::ServiceResult]
66
+ # def repay
67
+ # # 如果不是待支付状态
68
+ # unless pending?
69
+ # WechatPayment::ServiceResult.new(message: "当前状态不可支付")
70
+ # end
71
+
72
+ # result = payment_orders.last.repay
73
+
74
+ # if result.success?
75
+ # WechatPayment::ServiceResult.new(success: true, data: result.data[:js_payload])
76
+ # else
77
+ # WechatPayment::ServiceResult.new(message: result.errors.first[:err_code_des])
78
+ # end
79
+ # end
80
+
67
81
 
68
82
  # 退款
69
83
  # @param [Integer] refund_fee
@@ -1,19 +1,28 @@
1
1
  module WechatPayment
2
2
  class ServiceResult
3
3
  attr_accessor :success,
4
- :errors,
4
+ :error,
5
5
  :data,
6
6
  :message,
7
- :message_type
7
+ :message_type,
8
+ :error_type
8
9
 
9
10
  def initialize(success: false,
10
- errors: nil,
11
+ error: nil,
11
12
  message: nil,
12
13
  message_type: nil,
13
- data: nil)
14
+ data: nil,
15
+ error_type)
14
16
  self.success = success
15
- self.data = data
16
- self.errors = errors.is_a?(Enumerable) ? errors : [errors]
17
+
18
+ self.data = data.presence || {}
19
+
20
+ if self.data.is_a? Hash
21
+ self.data = self.data.with_indifferent_access
22
+ end
23
+
24
+ self.error = error
25
+
17
26
  self.message = message
18
27
  self.message_type = message_type
19
28
  end
@@ -36,14 +45,22 @@ module WechatPayment
36
45
  if message_type.present?
37
46
  message_type.to_sym
38
47
  elsif success?
39
- :notice
48
+ :info
40
49
  else
41
50
  :error
42
51
  end
43
52
  end
44
53
 
45
54
  def as_json(options = {})
46
- data.as_json(options)
55
+ # data.as_json(options)
56
+ {
57
+ success: success,
58
+ data: data,
59
+ message: message,
60
+ message_type: get_message_type,
61
+ error: error,
62
+ error_type: error_type
63
+ }
47
64
  end
48
65
  end
49
66
  end
@@ -1,3 +1,3 @@
1
1
  module WechatPayment
2
- VERSION = '2.0.5'
2
+ VERSION = '2.0.9'
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: 2.0.5
4
+ version: 2.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - ian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-19 00:00:00.000000000 Z
11
+ date: 2022-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails