Module: Wechat::Helpers

Defined in:
lib/wechat/helpers.rb

Instance Method Summary collapse

Instance Method Details

#wechat_config_js(config_options = {}) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/wechat/helpers.rb', line 5

def wechat_config_js(config_options = {})
   = config_options[:account]

  # Get domain_name, api and app_id
  if .blank? ||  == controller.class.
    # default account
    domain_name = controller.class.trusted_domain_fullname
    api = controller.wechat
    app_id = controller.class.corpid || controller.class.appid
  else
    # not default account
    config = Wechat.config()
    domain_name = config.trusted_domain_fullname
    api = controller.wechat()
    app_id = config.corpid || config.appid
  end

  page_url = if domain_name
               "#{domain_name}#{controller.request.original_fullpath}"
             else
               controller.request.original_url
             end
  page_url = page_url.split('#').first
  js_hash = api.jsapi_ticket.signature(page_url)

  # Field `beta` please check https://developer.work.weixin.qq.com/document/path/90514#%E6%AD%A5%E9%AA%A4%E4%BA%8C%EF%BC%9A%E9%80%9A%E8%BF%87config%E6%8E%A5%E5%8F%A3%E6%B3%A8%E5%85%A5%E6%9D%83%E9%99%90%E9%AA%8C%E8%AF%81%E9%85%8D%E7%BD%AE

  config_js = <<~WECHAT_CONFIG_JS
    wx.config({
      beta: #{config_options[:beta] || false},
      debug: #{config_options[:debug] || false},
      appId: "#{app_id}",
      timestamp: "#{js_hash[:timestamp]}",
      nonceStr: "#{js_hash[:noncestr]}",
      signature: "#{js_hash[:signature]}",
      jsApiList: ['#{config_options[:api]&.join("','")}'],
      openTagList: ['#{config_options[:open_tags]&.join("','")}']
    });
  WECHAT_CONFIG_JS
  javascript_tag config_js, type: 'application/javascript'
end