php微信公众平台配置接口开发程序


Posted in PHP onSeptember 22, 2016

在阅读这篇文章之前你要做以下的准备:

1.注册一个订阅号(通过微信公众平台https://mp.weixin.qq.com/);
2.注册新浪云并实名认证http://sae.sina.com.cn/
3.实名认证新浪云之后,创建一个云应用.
4.你需要知道php基础知识.

一:验证接口

1.登录我们的公众号.然后点击进入开发者工具,在登录之后页面的左下角.

2.点击进入开发者文档.之后点击开始开发,点击接入指南,我们会看到如下图.

php微信公众平台配置接口开发程序

图片上有说,接入微信公众平台开发,开发者需要按照如下步骤完成:

1.填写服务器配置
2.验证服务器地址的有效性
3.依据接口文档实现业务逻辑.

第一步:填写服务器配置

我们登录微信公众号之后,右下角基本开发配置点进去,

php微信公众平台配置接口开发程序

URL是开发者用来接收微信消息和事件的接口URL.具体怎么填我们等下详细说.

Token可以随意填写(但是每个人都不一样的,如果后面提交失败可以试着修改Token),这个Token会和接口中包含的Token进行比对,从而验证安全性,EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。

填写的URL,需要我们有自己的服务器的地址,现在我们就要到我们之前注册的新浪云云应用了.

一.登录新浪云,点击云应用,点击进入控制台.如下图创建

php微信公众平台配置接口开发程序

二.级域名和应用名称,自己起个名字就好.然后点击进入下图红色标记的地方.

php微信公众平台配置接口开发程序

三.如下图箭头指示点击进入编辑代码

php微信公众平台配置接口开发程序

四.之后会弹出SAE的界面,我们需要在里面建立一个php文件,然后点击通过URL访问,之后我们把这个网址拷贝下来,放到我们之前基本配置的URL上.

php微信公众平台配置接口开发程序

第二步:验证消息的确来自微信服务器

具体的php代码如下:

<?php
 // //最简单的验证方式
 // echo $_GET["echostr"];

 //验证是否来自于微信
 function checkWeixin(){
  //微信会发送4个参数到我们的服务器后台 签名 时间戳 随机字符串 随机数

  $signature = $_GET["signature"];
  $timestamp = $_GET["timestamp"];
  $nonce = $_GET["nonce"];
  $echostr = $_GET["echostr"];
  $token = "qilipingmgl";

  // 1)将token、timestamp、nonce三个参数进行字典序排序
  $tmpArr = array($nonce,$token,$timestamp);
  sort($tmpArr,SORT_STRING);

  // 2)将三个参数字符串拼接成一个字符串进行sha1加密
  $str = implode($tmpArr);
  $sign = sha1($str);

  // 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
  if ($sign == $signature) {
   echo $echostr;
  }
 }
 checkWeixin();
?>

注意:代码中 $token 是每个人不同的,我们需要填写自己的,点击开发者工具,之后右边有公众平台测试账号,点击进入,之后我们会看到接口配置,把Token复制过来放到代码中.

我们把这个代码复制到我们刚创建的SAE的php文件里,再保存(记得要保存哦),然后点击通过URL访问,

如果报错了(报错的信息是数字的话),请点击开发者文档中,点击开始前必读,有个接口返回码说明,我们可以对照一下,错误在哪里, 注意:0的时候表示请求成功.

二.获取access_token

提示:access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token.我们作为开发者要妥善保存,access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。

第一步,我们点击开发者文档,点击开始开发,点击获取access_token之后会看到,http请求方式:GET,然后一个网址,我们需要用到这个网址,如下图,

php微信公众平台配置接口开发程序

E0204D74-2EA6-4943-B93F-7E7C1E2FA88A.png

第二步:我们写GET请求的函数,获取access_token

<?php
 class Weixin{
  private $appID = "wxe62f370c4e2cade2";
  private $appsecret = "58807091ae5a4c59ee3e47108184bdb7";

  function getAccessToken(){
   $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->appID}&secret={$this->appsecret}";

   // return $this->httpGet($url);
   //json字符串
   $json = $this->httpGet($url);
   //解析json
   $obj = json_decode($json);
   return $obj->access_token;
  }

  function httpGet($url){
   //1.初始化
   $curl = curl_init();
   //配置curl
   curl_setopt($curl, CURLOPT_URL, $url);
   curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
   //执行curl
   $res = curl_exec($curl);
   //关闭curl
   curl_close($curl);
   return $res;
  }
 }
 $wx = new Weixin();
 echo $wx->getAccessToken();

 /*
  获取access_token方法 get方法
 */
?>

注意:代码中 $appID 和 $appsecret 是每个人不同的,我们需要填写自己的,点击开发者工具,之后右边有公众平台测试账号,点击进入,之后我们会看到测试号信息.然后复制过来放到代码中.

第三步:我们代码复制到SAEphp文件中,点击右键通过URL访问,如果返回 {"access_token":"ACCESS_TOKEN","expires_in":7200} 表示我们获取token成功.如果不幸报错了,没关系我们找错误,点击开发文档,点击开始前必读,点击接口返回码说明,我们对照一下,根据提示找错误就好了.

说道这里我们的配置接口就完成了,下一节我们继续微信开发->自定菜单创建接口.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
用PHP读注册表
Oct 09 PHP
我的论坛源代码(九)
Oct 09 PHP
php缓存技术介绍
Nov 25 PHP
php 判断数组是几维数组
Mar 20 PHP
解析php中curl_multi的应用
Jul 17 PHP
PHP多进程编程实例
Oct 15 PHP
php使用Jpgraph绘制饼状图的方法
Jun 10 PHP
php将一维数组转换为每3个连续值组成的二维数组
May 06 PHP
理解php依赖注入和控制反转
May 11 PHP
php观察者模式应用场景实例详解
Feb 03 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
May 02 PHP
php数据序列化测试实例详解
Aug 12 PHP
PHP使用星号隐藏用户名,手机和邮箱的实现方法
Sep 22 #PHP
php中二分法查找算法实例分析
Sep 22 #PHP
Yii2中SqlDataProvider用法示例
Sep 22 #PHP
php实现压缩合并js的方法【附demo源码下载】
Sep 22 #PHP
php简单压缩css样式示例
Sep 22 #PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
Sep 22 #PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
Sep 21 #PHP
You might like
PHP SPL标准库中的常用函数介绍
2015/05/11 PHP
PHP+iframe图片上传实现即时刷新效果
2016/11/18 PHP
PHP快速推送微信模板消息
2017/04/14 PHP
微信开发之获取JSAPI TICKET
2017/07/07 PHP
体验js中splice()的强大(插入、删除或替换数组的元素)
2013/01/16 Javascript
TypeScript具有的几个不同特质
2015/04/07 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
AngularJs入门教程之环境搭建+创建应用示例
2016/11/01 Javascript
JS正则子匹配实例分析
2016/12/22 Javascript
bootstrap配合Masonry插件实现瀑布式布局
2017/01/18 Javascript
js轮播图透明度切换(带上下页和底部圆点切换)
2017/04/27 Javascript
使用Node.js实现RESTful API的示例
2017/08/01 Javascript
webpack+vue-cil中proxyTable处理跨域的方法
2018/07/20 Javascript
用Fundebug插件记录网络请求异常的方法
2019/02/21 Javascript
jQuery实现input[type=file]多图预览上传删除等功能
2019/08/02 jQuery
js实现秒表计时器
2019/12/16 Javascript
如何通过vscode运行调试javascript代码
2020/07/24 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
2020/09/21 Javascript
用virtualenv建立多个Python独立虚拟开发环境
2017/07/06 Python
django中静态文件配置static的方法
2018/05/20 Python
解决pandas中读取中文名称的csv文件报错的问题
2018/07/04 Python
一个可以套路别人的python小程序实例代码
2019/04/09 Python
Django中自定义查询对象的具体使用
2019/10/13 Python
html5通过postMessage进行跨域通信的方法
2017/12/04 HTML / CSS
美国领先的汽车轮胎和轮毂供应商:TireBuyer
2016/07/21 全球购物
StudentUniverse英国:学生航班、酒店和旅游
2019/08/25 全球购物
中医药大学毕业生自荐信
2013/11/08 职场文书
《歌唱二小放牛郎》教学反思
2014/04/19 职场文书
入职担保书范文
2014/05/21 职场文书
工程负责人任命书
2014/06/06 职场文书
离婚财产分隔协议书
2014/10/23 职场文书
捐助倡议书
2015/01/19 职场文书
学校少先队工作总结
2015/08/12 职场文书
演讲稿之我的初心我的成长
2019/08/12 职场文书
Spring Data JPA的Audit功能审计数据库的变更
2021/06/26 Java/Android
win server2012 r2服务器共享文件夹如何设置
2022/06/21 Servers