文档章节

微信接入概要设计

芥末小弟
 芥末小弟
发布于 2017/03/01 09:53
字数 2235
阅读 3
收藏 0
点赞 0
评论 0

引言:为了让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

© 著作权归作者所有

共有 人打赏支持
芥末小弟
粉丝 0
博文 202
码字总数 120715
作品 0
昌平
UCKeFu 发布 1.2.0 版本,增加微信公众号多客服支持

UCKeFu v1.2.0发布,UCKeFu基于JAVA语言开发,是一个全渠道融合的客户支持服务平台,聚合企业内部多个客服渠道,帮助各种行业各种规模的企业建立完整客服体系。 通过将邮件、短信、电话语音、...

优客服多渠道客服系统 ⋅ 2017/04/06 ⋅ 6

Node.js 微信后台搭建系列 - 微信集成

Contents 1. 接入验证 2. 接收消息 3. 发送消息 终于基本到了最后的一步了。微信集成主要包含三个部分: 接入验证,让微信确认你的服务器,就是你公众号的拥有人。 接收微信给你服务器的消息...

鹄思乱想 ⋅ 2017/07/30 ⋅ 0

微信跑步机

微信硬件平台借助微信有巨量的用户流量入口。家居社交、健康医疗等领域的传统电子产品迫切需要进行互联升级。本设计是让用户掌握微信蓝牙接入方案的开发技术。传统电子产品通过蓝牙和wifi接入...

yueqian_scut ⋅ 2017/12/01 ⋅ 0

架构设计和概要设计

初步再来探讨下架构设计和概要设计的区别和边界问题。先谈下架构设计: 架构设计包括了功能性架构和技术架构设计两个部分的内容,功能性架构解决业务流程和功能问题,而技术架构解决非功能性...

小步2013 ⋅ 2014/08/20 ⋅ 0

微信公众平台第三方平台分析

最近比较关注微信公众平台的发展,听说微信的开放平台会有大动作。 着手研究了下微信公众平台的API接口自动回复。设计得还不错。 同时关注了下基于微信公众平台API做的一些第三方平台。 有以...

LarryKoo ⋅ 2013/03/18 ⋅ 2

京东京麦商家开放平台的消息推送架构演进之路

本文来自京东商城京麦平台组开发工程师曹德然的技术分享,感谢作者。 1、前言 京麦实时消息推送是京东的京麦商家开放平台的核心组成部分。从消息源到消息中心再到触达用户,以及最终根据消息...

JackJiang2011 ⋅ 01/10 ⋅ 0

技术积累笔记概要

2015年11月24日 1、rest 速率限制,写属于自己的方法。 2、actions方法深刻了解。 3、YII技术博客:http://blog.csdn.net/terrywater/article/category/2565815。 4、静态方法传递参数的习惯...

风清扬-深圳 ⋅ 2015/11/24 ⋅ 0

B2B营销新里程碑,Oracle营销云全面接入微信

B2B营销正在中国市场受到越来越高的关注。B2B营销的崛起,与中国经济结构转型有着重大关系。中国电子商务研究中心发布的《2016年度中国电子商务市场数据监测报告》显示,2016年中国B2B电子商...

云科技时代 ⋅ 2017/10/30 ⋅ 0

关于微信小程序(应用号)的全部看法[转]

本文由三节课(sanjieke.cn)官方出品,由三节课三位发起人Luke、黄有璨、布棉共同主笔完成。 三节课是首家互联网产品主题学习社区,免费提供最系统的产品 + 运营课程学习,定期出品有深度的...

sami ⋅ 2016/10/23 ⋅ 0

关于第三方支付系统数据库设计

各位OSC的老铁们,我想问下第三方的支付系统数据库要怎么设计呢?公司的系统现在想接入一个微信支付。在网页上扫码支付的那种。。不太清楚如何去设计这个数据库。第一次做这种支付

FenG_Vnc ⋅ 2017/03/21 ⋅ 1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 55分钟前 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 7

mysql in action / alter table

change character set ALTER SCHEMA `employees` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ;ALTER TABLE `employees`.`t2` CHARACTER SET = utf8mb4 , COLLAT......

qwfys ⋅ 今天 ⋅ 0

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

MySQL

查看表相关命令 - 查看表结构    desc 表名- 查看生成表的SQL    show create table 表名- 查看索引    show index from  表名 使用索引和不使用索引 由于索引是专门用于加...

stars永恒 ⋅ 昨天 ⋅ 0

easyui学习笔记

EasyUI常用控件禁用方法 combobox $("#id").combobox({ disabled: true }); ----- $("#id").combobox({ disabled: false}); validatebox $("#id").attr("readonly", true); ----- $("#id").r......

miaojiangmin ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部