php 微信开发 接口配置_微信公众号php开发接口配置失败 - CSDN
  • 我们知道做微信开发需要处理来自用户、微信服务器的各类的消息,查阅微信文档可总结出的规律是 验证消息来自微信服务器为GET请求,其他微信消息的推送是POST请求 , 根据这一规律我们就可以将校...

    纵观微信公众平台开发的各类书籍,基本上微信定制开发都是从微信消息开始的,主要是服务器被动回复消息这块为主,这个模块也算微信的核心,这次将以验证微信消息来自微信服务器为例,分享下我的代码

    一  入口的切入点

    我们知道做微信开发需要处理来自用户、微信服务器的各类的消息,查阅微信文档可总结出的规律是 验证消息来自微信服务器为GET请求,其他微信消息的推送是POST请求 , 根据这一规律我们就可以将校验和消息推送统一进行处理

    二 代码的实现

    1 php可以通过$_SERVER['REQUEST_METHOD']获取请求的类型

    2 按照流程程序需要校验signature的有效性并返回正确signature

    3 计算signature,php的步骤是  数组排序、把数组转成字符串、sha1计算出signature(非常重要)

    对于第三部php还算比较简单,但是像java的话就比较复杂,这里先贴出php的算法

    function checkSignature()
        {
            $timestamp = $_GET["timestamp"];
            $nonce = $_GET["nonce"];
    
            $tmpArr = array(
                TOKEN,
                $timestamp,
                $nonce
            );
            sort($tmpArr, SORT_STRING);
            $tmpStr = implode($tmpArr);
            $tmpStr = sha1($tmpStr);
    
            if ($tmpStr) {
                return $tmpStr;
            } else {
                return "";
            }
        }

    开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数如下表所示:

    参数 描述
    signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
    timestamp 时间戳
    nonce 随机数
    echostr 随机字符串

    这个是从微信开发文档上摘抄过来的,给大家做参考,详细的可查阅微信开发文档

    function isValid()
        {
            $signature = $_GET["signature"];
            if ($signature == $this->checkSignature()) {
                return true;
            } else {
                return false;
            }
        }

    上述两个方法我写到了名为WeixinHandler的类里面,TOKEN是定义好的常量

    define("TOKEN", "weixinCourse");
    
    
    // 步骤
    // 1 判断请求方法,get请求一般为消息验证,post为其他消息交互
    // 2 验证signature是否正确(消息来自微信服务器)
    $handler = new WeixinHandler();
    $reqMethod = strtolower($_SERVER["REQUEST_METHOD"]);
    if ("get" == $reqMethod && !empty($_GET["echostr"])) {
        if ($handler->isValid()) {
            $echostr = $_GET["echostr"];
            echo $echostr;
            exit();
        }
    } else {
        //判断消息类型,返回"你发送的是xxx消息"
        $handler->responseMessage();
    }

    responseMessage用来处理各类的消息,因为这次主要是入门,这个方法下次的博客分享会给出来,到这里校验消息来自微信服务器的功能已经完成了,但是还是需要注意一下几点

    1 填写的URL需要外网可以访问且越简单越好,不建议url为带参数的形式;可使用花生壳、ngrok等

    2 Token必须和程序定义的保持一致

    java的消息校验可参考这个,因为本人是搞java的,就忍不住多啰嗦一下

    https://blog.csdn.net/lyq8479/article/details/8944988

    展开全文
  • 接入微信公众平台开发,开发者需要按照如下步骤完成:1、填写服务器配置2、验证服务器地址的有效性3、依据接口文档实现业务逻辑①、在微信公众号的配置中填写正确的url地址接口,以及自己想要生成的Token②、验证...

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

    1、填写服务器配置

    2、验证服务器地址的有效性

    3、依据接口文档实现业务逻辑

    ①、在微信公众号的配置中填写正确的url地址接口,以及自己想要生成的Token

    ②、验证服务器地址的有效性主要根据请求微信服务是否会返回几个参数判断

     
    signature微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
    timestamp时间戳
    nonce随机数
    echostr随机字符串

    开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:
    1)将token、timestamp、nonce三个参数进行字典序排序 2)将三个参数字符串拼接成一个字符串进行sha1加密 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
    
    检验signature的PHP示例代码:
    private function checkSignature()
    	{
    		$signature = $_GET["signature"];
    		$timestamp = $_GET["timestamp"];
    		$nonce = $_GET["nonce"];    
    
    		$token = TOKEN;
    		$tmpArr = array($token, $timestamp, $nonce);
    		sort($tmpArr);
    		$tmpStr = implode( $tmpArr );
    		$tmpStr = sha1( $tmpStr );
    
    		if( $tmpStr == $signature ){
    			return true;
    		}else{
    			return false;
    		}
    	}
    

    ③、依据接口文档实现业务逻辑(为了安全进行逻辑判断,是否是访问微信服务器,以及是否是微信服务器返回的信息)

    public function valid(){
    		if(isset($_GET["echostr"]) && $this->checkSignature()){
    			$echoStr = $_GET["echostr"];
    			echo $echoStr;
    			exit;
    		}else{
    			$this->responseMsg();
    		}
    ④、自动回复(关键字回复比如:微信个人回复“天气”,微信公众号会自动回复“今天天气很好”。微信个人回复“你好”,微信公众号自动回复“很好!”微信个人回复的内容会写入msg.txt文件中,如果发的是图片会生成url地址可直接用url查看。代码如下:)
    public function responseMsg()
    	{
    
    		$postStr = file_get_contents("php://input");
    		file_put_contents("msg.txt", $postStr,FILE_APPEND);
    
    		if (!empty($postStr)){
    
    			$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
    			$fromUsername = $postObj->FromUserName;
    			$toUsername = $postObj->ToUserName;
    			$keyword = trim($postObj->Content);
    			$time = time();
    			$textTpl = "<xml>
    			<ToUserName><![CDATA[%s]]></ToUserName>
    			<FromUserName><![CDATA[%s]]></FromUserName>
    			<CreateTime>%s</CreateTime>
    			<MsgType><![CDATA[%s]]></MsgType>
    			<Content><![CDATA[%s]]></Content>
    			<FuncFlag>0</FuncFlag>
    			</xml>";             
    			if(!empty( $keyword ))
    			{
    				$contentStr = $this->keyword($keyword);
    				$msgType = "text";
                        // $contentStr = "Welcome to wechat world!";
    				$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
    				echo $resultStr;
    			}else{
    				echo "Input something...";
    			}
    
    		}else {
    			echo "";
    			exit;
    		}
    	}
    private function keyword($keyword){
    		if($keyword == "天气"){
    			return "今天天气不错";
    		}else if($keyword == "你好"){
    			return "很好!";
    		}else{
    			return "次关键字不存在";
    		}
    	}

    展开全文
  • 微信公众平台是腾讯公司在微信的基础上新增的功能模块,通过这一平台,个人和企业都可以打造一个微信的公众号,并实现和特定群体的文字、图片、语音的全方位沟通、互动。 2.通讯机制 3.注册微信公众平台账号 ...

     

    1.简介

    微信公众平台是腾讯公司在微信的基础上新增的功能模块,通过这一平台,个人和企业都可以打造一个微信的公众号,并实现和特定群体的文字、图片、语音的全方位沟通、互动。

    2.通讯机制

    3.注册微信公众平台账号

    注册地址:https://mp.weixin.qq.com

    4.服务器端配置

    4.1 示例代码设置

    微信公众平台提供了一个php示例代码:

    http://mp.weixin.qq.com/mpres/htmledition/res/wx_sample.zip

    下载下来,解压缩,打开编辑。

    将token值设置为你所需要的值,token可由开发者任意填写,用作生成签名。

     


    编辑完保存并关闭文件,将文件wx_sample.php 更改成自定义的名字,这里改为wxapi.php,再次打包成wxapi.zip。

    4.2 服务器平台设置

    如果有自己的服务器,而且支持php,可以将接口文件上传至服务器,如果没有自己的服务器,则可以选择部分免费的云平台进行开发,如百度应用引擎BAE(http://developer.baidu.com/bae),新浪云平台SAE(http://sae.sina.com.cn/)。

    百度BAE设置

    a. 注册BAE帐户并登录

    https://passport.baidu.com/v2/?reg&regType=1&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F

     


    b. 加入开发者中心

     


    c. 创建应用

    接入方式选择 “手机web应用”。

     

    d. 托管设置

    选择云环境(BAE)-> 托管设置。

    环境类型 选择 “PHP”。

     

    e. 创建新版本,上传接口文件

     

    f. 上线并获取链接

     

     


    获得的URL为:http://zhuojin.duapp.com/

    注:zhuojinsz 之前已经被我注册过了,所以不能再次注册。这里应该获得的二级域名应该和上面的截图中写的一样。

    BAE 设置完毕。

    新浪SAE设置

    a. 注册SAE帐户并登录

    http://sae.sina.com.cn/

    b. 创建新应用

    我的首页 -> 创建新应用

     

    c. 配置应用

     

     

    d. 上传代码

    应用管理 -> 代码管理 -> 上传代码包

     

    e. 获取URL地址

     

    获得的URL 地址为:http://1.zhuojin.sinaapp.com/

    SAE 配置完毕。

    5.配置接口

    5.1 登录微信公众平台 -> 高能功能 -> 开发模式

    5.2 成为开发者

    5.3 接口配置信息

    URL填写上面得到的BAE URL:http://zhuojin.duapp.com/,再加上上传的php文件名。即 http://zhuojin.duapp.com/wxapi.php

    Token 填写自定义的token 值,这里为zhuojinsz。

    对于SAE,URL填写 http://1.zhuojin.sinaapp.com/wxapi.php

    5.4 提交

    点击 “提交”,若一切设置正确,则会提示 “提交成功”。

    5.5 查看接口配置信息

    BAE 接口信息

    SAE 接口信息

    5.6 开启开发模式

    至此,配置完毕。

    转载于:https://www.cnblogs.com/Mwsoft/p/3762219.html

    展开全文
  • 登录微信公众平台官网后,在公众平台后台管理页面 - 开发者中心页,点击“修改配置”按钮,填写服务器地址(URL)、Token和EncodingAESKey,其中URL是开发者用来接收微信消息和事件的接口URL。Token可由开发者可以...
  • 最近在帮别人做个小项目,要用到微信公众平台,虽然以前也做过微信开发,但是没有深入的自己去搞一套微信开发的东西(也搞不了,那时候没能力,也弄不到微信公众号),最近开始搞,第一步就是配置微信基本配置(账号...

    最近在帮别人做个小项目,要用到微信公众平台,虽然以前也做过微信开发,但是没有深入的自己去搞一套微信开发的东西(也搞不了,那时候没能力,也弄不到微信公众号),最近开始搞,第一步就是配置微信基本配置(账号注册我就不赘述了)。

    我们首先要启用服务器配置,并填写URL,token,AESKey,加密方式

    那么URL怎么填写呢?

    网上有很多种教程,最靠谱的一种是去新浪云注册个免费的PHP服务器,

    进入控制台,创建一个新应用,选PHP标准环境,不收费

    创建完成后进入应用,左边列表里  应用-->代码管理  里选编辑代码

    然后创建 一个index.php文件,双击进去,讲如下代码复制进去,token改成你自己的

    <?php
    /**
      * wechat php test
      */
    //define your token
    define("TOKEN", "token");
    $wechatObj = new wechatCallbackapiTest();
    $wechatObj->valid();
    class wechatCallbackapiTest
    {
    public function valid()
        {
            $echoStr = $_GET["echostr"];
            //valid signature , option
            if($this->checkSignature()){
            echo $echoStr;
            exit;
            }
        }
        public function responseMsg()
        {
    //get post data, May be due to the different environments
    $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
          //extract post data
    if (!empty($postStr)){
                    
                  $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
                    $fromUsername = $postObj->FromUserName;
                    $toUsername = $postObj->ToUserName;
                    $keyword = trim($postObj->Content);
                    $time = time();
                    $textTpl = "<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[%s]]></MsgType>
    <Content><![CDATA[%s]]></Content>
    <FuncFlag>0</FuncFlag>
    </xml>";             
    if(!empty( $keyword ))
                    {
                  $msgType = "text";
                    $contentStr = "Welcome to wechat world!";
                    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                    echo $resultStr;
                    }else{
                    echo "Input something...";
                    }
            }else {
            echo "";
            exit;
            }
        }
    private function checkSignature()
    {
            $signature = $_GET["signature"];
            $timestamp = $_GET["timestamp"];
            $nonce = $_GET["nonce"];
           
    $token = TOKEN;
    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr);
    $tmpStr = implode( $tmpArr );
    $tmpStr = sha1( $tmpStr );
    if( $tmpStr == $signature ){
    return true;
    }else{
    return false;
    }
    }
    }
    ?>
    修改TOKEN为你自己的token,可以自己随便写,但是不一定能用。
    保存,右击index.php --> 通过URL访问,会在浏览器里获得这个PHP程序的URL地址。

    将该URL地址放到接口配置里的URL里,token要和这个index.php里一致,以后在项目里使用的token也和这个一致.

    AESKey点自动生成,消息加密方式根据你个人项目情况选择,如果是公司项目,涉及到钱的,建议使用安全模式。

    然后就是提交了,这时候会发现,token验证失败(存在一定的可能性),怎么办,通过查找,可以在微信公众平台-->开发者工具-->公众平台测试账号中查看自己的 token

    然后重复上述修改token步骤,运行index.php,使用新的token和URL进行验证,这个时候就OK了。

    重点来了!!!

    实际生产环节,我们都有自己的服务器,自己的域名,这个时候,就不希望通过第三方的方式做这个微信消息认证了。

    我们在生产环境下,要给自己的服务器装个Nginx和PHP环境,具体怎么装百度。

    装好以后,我们在/usr/share/nginx/html下新建一个index.php文件,讲上述代码复制进去,保存。

    然后在/etc/nginx/nginx.conf(有的人的配置文件在default.d/default.conf里),在server里修改如下代码,注意index.php要加到index里,下方再配入PHP的代理。

    location / {
    		root   /usr/share/nginx/html;
            	index  index.php index.html index.htm ; 
           }
    	
    	location ~ \.php$ {
            	root           /usr/share/nginx/html;
            	fastcgi_pass   127.0.0.1:9000;
            	fastcgi_index  index.php;
            	fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            	include        fastcgi_params;
        	}
    重启Nginx,解析域名到该服务器地址,使用域名就可以进行微信消息验证了,大功告成。

    同样的,如果没有注册公众号,但是注册过测试号,也可以用上述方式填写相应的URL和token

    展开全文
  • 微信公众号开发(一)服务器及接口配置

    万次阅读 多人点赞 2019-05-22 09:21:41
    微信公众号开发(一)服务器及接口配置 关于微信公众号中的订阅号和服务的区别这里不多加讨论,网上有很多资源可以搜到,这里直接进入正题,如果是个人开发者,这里建议使用测试号进行开发学习,测试号的权限要比...
  • token 是在网页中和微信服务器商量好的哦。下次使用的时候直接代码复制即可使用 <?php /** * Created by PhpStorm. * User: liaosp * Date: 2017/8/23 * Time: 10:36 */ $timestamp = $_GET['timestamp']; $...
  • 微信接口配置需要用到http开头的域名,然后将自己的api.php路径填写正确 如下 下面是api.php文件的代码 &lt;?php /** * wechat php test */ include "WeChat_message.php"; header('Content-...
  • php微信支付接口开发的实现程序

    千次阅读 2018-08-20 17:15:40
    微信支付接口现在也慢慢的像支付宝一个可以利用api接口来实现第三方网站或应用进行支付了,下文是我公司的技术人员整理了一个php微信支付接口开发程序并且己测试,有兴趣的朋友可进入参考。  必要条件:  appid ...
  • 微信接口配置信息总是配置失败

    千次阅读 2017-04-21 10:45:20
    微信接口配置信息修改是微信测试开发经常用到的,但是本人在最近学习中经常配置不成功,而且token并没有错误,经过了多次查看代码,甚至将微信官方代码放上去配置仍然不行后,终于在茫茫百度中找到了答案,没错,那...
  • PHP实现微信分享接口

    2019-11-20 17:32:45
    PHP实现微信分享接口 最近公司做了一个页面,要微信分享,然后记录回执信息。看了看微信的开放文档,Bing了一下相关文章,发现大家贴的代码都大致类似,也没有什么技术难度,撰写此文为了记录一下内容,如能帮助到...
  • 公司需要微信支付现不到镇的是非常的麻烦。然后呢那个要怎么申请我就不写了。因为不是我负责的所以我就记录微信支付开发就好了。自己也记录一下以后要开发好下手 。 1. 到这里下载sdk  版本本V3 : ...
  • 微信服务器接口配置程序

    万次阅读 2014-02-12 23:24:04
    要对接微信公众平台的"开发模式",即对接到自己的网站程序,必须在注册成功之后,等待官方审核,审核通过之后,会在后台顶部出现“高级功能”菜单。  使用“高级功能”>“开发模式”之前,必须有一个已经部署在...
  • 微信公众账号申请完成后,默认开启的是编辑模式。 我们需要修改为开发模式。 ... 先关闭 编辑模式,再...下一步就是配置接口服务器了。 在公众平台网站的高级功能 – 开发模式页,点击“成为开发者”按钮,填写U...
  • php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)   shuanmeitang 2016-11-28 3439 查看 0评论 公开 原文 举报 取精 添加收藏  怎么调用微信高级接口 微信高级接口和...
  • 微信公众平台开发(一) 配置接口

    千次阅读 2018-06-30 14:17:02
    微信公众平台是腾讯公司在微信的基础上新增的功能模块,通过这一平台,个人和企业都可以打造一个微信的公众号,并实现和特定群体的文字、图片、语音的全方位沟通、互动。 二、通讯机制 三、注册微信
  • 文章结构 ...1、怎么调用微信高级接口微信高级接口微信普通接口的区别后台服务器可以调用微信接口微信用户进行讯息的通信,这样的行为就是在调用微信接口,这些接口是基础接口,你不需要任
  • 必要条件: appid //公众号后台开发者中心获得(和邮件内的一样) mchid//邮件内获得 key//商户后台自己设置 app...公众号后台微信支付-》开发配置-》新增测试目录和测试个人微信号。 开发者中心-》网页授权获取用
  • 一、环境说明:开发工具:EclipseJDK版本:JDK1.8Servlet容器:Tomcat8.5内网穿透工具:NATAPP本教程基于Servlet来做请求响应,不使用相关框架,旨在说明微信公众号开发的相关流程。二、账号接口配置要进行公众号...
  • 由于近期刚开始学习微信开发,在网上查询整理了php与java两个版本的微信接口对接代码。以下是php版本define("TOKEN", "token"); $wechatObj = new wechatCallbackapiTest(); $wechatObj->valid(); class ...
1 2 3 4 5 ... 20
收藏数 11,526
精华内容 4,610
关键字:

php 微信开发 接口配置