Bibliothèque de développement de plateforme publique WeChat
Interfaces prises en charge :
Caractéristiques:
Tutoriel vidéo d'utilisation : développement de compte public WeChat
Ajoutez cette ligne au Gemfile de votre application :
gem 'wechat-gate'
Et puis exécutez :
$ bundle
Ou installez-le vous-même en tant que :
$ gem install wechat-gate
Avant de commencer à travailler, vous devez effectuer les configurations suivantes sur la plateforme de compte public WeChat :
Créez le fichier wechat.yml dans le répertoire de configuration du projet Rails et configurez les informations de votre compte officiel.
# 区分不同的环境
eggman:
development:
host: http://wechat-test1.eggman.tv
wechat_id: xxxxxxxxxx
app_id: xxxxxxxxxx
app_secret: xxxxxxxxxx
oauth2_redirect_uri: "http://wechat-test1.eggman.tv/wechat/users/callback"
push_url: "http://wechat-test1.eggman.tv/wechat/push"
push_token: xxxxxxxxxxxxxxxxxxxx
production:
host: https://eggman.tv
wechat_id: xxxxxxxxxx
app_id: xxxxxxxxxxxxxxxxxxxx
app_secret: xxxxxxxxxxxxxxxxxxxxxxxxxx
# 如果不需要多环境支持,也可以这样
app_name:
app_id: <%= ENV['WECHAT_APP_NAME_APP_ID'] %>
app_secret: <%= ENV['WECHAT_APP_NAME_APP_SECRET'] %>
oauth2_redirect_uri: <%= ENV['WECHAT_APP_NAME_OAUTH2_REDIRECT_URI'] %>
Précisez ensuite le nom du compte officiel à lire dans l'ApplicationController :
self.wechat_gate_app_name = 'eggman'
Opérations API en arrière-plan (telles que l'acquisition d'informations sur les utilisateurs WeChat, etc.).
Par défaut, la configuration a été initialisée dans le contrôleur, la méthode est wechat_gate_config , utilisez-la simplement directement.
wechat_gate_config . users # 获取用户列表
wechat_gate_config . user ( 'ONE_OPEN_ID' ) # 获取一个用户的详细信息
wechat_gate_config . access_token # 获取当前access_token
# OAuth 2
wechat_gate_config . oauth2_entrance_url ( scope : "snsapi_userinfo" , state : "CURENT_STATE" ) # 获取当前OAuth2授权入口URL
wechat_gate_config . oauth2_access_token ( "TOKEN" ) # 根据OAuth2返回的TOKEN获取access_token
wechat_gate_config . oauth2_user ( "ACCESS_TOKEN" , "ONE_OPEN_ID" ) # 获取一个用户的信息
wechat_gate_config . medias # 获取素材列表, 参数type: image | video | voice | news (图文)
wechat_gate_config . menu_get # 获取菜单
wechat_gate_config . menu_create ( MENU_HASH ) # 创建菜单
wechat_gate_config . generate_js_request_params ( REFERER_URL ) # 返回JS-SDK的验证参数,供前端JS-SDK使用
Bien entendu, vous pouvez également initialiser la configuration manuellement, ou même préciser le chemin d'accès au fichier de configuration :
config = WechatGate::Config.new('eggman', '/path/to/what/ever/you/want.yml')
Access_token et les tickets dans JS_SDK ont un délai d'expiration et des délais d'actualisation, qui ont été pris en compte ici. Vous n'avez pas à vous en soucier. Si vous souhaitez actualiser manuellement, vous pouvez le faire :
config.refresh_access_token
config.refresh_jsapi_ticket
Le fichier de configuration prend en charge erb
Pour plus d'interfaces et de documentation, veuillez consulter directement le code source, qui est écrit de manière très détaillée.
def ticket
url = CGI . unescape ( params [ :url ] ) # 微信中用户访问的页面
@data = wechat_gate_config . generate_js_request_params ( url ) # 生成微信JS-SDK所需的jsapi_ticket,signature等等参数供前段js使用
render content_type : "application/javascript"
end
ticket.js.erb :
var wxServerConfig = <%= @data.to_json.html_safe %>;
<%= params[:callback] %>();
Introduisez ensuite le code suivant sur la page WeChat :
( function ( ) {
var ticket = document . createElement ( "script" ) ;
ticket . src = "http://localhost/api/wechat_ticket/ticket.js?url=" + encodeURIComponent ( window . location . href . split ( '#' ) [ 0 ] ) + "&callback=wxCallback" ;
var s = document . getElementsByTagName ( "script" ) [ 0 ] ;
s . parentNode . insertBefore ( ticket , s ) ;
} ) ( ) ;
Définissez d'abord le fichier de configuration du menu, config/wechat_menu.yml, qui prend en charge erb. Pour le format, veuillez vous référer au document du menu personnalisé WeChat :
button:
- type: view
name: 我的2
url: <%= @config.oauth2_entrance_url(scope: 'snsapi_userinfo', state: 'profile') %>
- type: view
name: 课程
sub_button:
- type: view
name: 免费课程
url: <%= @config.oauth2_entrance_url(scope: 'snsapi_userinfo', state: 'free') %>
- type: view
name: 付费课程
url: <%= @config.oauth2_entrance_url(scope: 'snsapi_userinfo', state: 'paid') %>
La variable **@config** est l'instance actuelle du compte public WeChat. Veuillez ne pas la modifier et l'utiliser directement.
Exécutez ensuite la tâche rake :
$rails wechat_gate:create_menu APP_NAME=eggman CONFIG=/path/to/wechat.yml MENU=/path/to/wechat_menu.yml
Parmi eux, CONFIG est par défaut config/wechat.yml, MENU est par défaut config/wechat_menu.yml et APP_NAME doit être spécifié.
Ajouter un test