用微信小程序做业务,后端必须用php稳定对接微信接口;需安装phpstudy免费版并启用curl、openssl、json扩展,配置https与备案域名,实现登录鉴权闭环、客服消息验证与接收、发货接口token管理。

用微信小程序做业务,后端必须能稳定对接微信各类接口——登录鉴权、支付回调、客服消息、发货通知、OCR识别,全靠PHP服务端打通。phpstudy免费版虽可快速建站,但微信接口对接绝不是装完就能用,必须手动配置HTTPS、校验域名、闭环处理code和session_key。
安装phpstudy免费版并启用必要扩展
从官网下载phpstudy免费版安装包,双击运行,全程默认选项即可完成基础环境部署。
启动phpstudy后,在“软件管理”中确认已启用PHP 7.4或8.0版本,并勾选cURL、OpenSSL、JSON三个扩展——【缺少任一扩展,jscode2session请求必然失败】。
点击“设置”→“PHP配置”,打开php.ini,搜索`extension=openssl`、`extension=curl`、`extension=json`,确保前面无分号注释;若被禁用,取消注释后重启PHP服务。
配置HTTPS与备案域名
微信强制要求所有接口地址使用HTTPS,本地开发时可用phpstudy自带的SSL证书生成工具一键签发:进入“网站”→“SSL”→“申请证书”,填写本机IP或localhost,生成后立即启用。
将你的测试域名(如dev.example.com)添加到小程序后台「开发管理 → 开发设置 → 服务器域名」中,分别填入request合法域名、uploadFile合法域名、downloadFile合法域名——【域名必须与接口实际调用地址完全一致,大小写敏感,且不能带端口号】。
在phpstudy中为该域名绑定站点,根目录指向你的项目文件夹,确保Nginx/Apache能正确响应HTTPS请求。
实现登录鉴权闭环(关键步骤)
小程序前端调wx.login()获取code,后端接收后必须自行向微信发起https://api.weixin.qq.com/sns/jscode2session请求换openid和session_key,严禁把AppSecret传给前端。
第一步:创建config.php,定义APPID、APPSECRET、数据库连接参数,全部用define()或return数组方式封装,禁止硬编码在接口脚本里。
第二步:编写login.php,用cURL POST发送code至微信接口,设置CURLOPT_SSL_VERIFYPEER为true(生产环境不可设为false),检查返回是否含openid字段。
第三步:若返回errcode=40029,说明code已过期或已被使用——这表示前端未及时传code,或后端重复消费;此时应直接返回错误,不记录日志、不重试、不伪造数据。
第四步:成功获取session_key后,生成32位随机token,连同openid、base64解码后的session_key二进制内容、过期时间(+7200秒)存入weapp_session表,只返回token给小程序。
对接客服消息验证与接收
方法一:签名验证(GET请求阶段)
微信推送验证请求时,必须严格按TOKEN+timestamp+nonce排序后sha1比对signature,验证通过后原样echo $echostr并exit;【漏掉exit会导致响应体污染,微信判定配置失败】。
方法二:消息接收(POST请求阶段)
用file_get_contents('php://input')获取原始XML数据,再用simplexml_load_string()解析,提取ToUserName、FromUserName、MsgType等字段;不要用$_POST,它无法读取原始XML流。
方法三:主动回复消息
构造XML字符串,包含ToUserName、FromUserName、CreateTime、MsgType、Content(文本)或Image(图片)等节点,用cURL POST至https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=xxx,注意access_token需本地缓存并校验有效期。
调用发货接口的token管理
发货接口https://api.weixin.qq.com/wxa/sec/order/upload_shipping_info需要access_token,该token每日限2000次调用、有效期2小时,必须本地缓存。
创建WechatToken类,构造函数接收配置数组,读取__DIR__.'/cache/access_token.json';若文件不存在或过期时间早于当前时间戳,则调用https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=xxx&secret=xxx重新获取并写入缓存,过期时间设为7000秒(比7200短200秒,留出网络延迟余量)。
每次发货前,先实例化WechatToken→getAccessToken(),拿到token后拼入发货接口URL,POST JSON格式的order_key、shipping_code、shipping_name等字段。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











