壹 、开发前的预备

  一 、打开网址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

  二 、微信公众平台测试号系统一测试试号申请,登录进去,配置相关消息。

  ③ 、①接口配置音信:url设置,Token设置;②js接口安全域名:域名设置;③体验接口权限表:网页服务:网页账号:授权回调页面域名设置。

  四 、扫描测试号二维号,关怀本身的测试公众号。

  ⑤ 、记住自身的测试号消息:appID,appsecret。要复制到项目中。

  六 、使用公司的ngrok,运转,把地面url(127.0.0.1:8080)映射到测试号的接口配置url。(没有那步逆天操作,开发将无法持续)

  七 、下载项目开发工具–>微信web开发者工具,用于页面调试,当然,用其余工具也得以,只可是是贫乏了一些微信专属的意义罢了。

② 、项目标陈设

  壹 、一般来讲,微信项目不做成效,微信项指标私自总会有三个极大的后台项目默默扶助着。因而,微信支付须要三个档次。微信支付相当于是寄生在后台湾大学品种下的小品种。

  二 、由同盟中华社会大学牛们创制svn地址(一般公司的svn地址的治本爱护都在高层手中,然后给大家那些小学生分配权限)

    图片 1

 

  三 、复制现有的能知足项目多数急需的品类,粘贴过来,多个档次都这样。(节省环境布署,项目搭建和根基成效开发等所耗的刻钟,没有得复制就只能从头开发了)

  4、删除当先百分之五十不要求的文件和代码(甚至能够把具有不是框架的代码都干掉)(有能满意项目要求的代码和公共类的代码留下)

  伍 、项目用的是ssh框架,干掉代码后,初始后台项指标开支(数据库,po,dao,service,action),不难的创设文件,让项目能跑起来。

  六 、微信支付,同样的删旧项目代码,然后开发。

  ⑦ 、配置文件:WeixinConfig extends
JFinalConfig。那块作者不会,主要代码是: PropKit.use(“dev.txt”);

  八 、dev.txt,正是布局音信文件,名字不重庆大学,能够肆意起名,跟WeixinConfig
匹配上就行。下边上海体育场所:(#意味着注释)(因为有上传文件的须求,所以接入了和后台项目布置一样的mongo数据库)

    图片 2

  ⑨ 、对于所要求引入的jar包,本人在pom.xml文件上改动,一般公司的maven库中都有。

  十 、一般品种都有一个Controller,继承于jfinal中的ApiController,达成广大民众号成效,比如:(那么些是原项目部分职能,作者就只改了个创立菜单的菜系名称和链接)(很多功用在jfinal-weixin-1.7.jar都有)

    获取民众号菜单,成立菜单,获取民众号关怀用户,获取用户音讯,发送模板音信,获取参数二维码,获取客服聊天记录,获取微信服务器IP地址,添加多客服,长链接转成短链接,协助多群众账号

叁 、项指标开支

  ① 、微信项目用的Jfinal,那么些笔者不懂。开发的思路:借使自己没猜错,那应该是个订阅号,因为并不曾什么样非常不好的机能,基本上是音信展现。

  二 、开发的笔触①,用3个Controller来做有所页面包车型大巴跳转(分开用多少个也行,重若是作者的种类小)。作者将它取名为HomeLinkController.java,即使本身也认为那几个命名有点傻,可是就将就着用吧。

 1 /**
 2  * 功能: 微信--xxx项目--微官网--所有链接.<br/>
 3  * date: 2017年6月29日 上午11:24:34 <br/>
 4  *
 5  * @author @xxx.com
 6  * @version
 7  * @since JDK 1.8
 8  */
 9 @ControllerBind(controllerKey = "/home-link", viewPath = "/WEB-INF/jsp/first-skin")
10 public class HomeLinkController extends Controller {
11 
12     public void index() {
13         renderJsp("portal/index.jsp");
14     }
15 
16     public void toNews() {
17         renderJsp("portal/news/page.jsp");
18     }
19     //……
20 }

 

  三 、开发的笔触②,用多少个Controller来做有所ajax请求的收取和出殡和埋葬。

 1 /**
 2  * 功能: 微信--xxx项目--微官网.<br/>
 3  * date: 2017年6月29日 上午11:24:34 <br/>
 4  * companyDetail
 5  * 
 6  * @author xxx@xxx.com
 7  * @version
 8  * @since JDK 1.8
 9  */
10 @ControllerBind(controllerKey = "/home-ajax", viewPath = "/WEB-INF/jsp/first-skin")
11 public class HomeAjaxController extends WebApiController {
12 
13     /**
14      * 轮播图
15      */
16     public void swiper() {
17         currUrl = "/home-news-pic-api!page";
18         commonOper();
19     }
20 
21     /**
22      * 新闻列表
23      */
24     public void newsList() {
25         currUrl = "/home-information-release-api!page";
26         commonOper();
27     }
28     //……
29 }

  肆 、在一而再的公共类里面写点代码:

 1     /**
 2      * 功能: 具体操作由 currUrl 决定<br/>
 3      * date: 2017年9月16日 下午7:53:18 <br/>
 4      *把参数全都扔给后台项目的接口
 5      * @author zhaijunfeng
 6      */
 7     public void commonOper() {
 8         paraMap = genParaMap();
 9         putOtherInfo(paraMap);
10         String jsonResult = HttpHelper.post(this.currUrl, paraMap);
11         renderJson(jsonResult);
12     }
13 
14     /**
15      * 功能: 获取 (String, String>)类型约束的request.getParameterMap()
16      * ,其主要目的是把参数发给服务器,不作处理,如须处理,请重写<br/>
17      * date: 2017年9月16日 下午7:27:46 <br/>
18      *
19      * @author xxx
20      * @return
21      */
22     protected Map<String, String> genParaMap() {
23         Map<String, String> map = Maps.newHashMap();
24         Map<String, String[]> reMap = getParaMap();
25         for (String key : reMap.keySet()) {
26             map.put(key, StringUtils.join(reMap.get(key), ","));
27         }
28         return map;
29     }

 

   伍 、引入工具类HttpHelper.java,调用了JFinal中的Http基特.class,完成了后台项指标接口请求,强调了json格式,Constants.MEN_HU正是dev.txt中门户地址(笔者写错了,应该是后台地址)上边那句.

1 public class HttpHelper {
2     private static String CHARSET = "UTF-8";
3 
4     public static String post(String method, Map<String, String> parm) {
5         String json = HttpKit.post(Constants.MEN_HU + method, parm, "", Constants.header);
6         return json;
7     }
8     //……
9 }

 

   六 、后台项指标action层,新建四个包,专门放置微信的接口,包里的兼具action完全对外开放(微信公众号不必要登记作用嘛,所以把拦截器干掉)

 1 /**
 2  * 功能: 信息发布管理<br/>
 3  * date: 2017-4-8 11:50:08 <br/>
 4  *
 5  * @author robot
 6  * @version
 7  * @since JDK 1.8
 8  */
 9 @Scope("prototype")
10 @ParentPackage(value = "struts-default")  //就是这个,之前是struts-default-authority,至于是在哪设置的我就不知道了,拦截器我不会
11 @Namespace(value = "/")
12 @Results({
13         @Result(name = "toAddOrUpdate", location = "/WEB-INF/jsp/gateway-menu-manage/home-information-release/create.jsp"),
14         @Result(name = "toPage", location = "/WEB-INF/jsp/gateway-menu-manage/home-information-release/page.jsp") })
15 public class HomeInformationReleaseApiAction extends AbstractCrudAction<HomeInformationRelease> {
16   //……
17 }

 

  柒 、前后台开发者之间开会,须要分析,切磋商讨,约定接口(都是自笔者来干,所以自身就不要开会了)

  ⑧ 、后台项目开发者写后台功用,微信前端开发者写前端页面(那些跟微信就没啥关系了,原来的后台java怎么写就怎么写,原来的移动端web开发怎么写就怎么写)

  玖 、特殊意义开发,恐怕跟微信有关,在那边就不详细表达了。可通过浏览小编别的学习微信支付的稿子明白。

  ⑩ 、完毕项目,收工。

 

相关文章

网站地图xml地图