微信接入概要设计

引言:为了让magento框架适应微信平台,所以添加一个关于微信的extension

设计思路

使用magento标准的extension接入方式创建一套关于微信的extension

要实现的内容:

阶段一:

1、  基本接口接入

2、  Configuration中可配置微信所需信息及用户是否与微信关联及所需保存的微信用户信息

阶段二:

1、  高级接口接入

2、  多媒体文件存储

3、  Configuration中可配置文件存储方式

接入的功能列表

微信接口相关

基础接口

API配置读取

用于读取API的基本配置信息

JSAPI配置读取

用于读取JSAPI的基本配置信息

API获取Token

通过APPID、APPSecret获取access_token,用于给之后的接口作为认证使用

JSAPI获取Token

通过API的Token来获取JSAPI的ticket,用于给页面上调用JSAPI的认证使用

用户授权获取code

通过认证后得到的用户的code,在获取access_token的时候使用

用户授权获取access_token

通过code获得access_token,在之后获得用户相关信息的时候使用,在该接口中可以获得用户的open_id

刷新access_token

刷新用户的access_token,在access_token过期的时候使用

获取用户的基本信息

通过open_id来获取用户的基本信息

高级接口

开发认证

在微信公众平台启用服务器配置的时候,首先要通过开发认证,然后服务端才能接收到微信推送的消息

接收消息推送

所有的微信推送过来的消息,都通过该函数做后续处理

主动发送服务消息

指定接收者的open_id,可以发送的消息类型如下:

1、  文本

2、  图片

3、  语音

4、  视频

5、  音乐

6、  图文

查询分组

用于查询当前公众号设置了多少个分组

创建分组

自定义分组信息,创建分组

修改分组

修改当前分组的信息

查询用户所在分组

通过open_id获得用户目前所在的分组

移动用户分组

通过open_id及group_id来移动用户所在的分组

获得关注列表

获取当前公众号下的粉丝列表

创建自定义菜单

通过后台设置自定义菜单,每次重新创建都是一次更新

查询自定义菜单

查询出自定义菜单

删除自定义菜单

直接删除当前设置的所有菜单

获得带参二维码的ticket

获取到ticket,用于生成带参二维码

获得带参二维码 二进制

二进制码的二维码数据,可以转为图片或者直接存储到数据库

获得带参二维码 图片

获得一个二维码的图片数据

后台功能相关

Configuration配置

新增配置如下:

1、 登录方式

a)         Open_id自动登录

i.              优点

用户在微信浏览器中可以不用再通过输入账号密码登录

ii.              缺点

只能在微信浏览器中使用,其他浏览器将无法进行登录

b)         账号密码登录

i.              优点

在任何平台都能进行登录

ii.              缺点

微信浏览器进入不能自动登录

c)         两种方式同时使用

i.              优点

可以判断当前是在微信浏览器打开还是其他浏览器打开,再进行两种方式的登录

ii.              缺点

代码量比较大

2、 注册方式

a)         Open_id自动注册

i.              优点

用户从微信浏览器进入不需要输入账号密码等数据即可注册,在后续的个人设置中可以继续绑定手机号等

ii.              缺点

只能从微信注册

b)         用户名密码注册

i.              优点

可以在任何浏览器中注册使用

ii.              缺点

在微信中也不能直接通过open_id登录

c)         用户名密码绑定Open_id注册

绑定了Open_id的用户,可以使用两种登录方式同时使用

3、 是否记录用户的微信信息

建议使用open_id登录注册的方式勾选,其他方式可不勾选

4、 是否记录用户的微信分组信息

记录后可方便后续微信群发信息功能的使用

5、 公众号信息配置

设置APPID、APPSECRET、G_ID等信息

6、 文件信息存储方式

a)         Database

b)         file

Customer管理

新增管理如下:

1、  微信信息管理

a)         用户信息管理

可以查看微信的相关信息,可以修改用户的微信备注,可以查看用户所在分组,可以移动到目标分组

b)         分组信息管理

可以查看公众号下的分组信息、修改分组信息、删除分组

c)         消息管理

可以查看有哪些用户对该公众号发了消息,可以回复消息

接入步骤

命名规范

编写Magento的Extension时需要注意每个php类的命名规范

例如给Weixin扩展增加一个Helper里的Data.php类,那么类名应该是:

Mdtit_Weixin_Helper_Data

创建Module

新增一个Mdtit_Weixin.xml文件到/app/etc/modules中,内容如下:

<config>

    <modules>

        <Mdtit_Weixin> <!—命名空间_模块名称-->

            <active>true</active><!—是否启用-->

            <codePool>local</codePool><!—根目录地址 一般使用local –>

        </Mdtit_Weixin>

    </modules>

</config>

创建文件结构

根据上面config.xml的配置,找到对应的位置:/app/code/local/Mdtit/Weixin 如果没有/Mdtit/Weixin文件夹,则需要先创建

在Weixin文件夹下创建一套文件夹目录

/Block                                   //静态块文件夹

/controllers                         //控制器,该模块请求的路径以及分发处理

/etc                                       //config.xml及system.xml等配置文件,可以设置模块以及后台管理

/Helper                                //帮助类,一般有一个默认的Data.php,可以自行添加其他的

/Model                                 //数据库访问模块或者其他处理

/sql                                        //安装、更新模块的时候调用的sql语句

Block

controllers

创建一个WeixinController.php 继承自:Mage_Core_Controller_Front_Action

代码内容如下:

class Mdtit_Weixin_WeixinController extends Mage_Core_Controller_Front_Action

{

   

}

添加了controller之后需要去./etc/config.xml中配置

etc

config.xml

<config>

    <modules>

        <Mdtit_Weixin><!—命名空间_模块名称 -->

            <version>1.0.0</version><!—版本号,在升级的时候有用 -->

        </Mdtit_Weixin>

    </modules>

    <global>

        <models><!—设置model -->

            <weixin>

                <class>Mdtit_Weixin_Model</class><!—设置model所在位置 -->

            </weixin>

        </models>

                     <helpers><!—设置帮助类 -->

                             <weixin>

                                  <class>Mdtit_Weixin_Helper</class><!—设置帮助类所在位置 -->

                             </weixin>

                     </helpers>

    </global>

    <frontend>

        <secure_url><!—设置安全访问路径 -->

            <weixin_weixin>/weixin/weixin</weixin_weixin>

        </secure_url>

        <routers>

<!—路由配置,设置好后访问路径为: http://localhost/frontname/controllername/method-->

            <weixin>

                <use>standard</use>

                <args>

                    <module>Mdtit_Weixin</module>

                    <frontName>weixin</frontName>

                </args>

            </weixin>

        </routers>       

    </frontend>

   

</config>

Adminhtml.xml

在这里可以配置显示菜单以及权限项

Menu
Acl

<config>

    <acl><!—权限节点 -->

        <resources>

            <admin><!—后台权限 -->

                <children><!—子级设置 -->

                    <system><!—system菜单中 -->

                        <children>

                            <config><!—configuration的菜单中 -->

                                <children>

                                    <weixin translate="title" module="weixin">
<!-
要添加的节点- -->

                                       
<title>Weixin</title>

                                   
</weixin>

                               
</children>

                            </config>

                        </children>

                    </system>

                </children>

            </admin>

        </resources>

    </acl>

</config>

配置完后在后台的权限中可以看到如下图:

System.xml

用于设置在后台的配置项,代码如下:

<config>

   <sections>

               <weixin
translate="label" module="weixin"><!—
设置左侧一级配置项,位于某个tab下 -->

                                 <label>Weixin</label><!—显示的名称 -->

                                 <tab>general</tab><!—位于的tab -->

                                 <frontend_type>text</frontend_type><!—展示类型 -->

         
<sort_order>400</sort_order><!—
显示位置 -->

         
<show_in_default>1</show_in_default><!—
是否在默认项中显示 -->

         
<show_in_website>1</show_in_website><!—
是否在站点中显示 -->

         
<show_in_store>1</show_in_store><!—
是否在店铺中显示 -->

          <groups><!—旗下的组 -->

                        <weiconf
translate="label"><!—
组名 -->

                                           <label>Weixin
configuration</label>

                                           <frontend_type>text</frontend_type>

                 
<sort_order>1</sort_order>

                 
<show_in_default>1</show_in_default>

                  <show_in_website>1</show_in_website>

                 
<show_in_store>1</show_in_store>

                  <fields><!—组中的项 -->

                                <active translate="label"><!—是否启用,默认每个配置项都应该加 -->

                         
<label>Enabled</label>

                         
<frontend_type>select</frontend_type>

                         
<source_model>adminhtml/system_config_source_yesno</source_model>

                         
<sort_order>1</sort_order>

                         
<show_in_default>1</show_in_default>

                         
<show_in_website>1</show_in_website>

                         
<show_in_store>0</show_in_store>

                      </active>

                                <appid translate="label comment">

                          <label>Weixin
appid</label>

                          <comment>This
is appid</comment>

                         
<frontend_type>text</frontend_type>

                         
<sort_order>30</sort_order>

                         
<show_in_default>1</show_in_default>

                         
<show_in_website>1</show_in_website>

                         
<show_in_store>1</show_in_store>

                      </appid>    

                  </fields>

                        </weiconf>

          </groups>

               </weixin>

   </sections>

</config>

配置好后效果如下图:

更多详情可以在该博客查看:http://hnlixf.iteye.com/blog/1705921

注意,如果是添加的一级配置项,需要重新登录系统才能正常进入,否则会出现404错误

Helper

创建一个默认的帮助类,Data.php,其中缺省代码如下:

<?php

class
Mdtit_Weixin_Helper_Data extends Mage_Core_Helper_Abstract

{

        

}

可以没有内容但必须继承Mage_Core_Helper_Abstract,在其他地方调用的方法:

Mage::Helper(‘weixin’)
或者 Mage::Helper(‘weixin/data’)

如果创建了其他的帮助类,比如创建一个Http的帮助类,那么调用的方式为:

Mage::Helper(‘weixin/http’)

只有Data帮助类才可以用缺省的方式调用

Model

模型分为两种:

1:简单模型

2:EAV(Entity
Attribute Value)模型

两种模型都是继承自:Mage_Core_Model_Abstract或Varien_Object

创建一个连接微信API的模型Client.php,代码如下:

class
Mdtit_Weixin_Model_Client extends Mage_Core_Model_Abstract

{

  

}

调用方式如下:

Mage::getModel(‘weixin/client’);//返回的是一个Model对象,可以通过该对象调用Model中的函数或者变量

sql

时间: 2024-10-14 05:03:19

微信接入概要设计的相关文章

微信接入机器人实现对别人消息和群at消息的自动回复

微信接入机器人实现对别人消息和群at消息的自动回复 有时候,我们想让我们的微信号对别人发出的各种消息做出回复.我们可以通过接入图灵机器人的方式实现. IDLE编写py文件并保存,命名为wxbot. #!/usr/bin/env python # coding: utf-8 import os import sys import webbrowser import pyqrcode import requests import json import xml.dom.minidom import

微信接入服务器配置

填写服务器配置 打开https://mp.weixin.qq.com,登录到相应的公众号.在 开发->基本配置里填写相关信息 URL:是与微信进行接入认证的地址,由于我的默认页面是 Token:由开发者自定义填写,用作生成签名 EncodingAESKey:随机生成即可 消息加密方式:明文模式 服务端程序验证 可参考微信开发接入指南 1)获取微信通过GET传过来的参数 2)对token.timestamp.nonce三个参数进行字典排序 3)将上一步中的三个字符串参数进行拼接,并sha1加密 4

JAVA实现 springMVC方式的微信接入、实现消息自动回复

前段时间小忙了一阵,微信公众号的开发,从零开始看文档,踩了不少坑,也算是熬过来了,最近考虑做一些总结,方便以后再开发的时候回顾,也给正在做相关项目的同学做个参考. 思路 微信接入:用户消息和开发者需要的事件推送都会通过微信方服务器发起一个请求,转发到你在公众平台配置的服务器url地址,微信方将带上signature,timestamp,nonce,echostr四个参数,我们自己服务器通过拼接公众平台配置的token,以及传上来的timestamp,nonce进行SHA1加密后匹配signatu

JAVA实现 springMVC方式的微信接入、实现简单的自动回复

前端时间小忙了一阵,微信公众号的开发,从零开始看文档,踩了不少坑,也算是熬过来了,最近考虑做一些总结,方便以后再开发的时候回顾,也给正在做相关项目的同学做个参考. 其实做过一遍之后会发现也不难,大致思路:用户消息和开发者需要的事件推送都会通过微信方服务器发起一个请求,转发到你在公众平台配置的服务器url地址,微信方将带上signature,timestamp,nonce,echostr四个参数,我们自己服务器通过拼接公众平台配置的token,以及传上来的timestamp,nonce进行SHA1

node微信接入

1.本地微信环境搭建(frp/路由器做端口映射) --服务器frp配置并启动:注意打开相应端口(如:7000和8888端口) # frps.ini [common] bind_port = 7000 vhost_http_port = 8888 --客户端frp配置: # frpc.ini [common] server_addr = 39.108.139.60 server_port = 7000 [web] type = http local_port = 8888 custom_domai

微信接入调试方案

转自:http://blog.lazybee.me/wechat-development/ 微信接入是个很头疼的东西,主要原因是 webhook 的 url 必须是服务器地址,无法在开发机上调试. 目前为止我用的方案是在服务器上抓包在本地模拟,配合单元测试把功能开发完成后,再放到服务器上调试,但调试过程中难免要对代码做修改,体验很不好. 最近受不了这么折腾,脑洞大开地想把服务器上的请求直接 proxy 到本地,然后发现 ssh 自带了这个功能. 主要的东西就是 ssh 的 -R 参数,这里假设微

**微信接入探秘(一)——从零认识微信接口(主动接口和被动接口)

本文出处:http://blog.csdn.net/chaijunkun/article/details/53385088,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在原始出处查看此文 写在前面 回想起来今年还没有在CSDN上发过文章,草稿箱里积攒了很多话题,可由于时间关系最终也没发出来.不能再拖了,打算写个系列专题,聊聊微信接入. 随着微信用户量的不断增加,越来越多的企业也将自己的服务加入到了微信当中.微信本身提供的公众号.服务号的基础功能难以满足日趋增长的需

微信接入探秘(一)——从零认识微信接口

本文出处:http://blog.csdn.net/chaijunkun/article/details/53385088,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在原始出处查看此文 写在前面 回想起来今年还没有在CSDN上发过文章,草稿箱里积攒了很多话题,可由于时间关系最终也没发出来.不能再拖了,打算写个系列专题,聊聊微信接入. 随着微信用户量的不断增加,越来越多的企业也将自己的服务加入到了微信当中.微信本身提供的公众号.服务号的基础功能难以满足日趋增长的需

微信平台ASPX高级定制开发(一):如何使用C#建立响应微信接入和自动回复的代码

微信平台不解释了,如果不了解的百度一下下,如果不会用微信,请自宫,光盘重启电脑,打开CMD输入Format C:.网上有很多针对企业级的高级定制ASPX开发,写得草草了事,很多男人干事都草草了事,这可不行,您不懂小伙伴们的心情.初学者总是希望无码,即不要太多代码就能运行起来的示例,本人保证贴出来的代码全是可运行的,代码虽然有点干瘪,但给你想象和改造的空间很大,感觉对于微信平台是真正的互联网技术改造传统行业,为什么? 找度大娘(我的QQ26959368问我,别发邮件收不到!). 本代码实现了接入微