化工企业常用推广网站,php网站地图,深圳东门大厦,鲜花网站建设的目标接入概述 接入微信公众平台开发#xff0c;开发者需要按照如下步骤完成#xff1a; 1、填写服务器配置 2、验证服务器地址的有效性 3、依据接口文档实现业务逻辑 下面详细介绍这3个步骤。 第一步#xff1a;填写服务器配置 登录微信公众平台官网后#xff0c;在公众平台官网… 接入概述 接入微信公众平台开发开发者需要按照如下步骤完成 1、填写服务器配置 2、验证服务器地址的有效性 3、依据接口文档实现业务逻辑 下面详细介绍这3个步骤。 第一步填写服务器配置 登录微信公众平台官网后在公众平台官网的开发-基本设置页面勾选协议成为开发者点击“修改配置”按钮填写服务器地址URL、Token和EncodingAESKey其中URL是开发者用来接收微信消息和事件的接口URL。Token可由开发者可以任意填写用作生成签名该Token会和接口URL中包含的Token进行比对从而验证安全性。EncodingAESKey由开发者手动填写或随机生成将用作消息体加解密密钥。 同时开发者可选择消息加解密方式明文模式、兼容模式和安全模式。模式的选择与服务器配置在提交后都会立即生效请开发者谨慎填写及选择。加解密方式的默认状态为明文模式选择兼容模式和安全模式需要提前配置好相关加解密代码详情请参考消息体签名及加解密部分的文档。 第二步验证消息的确来自微信服务器 开发者提交信息后微信服务器将发送GET请求到填写的服务器地址URL上GET请求携带参数如下表所示 参数 描述 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, SORT_STRING); $tmpStr implode( $tmpArr ); $tmpStr sha1( $tmpStr ); if( $tmpStr $signature ){ return true; }else{ return false; } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 ?php /** * wechat php test */ //define your token define(TOKEN, weixin); $wechatObj new wechatCallbackapiTest(); $wechatObj-index(); class wechatCallbackapiTest { public function index() { if(isset($_GET[echostr])) { $this-valid(); } else { $this-responseMsg(); } } 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)){ /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection, the best way is to check the validity of xml by yourself */ libxml_disable_entity_loader(true); $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 FuncFlag0/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() { // you must define TOKEN by yourself if (!defined(TOKEN)) { throw new Exception(TOKEN is not defined!); } $signature $_GET[signature]; $timestamp $_GET[timestamp]; $nonce $_GET[nonce]; $token TOKEN; $tmpArr array($token, $timestamp, $nonce); // use SORT_STRING rule sort($tmpArr, SORT_STRING); $tmpStr implode( $tmpArr ); $tmpStr sha1( $tmpStr ); if( $tmpStr $signature ){ return true; }else{ return false; } } } ? 第三步依据接口文档实现业务逻辑 验证URL有效性成功后即接入生效成为开发者。你可以在公众平台网站中申请微信认证认证成功后将获得更多接口权限满足更多业务需求。 成为开发者后用户每次向公众号发送消息、或者产生自定义菜单、或产生微信支付订单等情况时开发者填写的服务器配置URL将得到微信服务器推送过来的消息和事件开发者可以依据自身业务逻辑进行响应如回复消息。 公众号调用各接口时一般会获得正确的结果具体结果可见对应接口的说明。返回错误时可根据返回码来查询错误原因。全局返回码说明 用户向公众号发送消息时公众号方收到的消息发送者是一个OpenID是使用用户微信号加密后的结果每个用户对每个公众号有一个唯一的OpenID。 此外由于开发者经常有需在多个平台移动应用、网站、公众帐号之间共通用户帐号统一帐号体系的需求微信开放平台open.weixin.qq.com提供了UnionID机制。开发者可通过OpenID来获取用户基本信息而如果开发者拥有多个应用移动应用、网站应用和公众帐号公众帐号只有在被绑定到微信开放平台帐号下后才会获取UnionID可通过获取用户基本信息中的UnionID来区分用户的唯一性因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号用户的UnionID是唯一的。换句话说同一用户对同一个微信开放平台帐号下的不同应用UnionID是相同的。详情请在微信开放平台的资源中心-移动应用开发-微信登录-授权关系接口调用指引-获取用户个人信息UnionID机制中查看。 另请注意微信公众号接口必须以http://或https://开头分别支持80端口和443端口。 本文转自 陈小龙哈 51CTO博客原文链接:http://blog.51cto.com/chenxiaolong/1782628