微信小程序云开发:使用 PHP 接口与云开发交互的详细方法

2024-07-18
来源:网络整理

微信小程序通过云服务器控制云数据库的写入、读取、更新、删除

由于微信个人版的限制,小程序功能并不全面,利用云服务器进行后端交互、云端开发可以一定程度上解除小程序的部分限制。

下面笔者详细讲解如何使用PHP接口与小程序端云开发进行交互

目录

前言

由于微信个人版的限制,小程序功能并不全面,利用云服务器进行后端交互、云端开发可以一定程度上解除小程序的部分限制。

我目前正在参加一个小程序开发大赛,以下案例可以参考

1. 如何使用

是小程序唯一的全局后台接口调用凭证,调用大部分后台接口时需要用到,开发者可以通过接口获取并妥善保存。

请求 URL

得到

请求参数

是 填写

是小程序的唯一凭证,可在“微信公众平台-设置-开发设置”页面获取。(需已成为开发者,且账号无异常状态)

是小程序的唯一凭证密钥,即获取方式与

php开发小程序教程_微信小程序php后端搭建_微信小程序php后台开发

详情请参考微信开发者指南

一种实时动态缓存的生成方法

这里作者使用以下方式生成缓存文件txt动态查询

//appID获取 $appid='这里是你的APPID'; //app密匙 $secret='这里是你的APP密匙'; //app环境 $env = '这里是你的APP环境'; //访问密匙 $key = '为了信息安全,建议增加密匙'; //$getkey = $_GET['key']; if($getkey==$key){ //缓存文件读取 $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; $content = file_get_contents("$DOCUMENT_ROOT/actoken.txt"); $readarray = explode(',', $content); $access_token = $readarray[0]; //var_dump($readarray); //判断文件是否到期 if(time()>$readarray[1]){ //获取新数据 $data = file_get_contents("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$secret"); $getarray = json_decode($data, true); $nowtoken = $getarray["access_token"]; //文件缓存 $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; $fp = fopen("$DOCUMENT_ROOT/actoken.txt",'w'); fwrite($fp,$nowtoken.','); fwrite($fp,time()+7200); fclose($fp); //再次重复读取 $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; $content = file_get_contents("$DOCUMENT_ROOT/actoken.txt"); $readarray = explode(',', $content); $access_token = $readarray[0]; } }else{ header('location:./ban.php'); } //获取到的token //var_dump($access_token) ?>

二、数据库调用步骤1、使用CURL模拟POST/GET提交

由于官方接口只支持POST发送数据,所以需要模拟提交:

function post_curls($url, $post) { $curl = curl_init(); // 启动一个CURL会话 curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在 curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转 curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求 curl_setopt($curl, CURLOPT_POSTFIELDS, $post); // Post提交的数据包 curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环 curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回 $res = curl_exec($curl); // 执行操作 if (curl_errno($curl)) { echo 'Errno'.curl_error($curl);//捕抓异常 } curl_close($curl); // 关闭CURL会话 return $res; // 返回数据,json格式 } //json转数组 function json_to_array($str) { if (is_string($str)) $str = json_decode($str); $arr=array(); foreach($str as $k=>$v) { if(is_object($v) || is_array($v)) $arr[$k]=json_to_array($v); else $arr[$k]=$v; } return $arr; }

2.通过微信接口互相访问

这里的变量$就是需要操作数据库的内容,变量是你获取到的微信密钥:

请注意,一个地址只能对数据库进行一次操作!不同的操作访问不同的东西!具体操作请参考微信官方文档。

//与微信接口互相访问 //数据更新 function getwxupdate($query,$accesstoken){ $data['env'] = $env; $data['query'] = $query; $body = json_encode($data); $info = post_curls("https://api.weixin.qq.com/tcb/databaseupdate?access_token=$accesstoken",$body); return $info; } //数据插入 function getwxinsert($query,$accesstoken){ $data['env'] = $env; $data['query'] = $query; $body = json_encode($data); $info = post_curls("https://api.weixin.qq.com/tcb/databaseadd?access_token=$accesstoken",$body); return $info; } //数据取用 function getwxfetch($query,$accesstoken){ $data['env'] = $env; $data['query'] = $query; $body = json_encode($data); $info = post_curls("https://api.weixin.qq.com/tcb/databasequery?access_token=$accesstoken",$body); return $info; } //数据删除 function getwxdelete($query,$accesstoken){ $data['env'] = $env; $data['query'] = $query; $body = json_encode($data); $info = post_curls("https://api.weixin.qq.com/tcb/databasedelete?access_token=$accesstoken",$body); return $info; }

有了数据库操作之后,你可以继续使用PHP或者其他语言与小程序云对接,也可以用于生产云开发的管理后台等。

总结

目前用到的文件有3个,第一个是采集,第二个是为其生成的缓存txt,第三个是库操作,剩下的就交给你们自己吧~

分享