热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

微信开发帐号基于IBMBluemix的实例详解

IBM发布了Bluemix,而微信公共平台的账号已经达到了200多万,如果能利用Bluemix开发微信公共平台应用,这对于广大微信开发者来说是个大福音。
摘要:IBM发布了Bluemix,而微信公共平台的账号已经达到了200多万,如果能利用Bluemix开发微信公共平台应用,这对于广大微信开发者来说是个大福音。

【编者按】IBM 最近发布了Bluemix, 这是一个基于开放标准的平台即服务 (PaaS) 环境,用于在云中构建、运行和管理 Web 和移动应用程序。而微信公共平台的账号已经达到了 200 多万,因此如果能利用 Bluemix 开发微信公共平台应用,笔者认为将为广大的微信开发者学习、部署、测试、直至形成商业应用带来福音,所以笔者通过研究,成功完成了基于 Bluemix 的微信公共平台应用开发,在此做一些简要的介绍,以便于微信公共开发者推进深化应用。

在开发微信公众平台前,需要申请一个微信公共账号,此处不做赘述,笔者使用的微信公共账号名称为:"正海说知识创新",代号为:"zhszscx"。如何申请微信公共账号,笔者不做赘述。

在 Bluemix 中开发微信公众平台主要包括如下步骤:

申请 Bluemix 账号

下载并安装 Cloud Foundry 程序

编制一个应用的配置文件

在微信公众平台设置为开发模式

设置一个基于 Bluemix 的网址 URL

设置微信公众平台应用的令牌(Token)

下载微信公众平台的范例程序,笔者采用 PHP 语言,对该程序进行修改,设置令牌(TOKEN)

上传(push)PHP 文件,应用开始执行

在微信公众平台中,验证通过编辑模式。

利用手机微信,向微信公众平台发送信息,获得微信公众平台返回的信息。

至此,基于 Bluemix 的微信公众平台应用开发顺利完成,开发者可以在此基础上进行进一步的发展。

图 1.系统框架

清单 1

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 dataif (!empty($postStr)){                              $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);                $fromUsername = $postObj->FromUserName;                $toUsername = $postObj->ToUserName;                $keyword = trim($postObj->Content);                $time = time();                $textTpl = "%s0";             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, SORT_STRING);$tmpStr = implode( $tmpArr );$tmpStr = sha1( $tmpStr );if( $tmpStr == $signature ){return true;}else{return false;}}}?>

在这个文件中,有三处需要改动:

第一:设置 TOKEN

define("TOKEN", "abcdefg123");//第一处修改

这里的数值,需要与前面网页中的 Token 的设置严格一致。

第二:这个范例程序中只是设置了验证模式,而没有消息的响应处理,笔者将该文件进行了修改,当存在验证参数时进行验证,而不存在验证信息时,则调用响应方法。

if   ( $_GET["echostr"] )
 {
    $wechatObj->valid();
  }
  else
  {
   $wechatObj->responseMsg();
}

第三:在范例程序中,对输入信息进行了一点处理,设置为返回信息。

$cOntentStr= "Welcome to wechat world!".$keyword;

也就是将微信粉丝输入的信息,加上"Welcome to wechat world!"后返回。

另外需要注意的是该 PHP 文件的编码也必须是 UTF-8 的。上传(push)PHP 文件,如果上传正确,则等待应用执行。

该文件名指定必须与前述的配置文件完全一致。

在正常的配置结束后,就可以在 Bluemix 中看到该应用,该应用处于正常运行的状态。

图 9

cf api https://api.ng.bluemix.net
cf login

此处输入申请的用户邮件、密码,执行至运行结束。

cf push -f manifest.yml

在微信公众平台中,点击提交,系统会提示验证通过。如果提示验证不通过,需要检查 URL、Token、程序中的 Token 以及程序代码的正确性。

另外,需要注意的是,腾讯要求服务器响应必须在 5 秒以内,因此在网络环境不够好的情况下,也许需要多提交几次才可以完成。

特别需要注意的是,笔者曾经进行过新浪的微博开发,新浪微博开发可以采取本地服务器,一样可以验证通过,而腾讯的这种验证必须使用外部可以访问的网址,笔者曾经为此很困扰,而且腾讯的验证必须使用 80 端口,不支持 URL 带端口号,这也曾经困扰过笔者。幸而 IBM 的 Bluemix 平台可以支持。

利用手机微信,向微信公众平台发送信息,获得微信公众平台返回的信息。

设置成功后,例如手机微信关注该微信公众平台账号,例如笔者的"正海说知识创新",账号:"zhszscx"关注的方法可以是名称查询、代号查询,也可以扫描如下的二维码,进行体验。

想该账号发送:hello!

将会收到系统返回的:Welcome to wechat world! hello!

这就表示基于 Bluemix 的微信公众平台开发顺利完成。

开发中注意事项

对于前面开发中介绍到的可能出现问题的地方再做一些总结:

正确设置 HOST 名称,不可以重复。

HOST 名称加上域名,需要和微信公众平台中的 URL 相匹配。

程序中的 Token 的设置必须同微信公众平台中的设置相匹配。

配置文件必须使用 UTF-8 格式。

Index.php 程序文件格式必须使用 UTF-8 格式。

系统未做说明,但是默认采用的是 index.php 文件作为入口,也就是说,如果按本文所叙述的程序编制方法,利用域名访问时,将没有结果展示。

在微信公众平台提交时,可能显示失败,需要提交多次,知道显示成功。

另外需要说明的是,目前的程序只对文本型微信信息进行了回复,其他信息未做处理。而开发者如果在开发中需要变更程序,则需要再次 PUSH 就可以,但是不需要在微信编辑模式再次提交。

发展展望

笔者在前述的基础上,又增加了数据库的链接,主要是 MYSQL 服务的建立、MYSQL 服务与应用的绑定,在 PHP 程序文件中实现服务的参数调用,数据表的创建、插入、显示,成功实现了数据库的处理,另外也成功部署了基于 PHP 的网站形式的应用,有了这样的基础,说明可以利用 IBM 的 Bluemix 平台实现开发微信公共账号应用。

以上就是微信开发帐号基于IBM Bluemix的实例详解 的详细内容,更多请关注php中文网其它相关文章!


推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
author-avatar
时尚妈咪达人都_354
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有