-
Couldn't load subscription status.
- Fork 225
Open
Description
可能是部分微信服务器升级了,现在执行 invoke_unifiedorder 等方法有几率会报 Zlib::DataError: incorrect header check 错误。
/home/deploy/.rbenv/versions/2.6.4/lib/ruby/2.6.0/net/http/response.rb:382 → inflate
/home/deploy/.rbenv/versions/2.6.4/lib/ruby/2.6.0/net/http/response.rb:382 → block in inflate_adapter
/home/deploy/.rbenv/versions/2.6.4/lib/ruby/2.6.0/net/protocol.rb:497 → call_block
/home/deploy/.rbenv/versions/2.6.4/lib/ruby/2.6.0/net/protocol.rb:488 → <<
/home/deploy/.rbenv/versions/2.6.4/lib/ruby/2.6.0/net/protocol.rb:163 → read
/home/deploy/.rbenv/versions/2.6.4/lib/ruby/2.6.0/net/http/response.rb:405 → read
/home/deploy/.rbenv/versions/2.6.4/lib/ruby/2.6.0/net/http/response.rb:293 → block in read_body_0
/home/deploy/.rbenv/versions/2.6.4/lib/ruby/2.6.0/net/http/response.rb:264 → inflater
/home/deploy/.rbenv/versions/2.6.4/lib/ruby/2.6.0/net/http/response.rb:283 → read_body_0
/home/deploy/.rbenv/versions/2.6.4/lib/ruby/2.6.0/net/http/response.rb:204 → read_body
/GEM_ROOT/gems/rest-client-2.1.0/lib/restclient/request.rb:739 → block (2 levels) in transmit
/home/deploy/.rbenv/versions/2.6.4/lib/ruby/2.6.0/net/http.rb:1518 → block in transport_request
/home/deploy/.rbenv/versions/2.6.4/lib/ruby/2.6.0/net/http/response.rb:165 → reading_body
/home/deploy/.rbenv/versions/2.6.4/lib/ruby/2.6.0/net/http.rb:1517 → transport_request
/home/deploy/.rbenv/versions/2.6.4/lib/ruby/2.6.0/net/http.rb:1479 → request
/GEM_ROOT/gems/airbrake-9.4.5/lib/airbrake/rails/net_http.rb:7 → block in request
/GEM_ROOT/gems/airbrake-9.4.5/lib/airbrake/rack.rb:21 → capture_timing
/GEM_ROOT/gems/airbrake-9.4.5/lib/airbrake/rails/net_http.rb:6 → request
/GEM_ROOT/gems/rest-client-2.1.0/lib/restclient/request.rb:471 → net_http_do_request
/GEM_ROOT/gems/rest-client-2.1.0/lib/restclient/request.rb:733 → block in transmit
/home/deploy/.rbenv/versions/2.6.4/lib/ruby/2.6.0/net/http.rb:920 → start
/GEM_ROOT/gems/rest-client-2.1.0/lib/restclient/request.rb:727 → transmit
/GEM_ROOT/gems/rest-client-2.1.0/lib/restclient/request.rb:163 → execute
/GEM_ROOT/gems/rest-client-2.1.0/lib/restclient/request.rb:63 → execute
/GEM_ROOT/gems/wx_pay-0.21.0/lib/wx_pay/service.rb:587 → invoke_remote
/GEM_ROOT/gems/wx_pay-0.21.0/lib/wx_pay/service.rb:78 → invoke_unifiedorder
应该是 RestClient 的问题,我暂时用 httprb 解决了
def self.invoke_refund(params, options = {})
params = {
appid: options.delete(:appid) || WxPay.appid,
mch_id: options.delete(:mch_id) || WxPay.mch_id,
key: options.delete(:key) || WxPay.key,
nonce_str: SecureRandom.uuid.tr('-', ''),
}.merge(params)
params[:op_user_id] ||= params[:mch_id]
options = {
ssl_context: OpenSSL::SSL::SSLContext.new.tap do |ctx|
ctx.set_params(
cert: options.delete(:apiclient_cert) || WxPay.apiclient_cert,
key: options.delete(:apiclient_key) || WxPay.apiclient_key,
)
# ctx.verify_mode = OpenSSL::SSL::VERIFY_NONE
end
}.merge(options)
WxPay::Result.new(Hash.from_xml(invoke_remote('/secapi/pay/refund', make_payload(params), options)))
end
def self.invoke_remote(url, payload, options = {})
gateway_url = options.delete(:gateway_url) || GATEWAY_URL
url = "#{gateway_url}#{url}"
options[:body] = payload
HTTP.timeout(5).headers(content_type: 'application/xml').post(url, options).to_s
endsitoto and cnhuye
Metadata
Metadata
Assignees
Labels
No labels