wechat_payment 2.0.5 → 2.0.9

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: 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