weixin_authorize 1.6.0 → 1.6.2

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 (37) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +1 -0
  3. data/Gemfile +4 -5
  4. data/README.md +19 -8
  5. data/lib/weixin_authorize.rb +31 -13
  6. data/lib/weixin_authorize/api.rb +3 -0
  7. data/lib/weixin_authorize/api/data_cube.rb +8 -0
  8. data/lib/weixin_authorize/api/mass.rb +78 -0
  9. data/lib/weixin_authorize/api/media.rb +50 -4
  10. data/lib/weixin_authorize/api/oauth.rb +38 -0
  11. data/lib/weixin_authorize/api/template.rb +34 -0
  12. data/lib/weixin_authorize/api/user.rb +18 -0
  13. data/lib/weixin_authorize/client.rb +45 -16
  14. data/lib/weixin_authorize/config.rb +12 -3
  15. data/lib/weixin_authorize/handler/result_handler.rb +1 -0
  16. data/lib/weixin_authorize/js_ticket/object_store.rb +21 -0
  17. data/lib/weixin_authorize/js_ticket/redis_store.rb +41 -0
  18. data/lib/weixin_authorize/js_ticket/store.rb +40 -0
  19. data/lib/weixin_authorize/token/object_store.rb +25 -0
  20. data/lib/weixin_authorize/token/redis_store.rb +35 -0
  21. data/lib/weixin_authorize/token/store.rb +72 -0
  22. data/lib/weixin_authorize/version.rb +1 -1
  23. data/spec/1_fetch_access_token_spec.rb +0 -1
  24. data/spec/2_fetch_jsticket_spec.rb +10 -0
  25. data/spec/api/custom_spec.rb +0 -2
  26. data/spec/api/groups_spec.rb +0 -1
  27. data/spec/api/mass_spec.rb +65 -0
  28. data/spec/api/media_spec.rb +1 -3
  29. data/spec/api/menu_spec.rb +0 -2
  30. data/spec/api/qrcode_spec.rb +3 -5
  31. data/spec/api/user_spec.rb +5 -2
  32. data/spec/spec_helper.rb +7 -4
  33. data/weixin_authorize.gemspec +5 -5
  34. metadata +31 -20
  35. data/lib/weixin_authorize/adapter/client_storage.rb +0 -23
  36. data/lib/weixin_authorize/adapter/redis_storage.rb +0 -34
  37. data/lib/weixin_authorize/adapter/storage.rb +0 -73
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6ae5accd2ca51dbfc3abbd41c541a8913493f554
4
- data.tar.gz: a5fdabeca49c96650bdbadf256904dafb357b7be
3
+ metadata.gz: 7dcf07084b174215116839f53e3933a8360cd975
4
+ data.tar.gz: 7e92dc7924d59e62f8f3f84f22b29947e2468c28
5
5
  SHA512:
6
- metadata.gz: 99ddcf2475e65599290e0413742f4214f666860b52e6b5ba4bdef7559e6170822e4c9803450c9b3096620a3044da2a3c21612ff2aaaf962bbe9754c3d465bc53
7
- data.tar.gz: 8fea13921210dbc0e0d9b8741c6a3ab33de5177bc4ae076ec32b6c1f3b7374e9517e0b2fb2592f10286f3037e069a175cd9001d9f522021494925c72a6b65750
6
+ metadata.gz: b42caf728256adac156fabb2c4ebfe62b37a1b7b3d3916713164c6ec761d4d2de5863904e38c96d2d4c23b6698551c35849abd79007c0a9586a5dafddd0c914b
7
+ data.tar.gz: 96acbc6e7563d3a44bdea2b9063e3b9fd1f43a00219cfe0d6ad91577c734a82dac144cec11fbb257917e1ca63396c515a5aa2f783c8815d2c33b867f0a09f6af
data/.rspec CHANGED
@@ -1 +1,2 @@
1
1
  --format documentation --color spec --drb
2
+ --require spec_helper
data/Gemfile CHANGED
@@ -1,16 +1,15 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  group :test, :development do
4
- gem "rspec", "~> 3.0.0.beta1"
5
- gem "redis-namespace", "~> 1.4.1"
6
- gem "rake", "~> 0.9.6"
4
+ gem "rspec"
5
+ gem 'redis-namespace'
7
6
  gem 'simplecov', '~> 0.7.1', :require => false
8
7
  gem "codeclimate-test-reporter", require: nil
9
8
  gem 'coveralls', require: false
10
9
  # For debugger
11
- gem "pry-rails", "~> 0.3.2"
10
+ gem "pry-rails"
12
11
 
13
- gem "pry-debugger", "~> 0.2.2"
12
+ gem "pry-byebug"
14
13
  end
15
14
 
16
15
  # Specify your gem's dependencies in weixin_authorize.gemspec
data/README.md CHANGED
@@ -7,24 +7,35 @@
7
7
 
8
8
  Support using [Redis](http://redis.io) to store `access_token`
9
9
 
10
- [查看Wiki](https://github.com/lanrion/weixin_authorize/wiki)
10
+ [Wiki](https://github.com/lanrion/weixin_authorize/wiki)
11
11
 
12
12
  [Getting-Started](https://github.com/lanrion/weixin_authorize/wiki/Getting-Started)
13
13
 
14
+ ## V2.0开发中:
15
+ https://github.com/lanrion/weixin_authorize/milestones/v2.0-dev
16
+
17
+ 1. 重构API实现,调用方式
18
+ 2. 对token,ticket的管理,提供第三方开发灵活者自助化
19
+ 3. 尝试RestClient的弃用,选择更高效的HTTP client包
20
+ 4. 支持更多的异常处理机制
21
+
14
22
  注意:查看Wiki或者源代码时,请切换对应的版本来查看。Master处于不断更新完善分支。
15
23
 
16
24
  ## How to test
17
25
 
18
- Go to https://github.com/lanrion/weixin_authorize/issues/2, apply a weixin sandbox test account and follow this account, then add them to your `~/.bash_profile`
26
+ Go to https://github.com/lanrion/weixin_authorize/issues/2, apply a weixin sandbox test account and follow this account
19
27
 
28
+ https://github.com/lanrion/weixin_authorize/blob/master/spec/spec_helper.rb
29
+
30
+ change your infos:
31
+
32
+ ```ruby
33
+ ENV["APPID"]="wxe371e0960de5426a"
34
+ ENV["APPSECRET"]="572b93d3d20aea242692a804243a141b"
35
+ ENV["OPENID"]="oEEoyuEasxionjR5HygmEOQGwRcw"
20
36
  ```
21
- export APPID="your test account weixin app_id"
22
- export APPSECRET="your test account weixin appsecret"
23
- export OPENID="your weixin openid"
24
- ```
25
- Last, you have to **open a new terminal tag (Reload bash_profile)** , and run `rspec .`
26
37
 
27
- **微信API挺SB,客服消息API,如果出现45015(回复时间超过限制),那么需要取消关注测试账号,然后再重新关注一次即可。另外,创建用户分组API刚开始测试的时候是OK的,后来会出现-1(系统繁忙),然后一直是这样。**
38
+ then run `rspec .`
28
39
 
29
40
  ## Contributing
30
41
 
@@ -1,10 +1,8 @@
1
1
  require "rest-client"
2
-
3
2
  require "carrierwave"
4
- require "weixin_authorize/carrierwave/weixin_uploader"
5
-
6
3
  require 'yajl/json_gem'
7
4
 
5
+ require "weixin_authorize/carrierwave/weixin_uploader"
8
6
  require "weixin_authorize/config"
9
7
  require "weixin_authorize/handler"
10
8
  require "weixin_authorize/api"
@@ -12,26 +10,38 @@ require "weixin_authorize/client"
12
10
 
13
11
  module WeixinAuthorize
14
12
 
15
- # Storage
16
- autoload(:Storage, "weixin_authorize/adapter/storage")
17
- autoload(:ClientStorage, "weixin_authorize/adapter/client_storage")
18
- autoload(:RedisStorage, "weixin_authorize/adapter/redis_storage")
13
+ # token store
14
+ module Token
15
+ autoload(:Store, "weixin_authorize/token/store")
16
+ autoload(:ObjectStore, "weixin_authorize/token/object_store")
17
+ autoload(:RedisStore, "weixin_authorize/token/redis_store")
18
+ end
19
+
20
+ module JsTicket
21
+ autoload(:Store, "weixin_authorize/js_ticket/store")
22
+ autoload(:ObjectStore, "weixin_authorize/js_ticket/object_store")
23
+ autoload(:RedisStore, "weixin_authorize/js_ticket/redis_store")
24
+ end
19
25
 
20
- OK_MSG = "ok".freeze
21
- OK_CODE = 0.freeze
22
- GRANT_TYPE = "client_credential".freeze
26
+ OK_MSG = "ok"
27
+ OK_CODE = 0
28
+ GRANT_TYPE = "client_credential"
23
29
 
24
30
  class << self
25
31
 
26
32
  def http_get_without_token(url, headers={}, endpoint="plain")
27
33
  get_api_url = endpoint_url(endpoint, url)
28
- load_json(RestClient.get(get_api_url, :params => headers))
34
+ load_json(resource(get_api_url).get(params: headers))
29
35
  end
30
36
 
31
37
  def http_post_without_token(url, payload={}, headers={}, endpoint="plain")
32
38
  post_api_url = endpoint_url(endpoint, url)
33
39
  payload = JSON.dump(payload) if endpoint == "plain" # to json if invoke "plain"
34
- load_json(RestClient.post(post_api_url, payload, :params => headers))
40
+ load_json(resource(post_api_url).post(payload, params: headers))
41
+ end
42
+
43
+ def resource(url)
44
+ RestClient::Resource.new(url, rest_client_options)
35
45
  end
36
46
 
37
47
  # return hash
@@ -47,7 +57,11 @@ module WeixinAuthorize
47
57
  end
48
58
 
49
59
  def plain_endpoint
50
- "https://api.weixin.qq.com/cgi-bin"
60
+ "#{api_endpoint}/cgi-bin"
61
+ end
62
+
63
+ def api_endpoint
64
+ "https://api.weixin.qq.com"
51
65
  end
52
66
 
53
67
  def file_endpoint
@@ -58,6 +72,10 @@ module WeixinAuthorize
58
72
  "https://mp.weixin.qq.com/cgi-bin#{url}"
59
73
  end
60
74
 
75
+ def open_endpoint(url)
76
+ "https://open.weixin.qq.com#{url}"
77
+ end
78
+
61
79
  end
62
80
 
63
81
  end
@@ -4,3 +4,6 @@ require "weixin_authorize/api/custom"
4
4
  require "weixin_authorize/api/groups"
5
5
  require "weixin_authorize/api/qrcode"
6
6
  require "weixin_authorize/api/media"
7
+ require "weixin_authorize/api/mass"
8
+ require "weixin_authorize/api/oauth"
9
+ require "weixin_authorize/api/template"
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+ module WeixinAuthorize
3
+ module Api
4
+ module DataCube
5
+
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,78 @@
1
+ # encoding: utf-8
2
+ module WeixinAuthorize
3
+ module Api
4
+ module Mass
5
+
6
+ MSG_TYPE = ["mpnews", "image", "text", "voice", "mpvideo"]
7
+
8
+ # media_info= {"media_id" media_id}
9
+ # https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=ACCESS_TOKEN
10
+ def mass_with_group(group_id, media_info, msgtype="mpnews")
11
+ group_option = {"filter" => {"group_id" => group_id.to_s}}
12
+ media = generate_media(msgtype, media_info, group_option)
13
+
14
+ mass_url = "#{mass_base_url}/sendall"
15
+ http_post(mass_url, media)
16
+ end
17
+
18
+ # https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=ACCESS_TOKEN
19
+ # if mpvideo,
20
+ # media_info= {"media_id" => media_id, "title" => "title", "description" => "description"}
21
+ def mass_with_openids(openids, media_info, msgtype="mpnews")
22
+ openid_option = {"touser" => openids}
23
+ media = generate_media(msgtype, media_info, openid_option)
24
+ mass_url = "#{mass_base_url}/send"
25
+ http_post(mass_url, media)
26
+ end
27
+
28
+ # 请注意,只有已经发送成功的消息才能删除删除消息只是将消息的图文详情页失效,已经收到的用户,还是能在其本地看到消息卡片。
29
+ # 另外,删除群发消息只能删除图文消息和视频消息,其他类型的消息一经发送,无法删除。
30
+ def mass_delete_with_msgid(msg_id)
31
+ mass_url = "#{mass_base_url}/delete"
32
+ http_post(mass_url, {"msg_id" => msg_id})
33
+ end
34
+
35
+ # 预览接口【订阅号与服务号认证后均可用】
36
+ def mass_preview(openid, media_info, msgtype="mpnews")
37
+ openid_option = {"touser" => openid}
38
+ media = generate_media(msgtype, media_info, openid_option)
39
+ mass_url = "#{mass_base_url}/preview"
40
+ http_post(mass_url, media)
41
+ end
42
+
43
+ # 查询群发消息发送状态【订阅号与服务号认证后均可用】
44
+ def mass_get_status(msg_id)
45
+ mass_url = "#{mass_base_url}/get"
46
+ http_post(mass_url, {"msg_id" => msg_id})
47
+ end
48
+
49
+ private
50
+
51
+ def mass_base_url
52
+ "/message/mass"
53
+ end
54
+
55
+ def generate_media(msgtype, media_info, option)
56
+ msgtype = msgtype.to_s
57
+ raise "#{msgtype} is a valid msgtype" if not MSG_TYPE.include?(msgtype)
58
+ {
59
+ msgtype => convert_media_info(msgtype, media_info),
60
+ "msgtype" => msgtype
61
+ }.merge(option)
62
+ end
63
+
64
+ # 如果用户填写的media信息,是字符串,则转换来符合的数据结构,如果 是hash,则直接使用用户的结构。
65
+ def convert_media_info(msgtype, media_info)
66
+ if media_info.is_a?(String)
67
+ if msgtype == "text"
68
+ return {"content" => media_info}
69
+ else
70
+ return {"media_id" => media_info}
71
+ end
72
+ end
73
+ media_info
74
+ end
75
+
76
+ end
77
+ end
78
+ end
@@ -22,8 +22,58 @@ module WeixinAuthorize
22
22
  download_media_url
23
23
  end
24
24
 
25
+ # 上传图文消息素材, 主要用于群发消息接口
26
+ # {
27
+ # "articles": [
28
+ # {
29
+ # "thumb_media_id":"mwvBelOXCFZiq2OsIU-p",
30
+ # "author":"xxx",
31
+ # "title":"Happy Day",
32
+ # "content_source_url":"www.qq.com",
33
+ # "content":"content",
34
+ # "digest":"digest"
35
+ # },
36
+ # {
37
+ # "thumb_media_id":"mwvBelOXCFZiq2OsIU-p",
38
+ # "author":"xxx",
39
+ # "title":"Happy Day",
40
+ # "content_source_url":"www.qq.com",
41
+ # "content":"content",
42
+ # "digest":"digest"
43
+ # }
44
+ # ]
45
+ # }
46
+ # Option: author, content_source_url
47
+ def upload_mass_news(news=[])
48
+ upload_news_url = "#{media_base_url}/uploadnews"
49
+ http_post(upload_news_url, {articles: news})
50
+ end
51
+
52
+ # media_id: 需通过基础支持中的上传下载多媒体文件来得到
53
+ # https://file.api.weixin.qq.com/cgi-bin/media/uploadvideo?access_token=ACCESS_TOKEN
54
+
55
+ # return:
56
+ # {
57
+ # "type":"video",
58
+ # "media_id":"IhdaAQXuvJtGzwwc0abfXnzeezfO0NgPK6AQYShD8RQYMTtfzbLdBIQkQziv2XJc",
59
+ # "created_at":1398848981
60
+ # }
61
+ def upload_mass_video(media_id, title="", desc="")
62
+ video_msg = {
63
+ "media_id" => media_id,
64
+ "title" => title,
65
+ "description" => desc
66
+ }
67
+
68
+ http_post("#{media_base_url}/uploadvideo", video_msg)
69
+ end
70
+
25
71
  private
26
72
 
73
+ def media_base_url
74
+ "/media"
75
+ end
76
+
27
77
  def process_file(media)
28
78
  return media if media.is_a?(File) && jpep?(media)
29
79
 
@@ -41,10 +91,6 @@ module WeixinAuthorize
41
91
  file
42
92
  end
43
93
 
44
- def media_base_url
45
- "/media"
46
- end
47
-
48
94
  def process_media(uploader)
49
95
  uploader = covert(uploader)
50
96
  uploader.file.to_file
@@ -0,0 +1,38 @@
1
+ # encoding: utf-8
2
+ module WeixinAuthorize
3
+ module Api
4
+ module Oauth
5
+
6
+ # 应用授权作用域: scope
7
+ # snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),
8
+ # snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)
9
+ # default is snsapi_base
10
+ # state 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值
11
+
12
+ # 如果用户点击同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。若用户禁止授权,则重定向后不会带上code参数,仅会带上state参数redirect_uri?state=STATE
13
+ def authorize_url(redirect_uri, scope="snsapi_base", state="weixin")
14
+ require "erb"
15
+ redirect_uri = ERB::Util.url_encode(redirect_uri)
16
+ WeixinAuthorize.open_endpoint("/connect/oauth2/authorize?appid=#{app_id}&redirect_uri=#{redirect_uri}&response_type=code&scope=#{scope}&state=#{state}#wechat_redirect")
17
+ end
18
+
19
+ # 首先请注意,这里通过code换取的网页授权access_token,与基础支持中的access_token不同。公众号可通过下述接口来获取网页授权access_token。如果网页授权的作用域为snsapi_base,则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。
20
+
21
+ # 微信通过请求 #authorize_url 方法后,会返回一个code到redirect_uri中
22
+ def get_oauth_access_token(code)
23
+ WeixinAuthorize.http_get_without_token("/sns/oauth2/access_token?appid=#{app_id}&secret=#{app_secret}&code=#{code}&grant_type=authorization_code", {}, "api")
24
+ end
25
+
26
+ # refresh_token: 填写通过access_token获取到的refresh_token参数
27
+ def refresh_oauth2_token(refresh_token)
28
+ WeixinAuthorize.http_get_without_token("/sns/oauth2/refresh_token?appid=#{app_id}&grant_type=refresh_token&refresh_token=#{refresh_token}", {}, "api")
29
+ end
30
+
31
+ # 如果网页授权作用域为snsapi_userinfo,则此时开发者可以通过access_token和openid拉取用户信息了。
32
+ def get_oauth_userinfo(openid, oauth_token, lang="zh_CN")
33
+ WeixinAuthorize.http_get_without_token("/sns/userinfo?access_token=#{oauth_token}&openid=#{openid}&lang=#{lang}", {}, "api")
34
+ end
35
+
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,34 @@
1
+ # encoding: utf-8
2
+ module WeixinAuthorize
3
+ module Api
4
+ module Template
5
+
6
+ # 设置所属行业
7
+ # 需要选择公众账号服务所处的2个行业,每月可更改1次所选行业;
8
+ # 初始化行业时,传入两个,每月更改时,传入一个即可。
9
+ def set_template_industry(industry_id1, industry_id2="")
10
+ industries = {industry_id1: industry_id1}
11
+ if industry_id2 != ""
12
+ industries.merge!({industry_id2: industry_id2})
13
+ end
14
+ http_post("/template/api_set_industry", industries)
15
+ end
16
+
17
+ # 获得模板ID
18
+ # code: 模板库中模板的编号,有“TM**”和“OPENTMTM**”等形式
19
+ def add_template(code)
20
+ http_post("/template/api_add_template", template_id_short: code)
21
+ end
22
+
23
+ # 发送模板消息
24
+ def send_template_msg(touser, template_id, url, topcolor, data)
25
+ msg = {
26
+ touser: touser, template_id: template_id,
27
+ url: url, topcolor: topcolor, data: data
28
+ }
29
+ http_post("/message/template/send", msg)
30
+ end
31
+
32
+ end
33
+ end
34
+ end
@@ -18,6 +18,24 @@ module WeixinAuthorize
18
18
  http_get(followers_url, {next_openid: next_openid})
19
19
  end
20
20
 
21
+ # 设置备注名
22
+ # http请求方式: POST(请使用https协议)
23
+ # https://api.weixin.qq.com/cgi-bin/user/info/updateremark?access_token=ACCESS_TOKEN
24
+ # POST数据格式:JSON
25
+ # POST数据例子:
26
+ # {
27
+ # "openid":"oDF3iY9ffA-hqb2vVvbr7qxf6A0Q",
28
+ # "remark":"pangzi"
29
+ # }
30
+ def update_remark(openid, remark)
31
+ update_url = "/user/info/updateremark"
32
+ payload = {
33
+ openid: openid,
34
+ remark: remark
35
+ }
36
+ http_post(update_url, payload)
37
+ end
38
+
21
39
  private
22
40
 
23
41
  def user_base_url
@@ -10,27 +10,66 @@ module WeixinAuthorize
10
10
  include Api::Groups
11
11
  include Api::Qrcode
12
12
  include Api::Media
13
+ include Api::Mass
14
+ include Api::Oauth
15
+ include Api::Template
13
16
 
14
17
  attr_accessor :app_id, :app_secret, :expired_at # Time.now + expires_in
15
18
  attr_accessor :access_token, :redis_key
16
- attr_accessor :storage
19
+ attr_accessor :jsticket, :jsticket_expired_at, :jsticket_redis_key
17
20
 
18
21
  def initialize(app_id, app_secret, redis_key=nil)
19
22
  @app_id = app_id
20
23
  @app_secret = app_secret
21
- @expired_at = Time.now.to_i
22
- @redis_key = security_redis_key((redis_key || "weixin_" + app_id))
23
- @storage = Storage.init_with(self)
24
+ @jsticket_expired_at = @expired_at = Time.now.to_i
25
+ @redis_key = security_redis_key(redis_key || "weixin_#{app_id}")
26
+ @jsticket_redis_key = security_redis_key("js_sdk_#{app_id}")
24
27
  end
25
28
 
26
29
  # return token
27
30
  def get_access_token
28
- @storage.access_token
31
+ token_store.access_token
29
32
  end
30
33
 
31
34
  # 检查appid和app_secret是否有效。
32
35
  def is_valid?
33
- @storage.valid?
36
+ token_store.valid?
37
+ end
38
+
39
+ def token_store
40
+ Token::Store.init_with(self)
41
+ end
42
+
43
+ def jsticket_store
44
+ JsTicket::Store.init_with(self)
45
+ end
46
+
47
+ def get_jsticket
48
+ jsticket_store.jsticket
49
+ end
50
+
51
+ # 获取js sdk 签名包
52
+ def get_jssign_package(url)
53
+ timestamp = Time.now.to_i
54
+ noncestr = SecureRandom.hex(16)
55
+ str = "jsapi_ticket=#{get_jsticket}&noncestr=#{noncestr}&timestamp=#{timestamp}&url=#{url}";
56
+ signature = Digest::SHA1.hexdigest(str)
57
+ {
58
+ "appId" => app_id, "nonceStr" => noncestr,
59
+ "timestamp" => timestamp, "url" => url,
60
+ "signature" => signature, "rawString" => str
61
+ }
62
+ end
63
+
64
+ # 暴露出:http_get,http_post两个方法,方便第三方开发者扩展未开发的微信API。
65
+ def http_get(url, headers={}, endpoint="plain")
66
+ headers = headers.merge(access_token_param)
67
+ WeixinAuthorize.http_get_without_token(url, headers, endpoint)
68
+ end
69
+
70
+ def http_post(url, payload={}, headers={}, endpoint="plain")
71
+ headers = access_token_param.merge(headers)
72
+ WeixinAuthorize.http_post_without_token(url, payload, headers, endpoint)
34
73
  end
35
74
 
36
75
  private
@@ -39,16 +78,6 @@ module WeixinAuthorize
39
78
  {access_token: get_access_token}
40
79
  end
41
80
 
42
- def http_get(url, headers={}, endpoint="plain")
43
- headers = headers.merge(access_token_param)
44
- WeixinAuthorize.http_get_without_token(url, headers, endpoint)
45
- end
46
-
47
- def http_post(url, payload={}, headers={}, endpoint="plain")
48
- headers = access_token_param.merge(headers)
49
- WeixinAuthorize.http_post_without_token(url, payload, headers, endpoint)
50
- end
51
-
52
81
  def security_redis_key(key)
53
82
  Digest::MD5.hexdigest(key.to_s).upcase
54
83
  end