微信公众平台接口开发教程
微信接口开发公众号开发经验分享——接口开发案例代码
微信接口开发公众号开发经验分享——接口开发案例代码微信媒体图片下载string mediaid=;//上传素材得到的mediaidstring accesstoken=wxAPI.GetAccessTokenCachesql();stringurl="/cgi-bin/media/get?access_token="+accesstoken+"&media_id="+mediaid;WebClient MyClient = new WebClient();MyClient.DownloadFile(url, Server.MapPath("UpFiles/" +mediaid+".jpg")); //保存临时图片公众号微支付接口操作步骤1.支付配置,如下面一笑脸所讲2.通过统一下单返回返回prepay_id,即将订单信息提交给统一下单接口,并返回支付接口给的统一支付ID即prepay_id,其中payback.aspx //支付成功回调地址或是支付成功处理页面例如:string sql = "select * from shop_jiayuan_paylist where order_sn='" + ordersn + "'";Socut.Reader dr = new Socut.Reader(sql);string stuid = "", SemesterID = "";string oldpayid = "", oldpayidDT = "";if (dr.Read()){stuid = dr["stuid"].ToString().Trim();jiayuanmoney = dr["money"].ToString().Trim();totalprice = jiayuanmoney; //支付总金额SemesterID = dr["SemesterID"].ToString().Trim();ispay = dr["ispay"].ToString().Trim();oldpayid = dr["payid"].ToString().Trim();oldpayidDT = dr["getpayidDT"].ToString().Trim();orderid = dr["id"].ToString().Trim();}dr.Close();xq = Socut.Data.ExecuteScalar("select SemesterName from Semester where SemesterID=" + SemesterID).ToString().Trim();stuname = Socut.Data.ExecuteScalar("select stuname from student where stuid=" + stuid).ToString().Trim();//开始获取统一下单payIDif (ispay == "0"){//判断oldpayid的时效,if (oldpayidDT != ""){DateTime olddt = Convert.ToDateTime(oldpayidDT);DateTime nowdt = DateTime.Now;if (olddt.AddMinutes(100) < nowdt)//表示此payid已过期需要重新获取{oldpayid = "";}}//还未支付,调起支付接口------------------------------if (ispay == "0"){string URL = "https:///pay/unifiedorder";StringBuilder sbXml = new StringBuilder();// Response.Write("<xml><appid>123</appid></xml>"); return;string xmlattach = "pay";string dealbody = "订单支付:" + ordersn;string dealdetail = "支付订单号:" + ordersn;string notify_url = "http://" + XPFunction.GetAppKey("domain") + "/jiayuan/payback.aspx"; //支付成功回调地址或是支付成功处理页面string paywxh = wxh;string payOrderNO = ordersn; //订单号string paymoney = Convert.ToString((int)(Convert.ToDouble(totalprice) * 100));//以分为单位的支付金额if (oldpayid == "") //oldpayid == ""未获取过payid或已经过期{sbXml.AppendLine(@"<xml>");sbXml.AppendLine(@"<appid><![CDATA[" + wxAPI.AppID + "]]></appid>");sbXml.AppendLine(@"<attach><![CDATA[" + xmlattach + "]]></attach>");//附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据sbXml.AppendLine(@"<body><![CDATA[" + dealbody + "]]></body>"); //商品或支付单简要描述sbXml.AppendLine(@"<detail><![CDATA[" + dealdetail + "]]></detail>"); //商品名称明细列表sbXml.AppendLine(@"<mch_id>" + wxAPI.MCH_ID + "</mch_id>"); //商户号sbXml.AppendLine(@"<nonce_str><![CDATA[" + wxAPI.nonceStr + "]]></nonce_str>"); //随机字符串sbXml.AppendLine(@"<notify_url><![CDATA[" + notify_url + "]]></notify_url>"); //回调地址sbXml.AppendLine(@"<openid><![CDATA[" + paywxh + "]]></openid>"); //发起支付的用户OPENIDsbXml.AppendLine(@"<out_trade_no>" + payOrderNO + "</out_trade_no>"); //商户订单号自己设定不得重复,二次支付时使用同一单号sbXml.AppendLine(@"<spbill_create_ip><![CDATA[" + XPFunction.GetClientIP() + "]]></spbill_create_ip>");sbXml.AppendLine(@"<total_fee>" + paymoney + "</total_fee>"); //订单总金额单位为分只能提交整数sbXml.AppendLine(@"<trade_type><![CDATA[JSAPI]]></trade_type>"); //接口调用类型////获取统一下单sign-----------------string[] arrtmp = new string[12];arrtmp[0] = "appid=" + wxAPI.AppID;arrtmp[1] = "attach=" + xmlattach;arrtmp[2] = "body=" + dealbody;arrtmp[3] = "mch_id=" + wxAPI.MCH_ID;arrtmp[4] = "nonce_str=" + wxAPI.nonceStr;arrtmp[5] = "notify_url=" + notify_url;arrtmp[6] = "openid=" + paywxh;arrtmp[7] = "out_trade_no=" + payOrderNO; //支付订单号arrtmp[8] = "spbill_create_ip=" + XPFunction.GetClientIP();arrtmp[9] = "total_fee=" + paymoney;arrtmp[10] = "trade_type=JSAPI";arrtmp[11] = "detail=" + dealdetail;Array.Sort(arrtmp);string tmpStr = string.Join("&", arrtmp);tmpStr = tmpStr + "&key=" + wxAPI.APIkey;string sign = XPFunction.MD5(tmpStr).ToUpper();////获取统一下单sign-----------------sbXml.AppendLine(@"<sign>" + sign + "</sign>");sbXml.AppendLine(@"</xml>");//读取payidDataSet ds = new DataSet();ds.ReadXml(wxAPI.PostWebRequestStream(URL, sbXml.ToString())); //Response.Write(ds.Tables[0].Rows[0][0].ToString().Trim().ToUpper()); if (ds.Tables[0].Rows[0][0].ToString().Trim().ToUpper() == "SUCCESS") {if (ds.Tables[0].Rows[0][6].ToString().Trim().ToUpper() == "SUCCESS"){PAYID = ds.Tables[0].Rows[0][7].ToString(); //读取payidSocut.Data.ExecuteNonQuery("update shop_jiayuan_paylist set payid='" + PAYID + "',getpayidDT='" + DateTime.Now.ToString() + "' where id=" + orderid); //记录此订单的支付ID,二次调用时不再重新获取}}else{PAYID = "";//获取失败}}else{PAYID = oldpayid;}if (PAYID != ""){////获取支付接口的sign-----------string[] arrtmp2 = new string[5];arrtmp2[0] = "appId=" + wxAPI.AppID;arrtmp2[1] = "timeStamp=" + wxAPI.timestamp;arrtmp2[2] = "nonceStr=" + wxAPI.nonceStr;arrtmp2[3] = "package=prepay_id=" + PAYID;arrtmp2[4] = "signType=MD5";Array.Sort(arrtmp2);string tmpStr2 = string.Join("&", arrtmp2);tmpStr2 = tmpStr2 + "&key=" + wxAPI.APIkey;WXPaysign = XPFunction.MD5(tmpStr2).ToUpper();////获取支付接口的sign-----------}else //支付接口调用失败{WXPaysign = "";}}}3. 通过调用JS接口wx.chooseWXPay接口调用方法如下:支付按钮wxpay,单击时执行savepay2()的方法<input id="wxpay" name="wxpay" type="button" value="立即支付" onclick="savepay2();" />function savepay2() {var signtxt = '<%=WXPaysign%>';if (signtxt == ""){alert("支付失败,请重试!");return;//微信支付wx.chooseWXPay({timestamp: '<%=wxAPI.timestamp%>', // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。
微信公众平台开发教程(三)基础框架搭建
微信公众平台开发教程(三)基础框架搭建微信公众平台开发教程(三)基础框架搭建上⼀章,我们已经初步讲解了微信公众账号开发的基本原理,今天我们来探索设计实现。
⾸先我们设计了模块层次图,当然图中只是给出⼀种实现⽅式,不局限于此。
具体见下图。
主要功能介绍如下:1)请求接⼝层。
处理HTTP请求,及响应2)分发层。
由接⼝层传⼊请求,然后具体分析请求类型,分发⾄不同的处理器3)业务逻辑层。
这⾥是我们的具体业务逻辑了,根据请求,实现具体的业务逻辑。
4)数据层。
我们在实现某个应⽤时可能需要访问数据,可以是数据库或者是⽂件。
如果是简单应⽤,可能没有这⼀层。
其实,具体的应⽤可以在这个结构上去扩展,可以扩展消息对象层、业务对象层、数据访问层、功能管理层等。
这⾥只是提供⼀种思路,不局限于此。
根据层次图,设计流程图,具体讲述实现的各个过程。
以便了解整个处理过程。
如下图所⽰:根据流程图,我们能够清晰的了解整个流程,消息处理的具体实现步骤。
下⾯我们针对每个流程进⾏代码实现。
⼀、接收HTTP请求我们需要⼀个HttpHandler或者⼀个⽹页,来处理微信服务端HTTP请求。
这⾥我们使⽤了HttpHandler。
因为其灵活性⾼,性能好。
具体实现如下。
public class WeiXinHttpHandler:IHttpHandler{///<summary>//////</summary>public bool IsReusable{get { return true; }}///<summary>///处理请求///</summary>///<param name="context"></param>public void ProcessRequest(HttpContext context){//由微信服务接收请求,具体处理请求WeiXinService wxService = new WeiXinService(context.Request);string responseMsg = wxService.Response();context.Response.Clear();context.Response.Charset = "UTF-8";context.Response.Write(responseMsg);context.Response.End();}}如果是HTTPHandler,需要在配置⽂件中,配置具体的应⽤。
微信公众平台接口开发指南
微信公众平台接口开发指南注册成为开发者注册公众账号,需要登记自己的真实身份信息注意:设置公众号信息时一定要谨慎,‘公众号名称’与‘微信号’填写后是不能修改的,需事先认真想好注册完成后,进入系统,选择导航上的‘高级功能’其中有两个模式:‘编辑模式’与‘开发模式’默认开启的为‘编辑模式’进入‘编辑模式’,点击右上角的‘关闭’链接进入‘开发模式’,点击右上角的‘开启’按钮开启后可以看到:点击‘成为开发者’URL、TOKEN认证成为开发者的第一步就是填写URL、TOKEN信息,来对你服务器进行验证1)把下面代码复制并保存为一个php文件(如weixin.php)<?php/*** wechat php test*///define your tokendefine("TOKEN", "weixin");$wechatObj = new wechatCallbackapiTest();$wechatObj->valid();class wechatCallbackapiTest{public function valid(){$echoStr = $_GET["echostr"];//valid signature , optionif($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 dataif (!empty($postStr)){$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDA TA);$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><![CDA TA[%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;}}}?>2)修改TOKENTOKEN是用来进行交互安全认证的,你自己随意定义,注意保证安全定义后修改代码,在代码顶部找到define("TOKEN", "weixin");把值改为你自己的TOKEN值(如:mytoken),保存文件,然后上传到服务器,要确保可以访问3)填写URL TOKEN信息回到公众平台页面,把URL TOKEN信息填写后提交,需要保证URL与上传的php文件地址一致,并且TOKEN值与php中定义的一致信息填写正确后提交,正常会提示完成信息至此,已经正式成为了开发者,接下来就可以安装自己的思路开发程序了微信交互示例做一个简单的示例:用户发送什么文字,我们就回复什么文字注意:复制代码后要把TOKEN值修改为自己的<?php/*** wechat php test*///define your tokendefine("TOKEN", "xxx");$str = '';$wechatObj = new wechatCallbackapiTest();$wechatObj->valid();class wechatCallbackapiTest{public function valid(){$echoStr = $_GET["echostr"];//valid signature , optionif($this->checkSignature()){echo $echoStr;$this->responseMsg();exit;}}public function responseMsg(){//get post data, May be due to the different environments$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//extract post dataif (!empty($postStr)){$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDA TA);$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><![CDA TA[%s]]></MsgType><Content><![CDATA[%s]]></Content><FuncFlag>1</FuncFlag></xml>";if(!empty( $keyword )){$msgType = "text";$contentStr = $keyword;$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;}}}?>用户关注后发送欢迎信息在实际应用中,用户第一次关注是,我们需要发送欢迎和提示信息,就需要下面的判断代码if($keyword === "Hello2BizUser"){$contentStr = "欢迎信息";}开发文档中写明,用户关注后服务器自动发送过来的字符串为"Hello2BizUser",我们就依次来判断了注意:信息模板中此项<FuncFlag>1</FuncFlag>的值要设为1,这样用户微信中才会显示有新消息的标志此文档总结了微信公众平台开发的起步过程,接下来就需要大家发挥自己创造力了,祝大家开发出更多更有益的应用。
微信公众平台开发教程
微信公众平台开发教程微信公众平台开发教程已经成为许多开发者关注的热点话题。
在这篇文章中,我将以500字为限,为大家简要介绍一下微信公众平台开发的基本流程和注意事项。
首先,我们需要在微信公众平台上注册一个开发者账号。
在注册完成后,我们可以获得一个唯一的AppID和AppSecret。
这些信息将用于后续开发过程中的身份验证和接口调用。
接下来,我们需要在本地搭建一个开发环境。
根据自己的技术栈选型,我们可以选择使用Java、Python、Node.js等语言进行开发。
我们还需要下载安装相应的开发工具或者框架,并配置好环境变量。
在开发环境搭建完成后,我们可以开始进行具体的开发工作。
微信公众平台提供了丰富的接口和功能供开发者使用。
我们可以通过接口实现公众号的基本功能,如接收和回复消息、获取用户基本信息等。
同时,我们还可以借助微信支付接口实现在线支付功能,以及调用其他第三方接口实现更复杂的功能。
在开发过程中,我们需要特别注意微信公众平台的规范和限制。
微信公众平台的接口调用频率有限,所以我们需要合理利用接口调用次数。
另外,我们需要遵循微信公众平台的开发文档和规范,确保开发的功能和界面与微信的设计风格一致,给用户带来良好的体验。
最后,我们需要进行测试和部署。
在代码开发完成后,我们需要进行全面的测试,确保功能的正确性和稳定性。
同时,我们还需要将代码部署到服务器上,并配置好相应的域名和IP地址。
这样,我们的公众号才能在微信中被访问和使用。
综上所述,微信公众平台开发教程是一个相对复杂的过程,需要开发者有一定的编程基础和相关知识。
希望通过这篇文章的介绍,可以对微信公众平台开发有一个初步的了解。
当然,如果你对微信公众平台开发感兴趣,还需要进一步学习和实践才能掌握更深入的技术和经验。
微信公众平台开发教程
公众平台开发教程公众平台开发教程1:概述1.1 什么是公众平台1.2 公众平台的作用1.3 公众平台开发的基本流程2:注册与配置2.1 注册公众平台账号2.2 配置开发者权限2.3 创建自定义菜单2.4 增加关注欢迎语2.5 设置自定义回复消息3:消息处理3.1 接收用户消息3.2 处理用户消息3.3 发送客服消息3.4 接收地理位置消息3.5 接收事件消息4:素材管理4.1 临时素材4.2 临时素材4.3 永久素材4.4 永久素材4.5 素材管理API调用示例5:用户管理5.1 获取用户基本信息5.2 获取用户列表5.3 获取用户分组5.4 管理用户分组5.5 用户标签管理5.6 用户管理6:账号管理7:网页授权7.1 用户授权流程7.2 获取授权用户信息7.3 刷新和验证授权8:数据统计8.1 用户分析数据接口8.2 图文分析数据接口8.3 消息分析数据接口8.4 接口分析数据接口附件:- 附带源代码示例- 附带案例演示文件法律名词及注释:1:公众平台:由腾讯公司开发和运营的一个公众号管理平台,提供了丰富的功能和接口,供开发者开发和管理公众号。
2:开发者权限:在公众平台注册开发者账号后,获取的一系列权限,包括菜单配置、消息处理、素材管理等。
3:自定义菜单:允许公众号开发者在中自定义菜单,方便用户交互和导航功能。
4:关注欢迎语:当用户关注公众号后,显示给用户的欢迎消息。
5:自定义回复消息:根据用户发送的消息自动回复相应的内容,提供个性化的用户体验。
Python与微信开发使用Python构建微信公众号和小程序
Python与微信开发使用Python构建微信公众号和小程序Python与微信开发微信是目前全球最大的社交媒体平台之一,拥有庞大的用户群体和丰富的功能。
而Python作为一种简单易学、功能强大的编程语言,被广泛用于各个领域的开发。
在本文中,我们将探讨如何使用Python构建微信公众号和小程序。
一、微信公众号开发1. 准备工作在进行微信公众号开发之前,首先需要在微信公众平台上注册一个账号,并创建一个公众号。
注册完成后,可以获得一个官方提供的AppID和AppSecret,这是我们进行开发的必备信息。
2. Python库安装为了方便进行微信公众号开发,我们可以使用Python的第三方库`wechatpy`。
通过在命令行中运行`pip install wechatpy`命令,即可完成库的安装。
3. 接入微信公众号平台在开始编写代码之前,我们需要将自己的服务器接入微信公众平台,并进行配置。
具体步骤如下:(1)将服务器地址填写到微信公众平台的服务器配置中,并设置一个Token作为身份验证的凭证。
(2)在服务器上编写一个用于接收和处理微信消息的处理函数。
4. 开发公众号功能通过使用`wechatpy`库提供的API和功能,我们可以轻松地实现微信公众号的各种功能,包括:(1)自动回复消息:可以根据用户的不同消息类型,自动回复相应的内容。
(2)菜单功能:可以创建自定义菜单,方便用户进行交互。
(3)消息群发:可以向指定用户或用户群体发送消息。
(4)用户管理:可以获取用户信息,并进行相关管理。
二、小程序开发微信小程序是一种运行在微信平台上的轻量级应用程序,可以实现各种丰富的功能。
使用Python进行小程序开发需要以下几个步骤:1. 注册小程序账号首先,需要注册一个小程序账号,并登录到微信小程序后台。
在后台可以获取到小程序的AppID。
2. 安装Python库为了方便进行小程序开发,我们可以使用Python的第三方库`wepy`。
微信公众平台开发教程
公众平台开发教程公众平台开发教程一:概述1.1 什么是公众平台公众平台是一个提供给公众号运营者进行管理和开发的平台,通过该平台,运营者可以创建并管理自己的公众号,并通过开发接口和功能,实现更多的个性化服务。
1.2 公众号类型有订阅号、服务号、企业等不同类型的公众号,不同类型的公众号在功能和权限上有所区别。
1.3 开发准备工作在进行开发前,需要注册成为公众号的开发者,并获取开发者ID和密钥等信息。
二:公众平台接口2.1 服务器配置配置服务器,将接收消息和事件的URL地址与公众号进行绑定。
2.2 接收消息通过开发接口,接收用户发送的文本、图片、语音、视频等消息。
2.3 发送消息开发接口,实现向用户发送文本、图片、语音、视频等消息。
2.4 用户管理通过开发接口,获取用户的基本信息,实现对用户进行管理。
2.5 素材管理开发接口,用于、、删除公众号的图片、语音、视频等素材。
三:高级功能开发3.1 自定义菜单创建自定义菜单,实现公众号的个性化菜单设置。
3.2 模板消息开发接口,用于向用户发送模板消息,实现消息的定制化。
3.3 网页授权通过网页授权,获取用户的基本信息及访问权限,实现网页的个性化展示。
3.4 客服功能开发接口,实现与用户的实时对话功能,提供更好的客户服务。
3.5 数据统计获取公众号的用户、消息、菜单等统计数据,进行数据分析和优化。
四:开发工具推荐4.1 公众号开发文档介绍公众平台开发文档的使用方法和注意事项。
4.2 开发工具推荐一些常用的开发工具,如开发者工具、Postman等。
4.3 开发资源提供一些开发资源的,如常见问题、开发案例等。
4.4 其他参考资料给出一些其他有关公众平台开发的参考资料推荐。
附件:附件1:公众平台开发接口文档附件2:公众平台开发示例代码法律名词及注释:1. 公众号:平台上的一种类型账号,由个人、企业、机构等注册并管理,用于向用户提供信息和服务。
2. 开发者ID:公众平台开放给开发者的唯一标识,用于接口调用和认证。
微信公众平台开发(系列教程)
微信公众平台开发(系列教程)⼀、简介微信公众平台是腾讯公司在微信的基础上新增的功能模块,通过这⼀平台,个⼈和企业都可以打造⼀个微信的公众号,并实现和特定群体的⽂字、图⽚、语⾳的全⽅位沟通、互动。
⼆、通讯机制三、注册微信平台公众帐号四、服务器端配置4.1 ⽰例代码设置微信公众平台提供了⼀个php⽰例代码:下载下来,解压缩,打开编辑。
将token值设置为你所需要的值,token可由开发者任意填写,⽤作⽣成签名。
编辑完保存并关闭⽂件,将⽂件wx_sample.php 更改成⾃定义的名字,这⾥改为wxapi.php,再次打包成wxapi.zip。
4.2 服务器平台设置4.2.1 百度BAE设置a. 注册BAE帐户并登录b. 加⼊开发者中⼼c. 创建应⽤接⼊⽅式选择 “⼿机web应⽤”。
d. 托管设置选择云环境(BAE)-> 托管设置。
环境类型选择 “PHP”。
e. 创建新版本,上传接⼝⽂件f. 上线并获取链接注:zhuojinsz 之前已经被我注册过了,所以不能再次注册。
这⾥应该获得的⼆级域名应该和上⾯的截图中写的⼀样。
BAE 设置完毕。
4.2.2 新浪SAE设置a. 注册SAE帐户并登录b. 创建新应⽤我的⾸页 -> 创建新应⽤c. 配置应⽤d. 上传代码应⽤管理 -> 代码管理 -> 上传代码包e. 获取URL地址SAE 配置完毕。
五、配置接⼝5.1 登录微信公众平台 -> ⾼能功能 -> 开发模式5.2 成为开发者5.3 接⼝配置信息Token 填写⾃定义的token 值,这⾥为zhuojinsz。
5.4 提交点击 “提交”,若⼀切设置正确,则会提⽰ “提交成功”。
5.5 查看接⼝配置信息BAE 接⼝信息SAE 接⼝信息5.6 开启开发模式⾄此,配置完毕。
六、关注请关注卓锦苏州微信公众帐号,卓锦苏州基于SAE 平台开发,针对于主流的微信功能进⾏开发测试。
您可以关注卓锦苏州公众帐号进⾏功能测试,以及获取新的应⽤开发。
微信公众平台开发(4)微信模板消息接口
微信公众平台开发(4)微信模板消息接⼝⼀、添加消息模板1、所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的⼊⼝,但只有认证后的服务号才可以申请模板消息的使⽤权限并获得该权限;2、需要选择公众账号服务所处的2个⾏业3、在所选择⾏业的模板库中添加模板;4、在我的模板中可以看到添加的模板(商家新订单提醒模板)⼆、模板消息接⼝开发access_token是公众号的全局唯⼀票据,公众号调⽤各接⼝时都需使⽤access_token,access_token的有效期是2⼩时。
模板消息需要使⽤access_token来授权。
1、获取access_token接⼝地址:https:///cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET请求⽅式:GET返回的数据格式:json格式1public String getAccessToken(){2 String requestUrl = "https:///cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";34 String appid = "appid";//第三⽅⽤户唯⼀凭证56 String secret = "appsecret";// 第三⽅⽤户唯⼀凭证密钥,即appsecret78 requestUrl=requestUrl.replace("APPID", appid);9 requestUrl=requestUrl.replace("APPSECRET", secret);1011 JSONObject jsonObject= CommonUtil.httpsRequestToJsonObject(requestUrl, "GET", null, false);1213 String access_token = jsonObject.getString("access_token");1415return access_token;1617 }2、模板1public class Template {23// 消息接收⽅4private String toUser;5// 模板id6private String templateId;7// 模板消息详情链接8private String url;9// 消息顶部的颜⾊10private String topColor;11// 参数列表12private List<TemplateParam> templateParamList;13//省略getter、setter⽅法1415//按微信接⼝要求格式化模板16public String toJSON() {17 StringBuffer buffer = new StringBuffer();18 buffer.append("{");19 buffer.append(String.format("\"touser\":\"%s\"", this.toUser)).append(",");20 buffer.append(String.format("\"template_id\":\"%s\"", this.templateId)).append(",");21 buffer.append(String.format("\"url\":\"%s\"", this.url)).append(",");22 buffer.append(String.format("\"topcolor\":\"%s\"", this.topColor)).append(",");23 buffer.append("\"data\":{");24 TemplateParam param = null;25for (int i = 0; i < this.templateParamList.size(); i++) {26 param = templateParamList.get(i);27// 判断是否追加逗号28if (i < this.templateParamList.size() - 1){2930 buffer.append(String.format("\"%s\": {\"value\":\"%s\",\"color\":\"%s\"},", param.getName(), param.getValue(), param.getColor()));31 }else{32 buffer.append(String.format("\"%s\": {\"value\":\"%s\",\"color\":\"%s\"}", param.getName(), param.getValue(), param.getColor()));33 }3435 }36 buffer.append("}");37 buffer.append("}");38return buffer.toString();39 }40 }3、发送模板消息,返回json格式结果public JSONObject sendTemplateMsg(Template template){//获取tokenString token = accessTokenService.getAccessToken();String requestUrl = "https:///cgi-bin/template/api_add_template?access_token=ACCESS_TOKEN";requestUrl=requestUrl.replace("ACCESS_TOKEN", token);if (log.isDebugEnabled()) {log.debug(template.toJSON());}//发送模板消息,返回json格式结果JSONObject jsonObject = CommonUtil.httpsRequestToJsonObject(requestUrl, "POST", template.toJSON(),false);return jsonObject;}三、实现效果以订单⽀付成功通知为例:构造消息实体:1 String tplId = "whmJQfErBz_62Fu4ebCiDkz4u9hgBJOMolbLEwZDvh4";2 Template tem=new Template();3 tem.setTemplateId(tplId);4 tem.setTopColor(SUCCESS_TOP_COLOR);56 List<TemplateParam> paras=new ArrayList<TemplateParam>();7 paras.add(new TemplateParam("first","您有⼀笔新订单,等待发货。
微信公众平台开发教程
微信公众平台开发教程一、了解公众平台公众平台是提供的一种服务,它允许企业、组织或个人在平台上创建自己的,通过发布消息、互动等方式与用户进行沟通。
本文将介绍公众平台开发的基本步骤和注意事项。
二、创建1、打开公众平台官网,点击右上角的“立即注册”。
2、在注册页面中,选择的类型,如订阅号、服务号或企业号。
不同类型的有不同的功能和限制,需要根据自己的需求进行选择。
3、填写注册信息,包括账号名称、头像、介绍等。
这些信息将用于创建,请确保准确无误。
4、提交注册信息后,公众平台将审核你的申请。
审核通过后,即可使用进行开发和运营。
三、开发1、登录公众平台,选择开发选项卡。
2、在开发页面中,你可以看到公众平台提供的开发文档和接口。
这些文档和接口是开发的基础。
3、根据自己的需求,进行相应的开发工作。
例如,你可以编写自定义的菜单、回复用户的消息、实现自动回复等功能。
4、在开发过程中,你可以使用公众平台的开发工具进行调试和测试。
开发工具提供了一个模拟器,可以帮助你测试的基本功能。
四、发布1、完成开发后,你可以在公众平台上发布你的。
登录公众平台,选择发布选项卡。
2、在发布页面中,你可以上传图片、编写文章等内容。
根据你的需求,设置的可见性、推送频率等选项。
3、点击发布后,你的将出现在的列表中,用户可以通过搜索或扫描二维码来你的。
五、注意事项1、开发需要一定的编程知识和经验。
如果你不具备相关技能,可以参考公众平台的开发文档或寻求专业开发人员的帮助。
2、开发需要遵守公众平台的开发规范和要求。
在开发过程中,请确保你的不会侵犯他人的权益或传播不良信息。
3、开发需要投入一定的时间和精力来进行开发和测试。
为了提高的品质和用户体验,需要在发布前进行充分的测试和优化。
微信公众平台开发教程一、了解公众平台公众平台是提供的一种服务,它允许企业、组织或个人在平台上创建自己的,通过发布消息、互动等方式与用户进行沟通。
本文将介绍公众平台开发的基本步骤和注意事项。
个人微信公众号开发教程
个人微信公众号开发教程个人微信公众号的开发教程是一项很有意义的任务。
随着微信的普及,越来越多的个人或者企业都希望能够有一个自己的微信公众号来进行品牌推广、信息发布以及用户互动等活动。
首先,我们需要在微信开放平台上注册一个开发者账号,并创建自己的公众号。
注册完成后,我们可以进入公众号的管理后台,进行基本的设置,比如选择账号类型、填写基本信息等。
接下来,我们需要进行开发者的认证。
这是为了确保我们能够获取到一些高级接口的权限,比如自定义菜单、模板消息等。
完成认证后,我们就可以开始进行公众号的开发了。
开发个人微信公众号主要有两种方式,一种是使用微信提供的开放接口来开发,另一种是使用开发框架来进行开发。
如果选择使用微信提供的开放接口,我们可以通过调用API来实现各种功能,比如获取用户信息、发送消息等。
这种方式相对来说比较灵活,可以根据自己的需求来进行开发,但需要具备一定的编程能力和对微信开放接口的了解。
另外一种方式是使用开发框架,比如使用Python的Flask框架来进行开发。
Flask框架有一些成熟的插件可以供我们使用,比如微信开发工具包,能够简化开发过程,提高开发效率。
同时,Flask框架也相对容易上手,适合新手学习和使用。
在开发过程中,我们需要根据公众号的功能需求进行相应的开发,比如创建自定义菜单、接收用户消息、回复消息等。
可以根据需要来选择合适的接口进行调用,实现相应的功能。
最后,我们需要进行测试和发布。
在开发过程中,可以使用微信提供的测试工具进行调试,确保功能的正确性和稳定性。
当测试通过后,我们就可以将公众号发布上线,供用户使用了。
总的来说,个人微信公众号的开发教程虽然需要一定的技术基础,但是只要按照步骤进行,灵活运用开发工具和框架,就可以顺利完成个人微信公众号的开发,并为自己的个人或企业品牌推广搭建一个强有力的平台。
微信公众平台的API开发
微信公众平台的API开发随着移动互联网的快速发展,微信成为了人们生活中不可或缺的一部分。
作为移动社交平台中的翘楚,微信公众账号的API开发也变得越来越重要。
本文将介绍微信公众平台的API开发相关知识,帮助读者了解并掌握如何进行微信公众平台的API开发。
一、什么是微信公众平台的API开发是指通过微信提供的接口,实现对公众号的一系列操作。
借助这些接口,开发者可以自定义公众号的功能,满足用户的特定需求。
通过API开发,可以实现自动回复消息、获取用户信息、发送模板消息等功能,从而提高公众号的运营效果。
二、微信公众平台的API类型微信公众平台的API分为四种类型:基础接口、素材接口、用户管理接口和数据统计接口。
1. 基础接口基础接口包括获取access_token、获取微信服务器IP地址等功能。
access_token是调用其他接口时的必需参数,通过获取access_token,可以保证接口调用的安全性。
2. 素材接口素材接口包括上传临时素材、上传永久素材、获取素材列表等功能。
开发者可以通过素材接口管理公众号的多媒体素材,如图片、视频、音频等。
3. 用户管理接口用户管理接口包括获取用户基本信息、获取关注者列表、设置用户备注等功能。
通过用户管理接口,开发者可以获取用户的基本信息,如昵称、性别、地区等,以便进行个性化的运营。
4. 数据统计接口数据统计接口包括获取用户增减数据、获取图文群发每日数据、获取图文群发总数据等功能。
开发者可以通过数据统计接口了解公众号的运营情况,从而进行有针对性的优化和改进。
三、微信公众平台的API开发步骤进行微信公众平台的API开发,一般需要以下步骤:1. 注册开发者账号在微信公众平台官网上注册开发者账号,并创建一个公众号。
注册成功后,会获得一个AppID和AppSecret,这是进行API开发的重要凭证。
2. 获取access_token通过调用基础接口中的“获取access_token”接口,获取access_token。
公众微信平台开发教程
公众微信平台开发教程公众微信平台是指通过微信的公众号进行开发和运营的平台,它可以帮助个人、企业或组织与用户互动,提供各种服务和功能。
公众微信平台开发教程主要涉及以下几个方面:1. 注册与认证首先,你需要在微信公众平台上注册一个账号,并进行认证。
认证可以提高用户的信任度,并获得一些高级功能的权限。
2. 接口配置在开发之前,你需要在公众平台上进行接口配置,将你的服务器地址和接口信息填入平台,以便微信服务器可以顺利地将用户的消息和事件推送到你的服务器上。
3. 开发模式选择公众微信平台开发有两种模式:订阅号和服务号。
订阅号主要用于信息传达和互动,而服务号则可以提供更多的功能和权限,比如支付、卡券等。
4. 消息与事件处理在开发过程中,你需要处理来自用户的消息和事件。
消息可以分为文本、图片、语音、视频等多种类型,在接收到消息后,你可以回复用户的消息,或者根据用户的消息提供相应的服务和功能。
事件是指用户在与公众号的互动过程中发生的一系列动作,比如关注公众号、取消关注、点击菜单等。
你可以根据不同事件类型触发相应的操作和功能。
5. 菜单和界面设计在公众微信平台上,你可以设计自己的菜单和界面,提供给用户使用。
菜单可以包括多级结构,用户可以通过点击菜单来执行相应的功能或查看相关信息。
6. 数据统计与分析在开发过程中,你可以通过公众平台提供的数据统计和分析工具,了解用户的行为和喜好,以便做出更好的决策和优化你的服务。
以上只是公众微信平台开发教程的一部分内容,具体开发过程还需要深入了解各种接口和功能的使用方法。
希望这段简要的介绍对你有所帮助。
如果你有更多的问题或需要进一步的指导,可以参考微信公众平台官方文档或寻求开发者社区的帮助。
祝你顺利完成公众微信平台开发!。
微信公众平台各大接口详细功能演示与实现
一、用户管理
2.获取用户信息
access_token 返回值为json 与用户的 数据,如: openId获取用户信息
一、用户管理
3.获取关注者列表
通过 公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串 返回数据 https:///cgi-bin/user/get?access_token=ACCESS_TOKEN OpenID url ,即原 (加密后的微信号,每个用户对每个公众号的 url 去掉next_openid这项,得到的json数据拥有 OpenID "next_openid", 是唯一的)组 如: 成。一次拉取调用最多拉取10000个关注者的OpenID,可以通过多次拉取 的方式来满足需求。
json请求格式:
查询用户组所在分组
通过用户的OpenID查询其所在的GroupID。
openid为用户ID,用户关注或者发送消息时 <FromUserName></FromUserName>中的数据
修改分组名
通过分组查询中得到的groupId可以修改分组名 返回值,成功或失败
移动用户分组
通过用户的 openid和分组id修改 返回值,成功或失败
2、自定义菜单查询
接口链接: https:///cgibin/menu/get?access_token=ACCESS_TOKEN 返回格式:
微信公众号号开发教程
微信公众号号开发教程微信公众号开发教程微信公众号开发是指通过微信公众平台,利用微信公众号的接口和功能,开发出自己的公众号。
公众号可以是个人,企业,机构等各种实体或组织,通过公众号可以与用户进行交互,推送消息,提供服务等。
一、准备工作在进行微信公众号开发之前,需要做一些准备工作。
首先,你需要一个微信公众号的账号,可以通过微信公众平台申请注册一个。
其次,你需要了解一些基本的开发知识,如网页开发,HTTP协议,以及一些前端开发的技术等。
二、开发环境搭建在进行微信公众号开发之前,你需要搭建一个适用的开发环境。
首先,你需要一个服务器,可以是本地服务器或云服务器。
其次,你需要安装一些开发工具,如编辑器,调试工具等。
此外,你还需要获取微信公众平台提供的开发文档和开发接口。
三、接入认证在开始开发之前,你需要先进行接入认证。
接入认证是指将自己的服务器与微信公众平台进行绑定,用于接收和处理用户发送的消息和事件。
具体步骤如下:首先,你需要在微信公众平台设置接口配置,填写服务器URL和Token。
然后,你需要在自己的服务器上实现一个URL和Token验证的接口。
最后,你需要在微信公众平台上进行验证,验证通过后,你的服务器与微信公众平台将成功绑定。
四、开发功能在接入认证成功后,你可以开始开发公众号的各种功能。
常见的功能包括:菜单栏,消息推送,自动回复等。
你可以根据自己的需求选择相应的功能进行开发。
五、调试和发布在进行开发过程中,你可以通过一些调试工具对自己的代码进行调试和测试。
调试完成后,你可以将代码部署到服务器上进行发布。
在发布之前,你需要确保你的代码没有错误,并进行一些安全防护的措施,以保证公众号的安全运行。
六、运营和推广在开发完成并发布后,你可以开始进行公众号的运营和推广。
你可以通过一些营销手段,如推送消息,互动活动等,来增加公众号的用户量,提高用户的活跃度。
总结:微信公众号开发是一项较为复杂的技术工作,需要掌握一定的开发知识和技巧。
微信公众平台开发接口
微信公众平台开发接口一、消息接口二、通用接口三、自定义菜单接口四、使用限制五、返回码说明消息接口指南返回出自开放平台跳转到:导航, 搜索目录[隐藏]• 1 简介• 2 申请消息接口• 3 网址接入• 4 消息推送o 4.1 文本消息o 4.2 图片消息o 4.3 地理位置消息o 4.4 链接消息o 4.5 事件推送• 5 消息回复o 5.1 回复文本消息o 5.2 回复音乐消息o 5.3 回复图文消息• 6 注意事项•7 示例代码简介公众平台消息接口为开发者提供了一种新的消息处理方式。
申请消息接口点击申请,填写网址url和token,其中token可由开发者可以任意填写,用作生成签名。
网址接入公众平台用户提交信息后,微信服务器将发送GET请求到填写的URL上,并且带上四个参数:参数描述signature 微信加密签名timestamp 时间戳nonce 随机数echostr 随机字符串开发者通过检验signature对请求进行校验(下面有校验方式)。
若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,否则接入失败。
signature结合了开发者填写的token参数和请求中的timestamp参数、nonce 参数。
加密/校验流程:1. 将token、timestamp、nonce三个参数进行字典序排序2. 将三个参数字符串拼接成一个字符串进行sha1加密3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信消息推送当普通微信用户向公众账号发消息时,微信服务器将POST该消息到填写的URL 上。
结构如下:文本消息<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>1348831860</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[this is a test]]></Content><MsgId>1234567890123456</MsgId>图片消息<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>1348831860</CreateTime><MsgType><![CDATA[image]]></MsgType><PicUrl><![CDATA[this is a url]]></PicUrl><MsgId>1234567890123456</MsgId>地理位置消息<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1351776360</CreateTime><MsgType><![CDATA[location]]></MsgType><Location_X>23.134521</Location_X><Location_Y>113.358803</Location_Y><Scale>20</Scale><Label><![CDATA[位置信息]]></Label><MsgId>1234567890123456</MsgId>链接消息<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>1351776360</CreateTime><MsgType><![CDATA[link]]></MsgType><Title><![CDATA[公众平台官网链接]]></Title><Description><![CDATA[公众平台官网链接]]></Description><Url><![CDATA[url]]></Url><MsgId>1234567890123456</MsgId>事件推送事件推送只支持微信4.5版本,目前开启自定义菜单接口事件推送、关注与取消关注事件推送。
微信开放平台公众号第三方平台开发教程一平台介绍
微信开放平台公众号第三⽅平台开发教程⼀平台介绍教程导航:微信现在⽕,⽕的如⽕如荼,给我们这些第三⽅的开发者带来了不少机会,我相信现在有不少⼈在基于微信的公众平台在做⼆次开发,我将会写⼀系列的⽂章,来介绍微信的另⼀种开发模式- 基于微信开发平台的公众号第三⽅平台开发,从基本的注册开始介绍,⼀步⼀步到所有的接⼝开发,并且针对与微信的开放平台的第三⽅平台的所有的接⼝我已经全部封装成了.net的SDK,并且完全免费和开发,供所有开发者使⽤。
什么是公众号第三⽅平台,与现有的公众平台有什么区别?官⽅介绍:公众号第三⽅平台的开放,是为了让公众号运营者,在⾯向垂直⾏业需求时,可以⼀键登录授权给第三⽅的公众号运营平台,通过第三⽅开发者提供的公众号第三⽅平台来完成相关业务。
按照我的意思说的直⽩⼀点,更简化了微信公众号使⽤者的使⽤⽅式,在现有的公众平台上如果要使⽤某些第三⽅的产品,那么客户必须要有懂技术的⼈参与,需要配置Appid,AppSecret,URL,Token等等很多东西,⽆疑会增加使⽤者的门槛,让很多不懂技术的⼈望⽽却步。
现在微信开放平台的已经对第三⽅平台提供了⼀系列的接⼝。
只要我们的应⽤按照接⼝开发,那么⽤户在使⽤这类应⽤时,只需要2步就能完全安装好你要使⽤的应⽤,第⼀步:找到您要按照的产品,第⼆部:授权。
没错就是这么简单。
可以让⼀个完全不懂技术的⼈使⽤任何第三⽅平台的产品,是不是要⽐原来的公众平台开发要简单的多。
我个⼈认为:微信开发平台的开发模式将来肯定会成为微信开发的主流模式。
欢迎探讨。
技术原理也许会有⼈问,有了微信的开发平台,是不是微信的公众平台就不需要⽤了。
错,微信的开放平台提供了⼀个更灵活的接⼊⽅式。
我们还是要调⽤公众平台的接⼝。
并且和所有的接⼝都兼容,调⽤⽅式上有的接⼝略有不同。
做过公众平台的⼈都知道,我们调⽤微信的认为接⼝都需要传递给接⼝公众号的AppID,token等,那么我们在调⽤公众平台微信接⼝的时候不需要这2个值吗?其实不是,我们还是要传递这2个值给接⼝,只不过是这两个值我们通过⼀键登录授权以后就可以得到,⽽⽆需让客户确认。
微信公众平台接口开发
微信公众平台接口开发对于很多不懂程序的小企业或商家来说,微信公众平台接口开发可能是需要面对的难题。
但是对于一些微信开发程序人员来说,确实最为简单不过了。
随着微信公众平台的开放,微信营销推广也越发受到重视。
其实,微信公众平台开发并不没有你想的那么困难。
这里就为大家介绍一下傻瓜式的微信公众平台接口开发模式。
一、注册微信公平平台账号地址:/过程略。
二、上传代码以下代码是消息接口认证代码,将下列PHP代码保存为index.php(其中的mytoken改为你想要的的token名称),并上传到HTTP服务器指定的目录中,<?phpdefine("TOKEN", "mytoken");$wechatObj = new wechatCallbackapiTest();$wechatObj->valid();class wechatCallbackapiTest{public function valid(){$echoStr = $_GET["echostr"]; //随机字符串if($this->checkSignature()){echo$echoStr;exit;}}private function checkSignature(){$signature = $_GET["signature"]; //微信加密签名$timestamp = $_GET["timestamp"]; //时间戳$nonce = $_GET["nonce"]; //随机数$token = TOKEN;$tmpArr = array($token, $timestamp, $nonce);sort($tmpArr); //进行字典序排序//sha1加密后与签名对比if( sha1(implode($tmpArr)) == $signature ){return true;}else{return false;}}}?>或者直接下载微信的示例代码。
微信公众平台开发实例教程第5章微信公众平台接口介绍与配置
接口的整体介绍及测试号配置
• 接口(API)的定义:
不同功能层之间的通信规则称为接口(API)。
• 微信接口请求返回格式介绍:
微信接口是通过GET方式请求的,如:
https:///cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
微信公众平台接口开发(上):全面认识接口— 课程概要
• 接口的整体介绍及测试号配置 • 微信公众平台接口开发注意事项 • 微信公众平台核心接口功能介绍
微信公众平台接口开发(上):全面认识接口
接口的整体介绍及测试号配置
接口的整体介绍及测试号配置— 课时知识点
• 微信公众平台接口的整体介绍 • 配置一个接口测试账号
• 全局返回码查看网址
/wiki/17/fa4e1434e57290788bde25603fa2fcbd.ht ml
微信公众平台接口开发(上):全面认识接口
微信公众平台核心接口功能介绍
微信公众平台核心接口功能介绍— 课时知识点
• 微信公众平台各个接口功能介绍 • 开发前如何确定该应用在开发过程中会用到哪些接口
众平台对接,在微信上绑定pc商城账号的功能,以实现在微信中点击菜单无需登 录即可查看自己账号的详情,购物记录等。
如何通过微信通知?
模版消息接口
• 确定功能流程
验证
openid
网页授权接口
正 确
将用户信息保存到数据库,下次 进入判断已绑定直接进入个人中 心。并通过微信发送用户成功绑 定信息。
错 误
将错误信息通过微信发送给用户。
• 接口频率说明网址:
/wiki/0/2e2239fa5f49388d5b5136ecc8e0e440.html
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if( $tmpStr == $signature ){ return true;
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $keyword = trim($postObj->Content); $time = time(); $textTpl = "<xml>
class wechatCallbackapiTest {
public function valid() {
$echoStr = $_GET["echostr"];
//valid signature , option if($this->checkSignature()){
echo $echoStr; $this->responseMsg(); exit; } }
}else{ return false;
} } }
?>
z ⭘ᡧ⌘ޣਾਁ䘱⅒䗾ؑ
൘ᇎ䱵ᓄ⭘ѝˈ⭘ᡧㅜа⅑⌘ޣᱟˈᡁԜ䴰㾱ਁ䘱⅒䗾઼ᨀ皮ؑˈቡ䴰㾱л䶒Ⲵࡔᯝԓ⸱
if($keyword === "Hello2BizUser"){ $contentStr = "⅒䗾ؑ";
} ᔰਁ᮷ẓѝ߉᰾ˈ⭘ᡧ⌘ޣਾᴽ࣑ಘ㠚ࣘਁ䘱䗷ᶕⲴᆇㅖѢѪ"Hello2BizUser"ˈᡁԜቡ ⅑ᶕࡔᯝҶ ⌘˖ؑ⁑ᶯѝ↔亩<FuncFlag>1</FuncFlag>Ⲵ٬㾱䇮Ѫ1ˈ䘉ṧ⭘ᡧᗞؑѝՊᱮ皮ᴹ ᯠ⎸Ⲵḷᘇ
$token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $keyword = trim($postObj->Content); $time = time(); $textTpl = "<xml>
ਾ࣐ԆѪᗞؑྭ৻ˈᗞؑՊ㠚ࣘഎ༽ˈ䈧䗃ޕᵪਧ⸱ˈᛘഎ༽㔉ᆳᵪਧ⸱ ᆳ㠚ࣘሶਁ䘱аᶑᇶ⸱傼䇱⸝ؑ㔉ᛘˈᛘഎ༽傼䇱⸝ؑਾˈᛘሶ㠚ࣘᡀѪᒯᐎ 、ؑⲴሺ䍥VIPՊઈˈӛਇԆԜⲴᡰᴹӗ૱9ᣈՈᜐDŽᒯᐎ、ؑˈቡᱟ 䈕ᗞؑՊઈᒣਠⲴᇈᯩᦸᵳԓ⨶ˈᡁ৫䗷ԆԜ␈ᇍᓇ䬪ൠ൰ ˈ䈕ᗞؑՊઈᒣਠ࣏㜭䎵ᕪ˖ᵜᗞؑᒣਠ䘲ਸᴽ࣑㹼ъ ⲴՊઈ䘎䬱䖟ԦDŽާᴹ㔉Պઈਁ⸝࣏ؑ㜭ˈ㜭䘎䬱DŽՊઈ䘌〻൘ᇦҏ㜭㇑⨶ᛘⲴ ᓇ䬪ᛵߥˈՊઈҏਟԕ䙊䗷Ც㜭ᵪ㓸ㄟᡆ㘵ᗞؑˈḕⴻ㠚ᐡⲴՊઈ〟࠶ᛵߥˈ ۘ٬ᛵߥˈ䘈ਟԕḕⴻᓇ䬪ᢃᣈؑˈ୶૱ؑˈ׳䬰ؑㅹˈ䘈㜭䘌〻лঅDŽ л䶒ᱟ䖟Ԧᒣਠⲫ䱶ൠ൰৺փ傼䍖ਧ˄৫ⴻⴻᱟྲօᡀѪԆԜⲴՊઈⲴˈㄏ ❦㜭㠚࣐ࣘޕᡀѪᗞؑՊઈʽʽʽཚ血ཷҶ˅˖
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)){
z ⌘ᡀѪᔰਁ㘵
⌘ޜՇ䍖ਧˈ䴰㾱ⲫ䇠㠚ᐡⲴⵏᇎ䓛ԭؑ ⌘˖䇮㖞ޜՇਧؑᰦаᇊ㾱䉘ˈ‘ޜՇਧ〠ÿо‘ᗞؑਧÿປ߉ਾᱟн㜭؞᭩Ⲵˈ 䴰һݸ䇔ⵏᜣྭ ⌘ᆼᡀਾˈ䘋ޕ㌫㔏ˈ䘹ᤙሬ㡚кⲴþ儈㓗࣏㜭’
ަѝᴹєњ⁑ᔿ˖þ㕆䗁⁑ᔿÿоþᔰਁ⁑ᔿ’ 唈䇔ᔰⲴѪþ㕆䗁⁑ᔿ’
䘋ޕþ㕆䗁⁑ᔿÿˈ⛩ࠫਣк䀂Ⲵþޣ䰝ÿ䬮᧕ 䘋ޕþᔰਁ⁑ᔿÿˈ⛩ࠫਣк䀂Ⲵþᔰÿ᤹䫞 ᔰਾਟԕⴻࡠ˖
ҼǃᗞؑՊઈᴹӰѸՈ࣯˛ ᤃኅᯠᇒᡧ˖ᆹ㻵ᗞؑᇒᡧㄟⲴ⎸䍩㘵ᐢᴹ 3 ӯѻཊ(ⴞࡽ䘈൘໎䮯ˈᒣ൷⇿ཙᯠ໎ 100 з⭘ᡧ)ˈབྷ 䟿⎸䍩㘵ਟԕ䙊䗷ᢛ᧿Ҽ㔤⸱Ⲵᯩᔿˈ䗵䙏ᑞᤃኅՊઈ䟿˗ 㔤㌫㘱ᇒᡧ˖ሶՐ㔏Պઈ˄⻱ˈᝏᓄˈᶑ⸱ㅹ˅䐏ᗞؑ㔁ᇊˈࠪ䰘н⭘ᩪᑖˈᯩ、ׯᢰˈ 䟺᭮亮ᇒⲴ䫡व˗ Պઈӂࣘ˖Պઈਟԕ䙊䗷ᗞؑㄟˈḕ䈒Պઈ〟࠶ˈ։仍ˈ⎸䍩䇠ᖅˈ䘈ਟԕᇎ⧠ᴽ࣑亴ᇊˈӗ૱䇒 䍝࣏㜭ˈ㔉ᛘᑖᶕ䇒অ˗ ׳䬰㗔ਁ˖䙊䗷ᗞؑᒣਠˈ䘈ਟԕݽ䍩㔉ᗞؑ⭘ᡧਁ䘱Ոᜐؑˈྲ᮷ᆇˈമ⡷ˈ༠丣ˈ㿶仁ㅹˈሶᛘⲴ ᒯݽ䍩ਁ㔉亮ᇒDŽ -----------------------------------------------------ԕлᱟᔰਁ㘵สᮉ〻-------------------------------------------------------
z ᗞؑӔӂ皮ֻ
ڊањㆰঅⲴ皮ֻ˖⭘ᡧਁ䘱ӰѸ᮷ᆇˈᡁԜቡഎ༽ӰѸ᮷ᆇ ⌘˖༽ࡦԓ⸱ਾ㾱ᢺ TOKEN ٬؞᭩Ѫ㠚ᐡⲴ <?php /**
* wechat php test */
//define your token define("TOKEN", "xxx");
$str = ''; $wechatObj = new wechatCallbackapiTest(); $wechatObj->valid();
3˅ ປ߉ URL TOKEN ؑ
എࡠޜՇᒣਠ亥䶒ˈᢺ URL TOKEN ؑປ߉ਾᨀӔˈ䴰㾱؍䇱 URL окՐⲴ php ᮷Ԧൠ ൰а㠤ˈᒦф TOKEN ٬о php ѝᇊѹⲴа㠤 ؑປ߉↓⺞ਾᨀӔˈ↓ᑨՊᨀ皮ᆼᡀؑ
㠣↔ˈᐢ㓿↓ᔿᡀѪҶᔰਁ㘵ˈ᧕лᶕቡਟԕᆹ㻵㠚ᐡⲴᙍ䐟ᔰਁ〻ᒿҶ
ᗞؑޜՇᒣਠ᧕ਓᔰਁᮉ〻
൘ᵜ᮷Ⲵ㔃ቮ㔉བྷᇦӻ㓽ањ࡙⭘ᗞؑޜՇᒣਠ᧕ਓᔰਁⲴᗞؑՊઈ㇑⨶䖟Ԧᒣਠ аǃӰѸᱟᗞؑՊઈ˛
ᡰ䉃ᗞؑՊઈˈᱟՊઈ㇑⨶䖟Ԧሶ୶ᇦਁ㹼ⲴՐ㔏Պઈˈ㓿䗷⭥ᆀॆ䖜ᦒਾˈᆈۘ൘ᗞؑѝDŽ Պઈᢃᔰᵪᗞؑˈᢛ᧿୶ᇦⲴᗞؑҼ㔤⸱˄ᡆ࣐ᗞؑޜՇᑀਧѪྭ৻˅ˈቡ㜭㧧ᗇаᕐ⭥ᆀՊઈ ˈᒦᆈۘҾᗞؑѝˈণਟ䙊䗷ࡧᗞؑˈӛਇ୶ᇦᨀⲴՊઈᣈᢓ઼ՈᜐDŽ
⛩ࠫþᡀѪᔰਁ㘵’
z URLǃTOKEN 䇔䇱
ᡀѪᔰਁ㘵Ⲵㅜа↕ቡᱟປ߉ URLǃTOKEN ؑˈᶕሩᴽ࣑ಘ䘋㹼傼䇱
1˅ ᢺл䶒ԓ⸱༽ࡦᒦ؍ᆈѪањ php ᮷Ԧ˄ྲ weixin.php˅
<?php /**
* wechat php test */
//define your token define("TOKEN", "weixin"); $wechatObj = new wechatCallbackapiTest(); $wechatObj->valid();
z ᗞؑՊઈ㇑⨶㌫㔏˄࡙⭘ᗞؑᔰਁᴰᡀ࣏Ⲵ୶ъབྷ⢋˅
л䶒㔉བྷᇦӻ㓽ањᗞؑޜՇᒣਠᔰਁᴰᡀ࣏Ⲵ“བྷ⢋血”—--␡ൣа᱃ޜਨ
ⲴᗞؑՊઈ㇑⨶㌫㔏ˈ䇙Ӫ㙣ⴞаᯠˈⴞࡽᱟᡁⴻࡠᗞؑޜՇᒣਠ࡙⭘ᴰᡀ࣏Ⲵ 䖟ԦҶDŽл䶒㔉བྷᇦӻ㓽алԆⲴ࣏㜭DŽ䇙བྷᇦԕਾڊᔰਁⲴᰦى㜭ᴹњᖸྭⲴ ᙍ䐟DŽ
⭘ᵪᗞؑᐖ䗩ⲴҼ㔤⸱䇶 ࡛ḷ䇶DŽ ˄䈕ḷ䇶ᱟᒯᐎ、ؑ Ⲵᗞؑ ޜՇ䍖ਧ˅
<ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> <FuncFlag>1</FuncFlag> </xml>"; if(!empty( $keyword )) { $msgType = "text"; $contentStr = $keyword; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; }else{ echo "Input something..."; }
<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..."; }