专注营销系统开发11年为企业开拓营销空间!

微信小程序工具|微信小程序开发|微信小程序制作平台-龙图应用【XcxIP.com】

多年微信小程序专业开发商
中国行业十佳诚信企业、质量、服务

全国咨询热线15321026642

新闻资讯

新闻资讯
当前位置:网站首页>新闻资讯

手把手教你用ThinkPHP5开发微信小程序,从零到上线全攻略

发布时间:10-28来源:微信小程序工具|微信小程序开发|微信小程序制作平台-龙图应用【XcxIP.com】

说实话,市面上讲小程序开发的教程多如牛毛,但大部分要么停留在前端页面怎么画,要么就是后端代码贴一堆让你自己看。今天我想换个路子,用我们团队实际做过的项目当例子,讲讲怎么用ThinkPHP5把微信小程序的整套后端给搭起来。不整那些虚头巴脑的理论,全是踩过坑之后趟出来的实战经验。

手把手教你用ThinkPHP5开发微信小程序,从零到上线全攻略

先说说环境准备。ThinkPHP5要求PHP版本在5.4以上,我建议直接上PHP7,性能提升不是一星半点。数据库这块,MySQL5.6以上就行,记得把字符集设成utf8mb4,不然用户昵称里带个emoji表情,存进去就直接变问号,这坑我们当时踩得够呛。小程序端注册账号、获取AppID这些基础操作我就不啰嗦了,重点说下目录结构。我习惯在ThinkPHP5的application目录下建一个api模块,专门处理小程序请求。模块里再按版本号建目录,比如v1、v2,这样以后接口升级不会把老版本搞挂。每个版本里按业务拆控制器,User、Goods、Order,一个业务一个文件,清清楚楚。

接口设计这块最要命。小程序请求后端,跟网页开发最大的区别就是不能用Session,因为小程序没有Cookie机制。我当时的做法是引入JWT来做身份认证。用户登录的时候,小程序把微信的code传给后端,后端拿着code去微信服务器换openid,然后生成一个token返回给小程序。之后小程序每次请求都在header里带上这个token,后端用一个公共控制器里的初始化方法,统一解析校验token,把用户信息塞进当前请求的上下文里。这样写的好处是业务控制器里不用每写一个方法就重复一遍登录校验的逻辑,代码干净利索。

接着说说数据库设计。微信小程序跟用户相关的信息,除了用户表本身,还要建一张第三方登录表,专门存openid、unionid这些。别把openid直接塞用户表里,万一以后你想接入百度小程序或者支付宝小程序,一个用户多个平台账号,你那张表会变得特别臃肿。另外,小程序里经常要处理微信支付,支付回调表一定要提前设计好,订单号、交易号、支付金额、回调状态,这些字段一个都不能少。我们第一次做的时候没建回调表,结果支付成功后对账全靠翻日志,那叫一个酸爽。

商品列表和详情页这些常规接口我就不展开说了,重点说说购物车和订单这块的坑。小程序端的购物车数据,我建议存本地,也就是小程序端的storage里面,不要每次加个商品都请求一次后端。购物车只是个临时容器,等用户真正提交订单的时候,再把购物车数据一次性传给后端,后端校验库存、计算价格,生成订单。这么做能少写不少接口,而且用户体验也好很多,滑动删除、修改数量这些操作都在本地完成,不用每次跟服务器确认。

订单提交后的支付流程,这是最容易出问题的地方。小程序端的微信支付,需要后端先调用统一下单接口,拿到prepayid,然后生成签名返回给小程序端,小程序端再调wx.requestPayment拉起支付面板。这里有个细节,统一下单接口要求的金额单位是分,不是元,很多新手就在这栽跟头。我们当时测试支付的时候,传了个1进去,以为是一块钱,结果支付一分钱,查了半天才找到原因。还有签名算法,官方文档写得很清楚,按ASCII码排序拼字符串再加key做MD5,千万别自创算法。

支付回调处理这块,我多说两句。微信服务器回调你的接口,告诉支付结果,这个回调地址必须是公网能访问的HTTPS地址。收到回调后,先验签,然后查订单,更新订单状态,给微信返回成功标识。整个流程里最怕的就是重复回调,所以订单状态更新的时候,一定要加个条件判断,只处理待支付状态的订单。我们当时的做法是更新的时候加个条件,UPDATE orders SET status = 'paid' WHERE orderno = ? AND status = 'pending',这样即使微信重复回调,也就第一次能更新成功。

后台管理这块,虽然不在小程序端,但开发的时候得提前想好。我建议用ThinkPHP5自带的后台模板引擎,或者干脆用Vue单独写个后台管理页面,通过API跟后端交互。反正数据库和接口都是现成的,后台管理只是换个前端壳子的事。我们项目里用了个更省事的方法,直接装个phpMyAdmin,临时改数据就手动跑SQL,虽然不太优雅,但小项目够用。

说下上线部署的注意事项。小程序要求所有请求的域名必须是HTTPS,而且要在小程序后台配置合法域名。ThinkPHP5在线上环境建议关闭调试模式,不然错误提示会直接暴露服务器路径。还有一个容易被忽略的地方,数据库连接池和长连接的问题,Apache或者Nginx的php-fpm配置里,记得把超时时间调大一点,不然小程序那边请求稍微慢一点,服务器这边直接断开连接,用户看到的就只剩加载中三个字。

开发小程序这件事,说难也难,说简单也简单。难在细节,比如支付签名、HTTPS配置、防重复提交这些,一个不注意就是大坑。简单在思路,只要把整个流程捋顺了,后端逻辑跟普通Web开发其实没太大区别。ThinkPHP5虽然现在不是最新的框架了,但胜在文档全、社区活跃、上手快,用来做小程序后端绰绰有余。

分享到:0 用手机看
手把手教你用ThinkPHP5开发微信小程序,从零到上线全攻略

拍下二维码,信息随身看

试试用手机扫一扫,
在你手机上继续观看此页面。