跳至主要內容

介绍及本地启动

李鹏军...大约 7 分钟开源教程文档

介绍及本地启动

项目背景

12月18日,腾讯CEO马化腾在第二届深商大会“互联与时代”论坛上透露,微信小程序将会在2017年春节前推出。移动互联网繁荣发展的背景下,app产品在应用市场数量众多,且更新换代速度极快,这就带来了下载与卸载的烦恼。小程序是一种新的开放能力,开发者可以快速地开发一个小程序。小程序可以在微信内被便捷地获取和传播,同时具有出色的使用体验。

全新服务体验

微信小程序是一种全新的连接用户与服务的方式, 它可以在微信内被便捷地获取和传播,同时具有出色的使用体验。

庞大用户量

微信2016年已突破9亿用户,月活用户已近7亿,现 在每天每人花费在微信上的时间占了所有程序的30%以上,其庞大用户 群体以及生态链条,是商家抢占流量入口的必争之地。

流量引导

微信小程序作为连接微信与APP之间的桥梁,可以起到流量引导作用。

项目描述

微同商城是一套极速开发微信小程序商城框架,主要包括用户管理、角色管理、部门管理、菜单管 理、定时任务、文件上传、数据权限、Redis缓存、前后台统一异常处理等系统通用功能,还拥有一套完整的商城后台管理系统、微信小程序源码、小程序接口服务、以及完善的支付流程,极大缩短项目的开发周期。

项目特点

  • 微同商城采用SpringMyBatisMybatis-PlusShiroKnife4j框架开发。
  • 灵活的权限控制,可控制到页面或按钮,满足绝大部分的权限需求。
  • 完善的部门管理及数据权限,通过注解实现数据权限的控制。
  • 支持MySQLOracle等主流数据库。
  • 多个团队协作开发,有效降低核心代码泄露。
  • 推荐使用阿里云服务器部署本系统,免费试用阿里云产品,请点击【免费领取open in new window

项目介绍

platform-admin

后台模块,也是系统的核心,用来开发后台管理系统。

platform-api

接口模块,是小程序商城的接口开发模块。实现了微信用户登录、接口权限认证、获取登录用户、商城首页、专题、分类、购物车、个人中心等功能,为小程序商城接口的安全调用,提供一套完整的解决方案。

platform-common

公共模块,其他模块以jar包的形式引入进去,主要提供些工具类,以及platform-adminplatform-api模块公共的entitymapperdaoservice服务,有效减少一个功能重复多次编写代码。

platform-gen

代码生成器模块,只需在数据库里,创建好表结构,就可以生成增、删、改、查等操作的代码,包括entitymapperdaoservicecontroller、页面等所有代码,项目开发神器。

platform-schedule

定时任务模块,使用开源框架quartz实现分布式定时任务,动态添加、修改、删除、暂停、恢复、立即执行定时任务。

uni-mall

商城小程序端uniapp开发源码

wx-mall

商城小程序端原始开发源码

开发使用到的软件和工具

(最后一章节提供下载地址)

  • Xshell6
  • Xftp6
  • Postman
  • Git
  • Tomcat8.0.33
  • jdk1.8
  • MySQL5.7
  • Navicat for MySQL
  • redis
  • IntelliJ IDEA、Eclipse
  • 微信web开发者工具

本地部署

推荐软件环境

  • jdk1.8
  • maven3.3.3
  • tomcat8
  • mysql5.5+
  • redis4.0.1

通过git下载源码

git clone https://gitee.com/fuyang_lipengjun/platform.git

本机启动redis服务、mysql数据库

初始化项目

  • 创建数据库platform-shop,数据库编码为UTF-8,执行数据库脚本_sql/platform.sql、sys_region.sql
  • 启动项目之前修改dev/platform.properties,修改数据库账号和密码,wx.appId、wx.secret、wx.mchId、wx.paySignKey
  • 修改j2cache.propertie配置redis.hosts和redis.password

使用IDEA启动项目

/img/start/02/2.png
/img/start/02/2.png
  • 配置tomcat

/img/start/02/4.png/img/start/02/5.png/img/start/02/6.png/img/start/02/7.png/img/start/02/8.png

  • 记得要设置Application context/platform-framework
/img/start/02/9.png
/img/start/02/9.png
/img/start/02/10.png
/img/start/02/10.png
/img/start/02/11.png
/img/start/02/11.png

项目访问路径

接口文档路径

小程序接口路径

使用微信web开发者工具启动wx-mall

导入wx-mall到微信web开发者工具

/img/start/02/3.png/img/start/02/12.png

填写微信公众平台申请的小程序APPID

和platform.properties里的wx.appId保持一致

/img/start/02/13.png
/img/start/02/13.png

修改APIJS配置

var API_BASE_URL = 'http://localhost:8080/platform-framework/api/';

/img/start/02/14.png
/img/start/02/14.png

开发模式设置

勾选不校验合法域名

/img/start/02/15.png
/img/start/02/15.png

关于发布到手机端测试

若想发布到手机端测试请求数据,后台项目必须发布到云服务器(使用内网穿透工具亦可),然后在微信开发工具点击预览,如下图

/img/start/02/16.png 然后使用手机微信扫码,注意此时还是请求不到数据,需要打开调试模式才能正常访问接口数据,操作如下图

/img/start/02/17.png
/img/start/02/17.png

获取帮助

Git地址

https://gitee.com/fuyang_lipengjun/platformopen in new window

官网

http://fly2you.cnopen in new window

微信支付配置参数

商户在微信公众平台或开放平台提交微信支付申请,微信支付工作人员审核资料无误后开通相应的微信支付权限。微信支付申请审核通过后,商户在申请资料填写的邮箱中收取到由微信支付小助手发送的邮件,此邮件包含开发时需要使用的支付账户信息,见下图所示。

/img/start/02/20.png
/img/start/02/20.png
微信支付商户号mch_id商户申请微信支付后,由微信支付分配的商户收款账号。
API密钥key交易过程生成签名的密钥,仅保留在商户系统和微信支付后台,不会在网络中传播。商户妥善保管该Key,切勿在网络中传输,不能在其他客户端中存储,保证key不会被泄漏。商户可根据邮件提示登录微信商户平台进行设置。也可按一下路径设置:微信商户平台(pay.weixin.qq.comopen in new window)-->账户中心-->账户设置-->API安全-->密钥设置

微信支付接口中,涉及资金回滚的接口会使用到API证书,包括退款、撤销接口。商家在申请微信支付成功后,收到的相应邮件后,可以按照指引下载API证书,也可以按照以下路径下载:微信商户平台(pay.weixin.qq.comopen in new window)-->账户中心-->账户设置-->API安全 。

/img/start/02/21.png
/img/start/02/21.png

API证书安全

  • 证书文件不能放在web服务器虚拟目录,应放在有访问权限控制的目录中,防止被他人下载;
  • 建议将证书文件名改为复杂且不容易猜测的文件名;
  • 商户服务器要做好病毒和木马防护工作,不被非法侵入者窃取证书文件。

商户回调API安全

在普通的网络环境下,HTTP请求存在DNS劫持、运营商插入广告、数据被窃取,正常数据被修改等安全风险。商户回调接口使用HTTPS协议可以保证数据传输的安全性。所以微信支付建议商户提供给微信支付的各种回调采用HTTPS协议。

签名算法

签名校验工具open in new window

签名生成的通用步骤如下:

  • 第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。

    特别注意以下重要规则:

    • 参数名ASCII码从小到大排序(字典序);
    • 如果参数的值为空不参与签名;
    • 参数名区分大小写;
    • 验证调用返回或微信主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。
    • 微信接口可能增加字段,验证签名时必须支持增加的扩展字段
  • 第二步,在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。