From d97ced41403bad205bd515344f60195b156fac58 Mon Sep 17 00:00:00 2001 From: p31729568 Date: Wed, 9 Oct 2019 15:16:28 +0800 Subject: [PATCH] modify wechat js sign --- .../wechats/js_sdk_signatures_controller.rb | 6 +++--- app/libs/wechat.rb | 2 ++ .../{util/wechat_store.rb => wechat/client.rb} | 8 +++----- app/libs/wechat/error.rb | 14 ++++++++++++++ .../{util/wechat.rb => wechat/official_account.rb} | 14 +++++--------- .../{util_wechat_init.rb => wechat_init.rb} | 4 ++-- 6 files changed, 29 insertions(+), 19 deletions(-) create mode 100644 app/libs/wechat.rb rename app/libs/{util/wechat_store.rb => wechat/client.rb} (92%) create mode 100644 app/libs/wechat/error.rb rename app/libs/{util/wechat.rb => wechat/official_account.rb} (58%) rename config/initializers/{util_wechat_init.rb => wechat_init.rb} (79%) diff --git a/app/controllers/wechats/js_sdk_signatures_controller.rb b/app/controllers/wechats/js_sdk_signatures_controller.rb index f6a01b0e2..4ed1680b0 100644 --- a/app/controllers/wechats/js_sdk_signatures_controller.rb +++ b/app/controllers/wechats/js_sdk_signatures_controller.rb @@ -2,10 +2,10 @@ class Wechats::JsSdkSignaturesController < ApplicationController def create timestamp = Time.now.to_i noncestr = ('A'..'z').to_a.sample(8).join - signature = Util::Wechat.js_sdk_signature(params[:url], noncestr, timestamp) + signature = Wechat::OfficialAccount.js_sdk_signature(params[:url], noncestr, timestamp) - render_ok(appid: Util::Wechat.appid, timestamp: timestamp, noncestr: noncestr, signature: signature) - rescue Util::WechatStore::Error => ex + render_ok(appid: Wechat::OfficialAccount.appid, timestamp: timestamp, noncestr: noncestr, signature: signature) + rescue Wechat::Error => ex render_error(ex.message) end end \ No newline at end of file diff --git a/app/libs/wechat.rb b/app/libs/wechat.rb new file mode 100644 index 000000000..68e2c06b8 --- /dev/null +++ b/app/libs/wechat.rb @@ -0,0 +1,2 @@ +module Wechat +end \ No newline at end of file diff --git a/app/libs/util/wechat_store.rb b/app/libs/wechat/client.rb similarity index 92% rename from app/libs/util/wechat_store.rb rename to app/libs/wechat/client.rb index a6f3ac76a..0d34b9dda 100644 --- a/app/libs/util/wechat_store.rb +++ b/app/libs/wechat/client.rb @@ -1,8 +1,6 @@ -class Util::WechatStore +class Wechat::Client BASE_SITE = 'https://api.weixin.qq.com'.freeze - Error = Class.new(StandardError) - attr_reader :appid, :secret def initialize(appid, secret) @@ -60,11 +58,11 @@ class Util::WechatStore Rails.logger.error("[wechat] response:#{response.status} #{result.inspect}") if response.status != 200 - raise Error, result.inspect + raise Wechat::Error.parse(result) end if result['errcode'].present? && result['errcode'].to_i.nonzero? - raise Error, result.inspect + raise Wechat::Error.parse(result) end result diff --git a/app/libs/wechat/error.rb b/app/libs/wechat/error.rb new file mode 100644 index 000000000..f693fb41b --- /dev/null +++ b/app/libs/wechat/error.rb @@ -0,0 +1,14 @@ +class Wechat::Error < StandardError + attr_reader :code + + def initialize(code, message) + super message + @code = code + end + + class << self + def parse(result) + new(result['errcode'], result['errmsg']) + end + end +end \ No newline at end of file diff --git a/app/libs/util/wechat.rb b/app/libs/wechat/official_account.rb similarity index 58% rename from app/libs/util/wechat.rb rename to app/libs/wechat/official_account.rb index cb7b9044d..320fbdba3 100644 --- a/app/libs/util/wechat.rb +++ b/app/libs/wechat/official_account.rb @@ -1,8 +1,4 @@ -module Util::Wechat - BASE_SITE = 'https://api.weixin.qq.com'.freeze - - Error = Class.new(StandardError) - +class Wechat::OfficialAccount class << self attr_accessor :appid, :secret @@ -13,15 +9,15 @@ module Util::Wechat end def access_token - wechat_store.access_token + client.access_token end def jsapi_ticket - wechat_store.jsapi_ticket + client.jsapi_ticket end - def wechat_store - @_wechat_store ||= ::Util::WechatStore.new(appid, secret) + def client + @_client ||= Wechat::Client.new(appid, secret) end end end \ No newline at end of file diff --git a/config/initializers/util_wechat_init.rb b/config/initializers/wechat_init.rb similarity index 79% rename from config/initializers/util_wechat_init.rb rename to config/initializers/wechat_init.rb index cb39afcaf..946e5f638 100644 --- a/config/initializers/util_wechat_init.rb +++ b/config/initializers/wechat_init.rb @@ -12,5 +12,5 @@ rescue => ex wechat_config = {} end -Util::Wechat.appid = wechat_config['appid'] -Util::Wechat.secret = wechat_config['secret'] +Wechat::OfficialAccount.appid = wechat_config['appid'] +Wechat::OfficialAccount.secret = wechat_config['secret']