2018-04-07 21:36:03 CJiaJiaLe 阅读数 174
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27838 人正在学习 去看看 秦子恒
初学微信二次开发首先我们要接入微信公众平台。

我们首先要有一个开发微信的第三方平台。这个平台可以是自己写的代码,也可以使用已经发布的一些平台。我们选择用自己的域名和虚拟主机,来自己开发。

在域名和虚拟主机可以使用的情况下我们要完成三步:

  1. 填写服务器配置。
  2. 验证服务器地址的有效性。
  3. 依据接口实现业务逻辑。(暂时忽略)

填写服务器配置:

我们登录微信公众平台之后,找到开发者工具,打开公众平台测试账号。测试账号有一个接口配置信息。我们需要完全正确的填写才能配置成功。首先URL:此处的URL为开发者用来接收微信消息和事件的接口URL。Token:这是一个很重要的,由开发者任意填写,用作生成签名(该Token会和接口URL中包含的Token进行对比,从而验证安全性)。

验证消息是否来自微信:

微信服务器将发送GET请求到填写的服务器地址URL上。会携带4个参数,分别是signature,timestamp,nonce,echostr.将token,timestamp,nonce三个参数进行排序,将三个参数字符串拼接成一个字符串进行sha1加密,开发者获得加密后的字符串可与Signature对比。开发者通过检验signature对请求进行校验若确认此次请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者否则接入失败。

<?php
/**
  * wechat php test
  */

//define your token
define("TOKEN", "weixin");//必须与微信公众号里的相同
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();

class wechatCallbackapiTest
{
	public function valid()
    {
        $echoStr = $_GET["echostr"];

        //valid signature , option
        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);
		$tmpStr = implode( $tmpArr );
		$tmpStr = sha1( $tmpStr );
		
		if( $tmpStr == $signature ){
			return true;
		}else{
			return false;
		}
	}
}

?>

我的域名是cjiele.top将上边的php文件放到了wx文件夹下名字为wx_sample.php。

这样我们就可以配置成功了。我们就走出了开发者的第一步。

我们可以在代码中加入自动回复功能这样我们就可以在公众号中收到回复了,这是一个自动回复代码。回复中的内容是xml类型的。

 public function responseMsg()
    {
		//get post data, May be due to the different environments
		// $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
        $postStr=file_get_contents("php://input");
      	//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!";
                     $contentStr =$this->gjz($keyword);
                	$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                	echo $resultStr;
                }else{
                	echo "Input something...";
                }

        }else {
        	echo "";
        	exit;
        }
    }
	public function gjz($keyword){
        if ($keyword==="天气") {
            $contentStr = "今天有雨!";
            return $contentStr;
        }else if($keyword==="你好"){
            $contentStr = "你好呀!";
            return $contentStr;
        }else{
            $contentStr = "对不起暂时不识别!";
            return $contentStr;

        }
        
    }
接下来我们就可以扫描测试号二维码,试着发一句自动回复吧。


2018-09-27 12:29:32 a909422229 阅读数 935
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27838 人正在学习 去看看 秦子恒

一、打开微信公众号管理界面

本人使用的springboot项目地址:https://github.com/binarywang/weixin-java-mp-demo-springboot

使用微信公众号开发可以用该项目,配置一下即可,很简单的配置。

鼠标滑到最底部的《开发–基本配置》 

点击我要成功开发者。

二、 填写相关服务器配置信息:

A.需要设置开发者密码,点就开启,扫码一下即可。

B.需要注意的是,验证token只能支持80端口或者443端口,其他端口不支持。

URL:填写服务器的域名地址

token:自己定义链接,其他无所谓,明文与兼容都可以。

三、打开公众号设置,配置一下你的服务器域名,注意一个月只能修改三次。

点击设置:配置域名,注意需要验证一下,下载文件,创建一个项目,复制到项目中,如果通过域名可以访问到该文件,则就可以通过验证。其他两个也是这个流程。即可全部通过验证。

四、通过之后就可以了。还有更加简单的方式进行测试配置是否可以用。点击开发者工具

点击公众平台测试账号:与上面配置基本相同,只不过不需要配置过多的链接,扫描二维码即可关注测试。

五、最后一定要记得,配置服务器完成后,点击启动。否则没有效果的。测试的时候无所谓。会有启动的延迟,不会立马生效,本人遇到了一次这个问题,一直接收不到消息,后来发现是这个问题,晚上配置完后睡了一觉,早上启动项目就可以接收了。

晕~有问题留言或者联系。

下一篇:对微信公众号接收消息进行回复

2017-11-14 15:32:27 CSDNedu 阅读数 7070
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27838 人正在学习 去看看 秦子恒

仅需10分钟,大咖手把手带你完成一个自己的微信商城云服务,我们一起来学习吧:

一. 申请服务器资源

想要进行微信开发,少不了后台服务器端程序的开发,那么我们首先就要申请服务器资源。目前有很多云服务器可选,比如新浪的sae,这里就以sae为例来讲解。

1、打开http://sae.sina.com.cn/登录。
2、点击创建应用
3、填写二级域名,应用名称,验证码,选择开发语言为php并选择应用类型为web应用后,点击创建应用。
4、或者点击“选择开发框架”选项卡,选中“微信公众平台php sdk”.
5、在弹出的页面点击“安装框架“,并输入必要的信息后点击”安装到以上位置“。
6、看到安装成功的提示后,点击“管理已安装应用“。我们看到应用已经成功创建,并且为你分配了acces key和secret key。

通过上面的步骤,我们已经拥有了一个微信的后台服务器端的基本框架,只是这个框架还没有什么功能,接下来我们就要将这个后台和我们的微信账号关联起来,并且在这个后台开发一些实用功能。

二. 配置微信账号

接下来,将我们的sae上的后台与我们的微信号关联起来。首先登录自己的微信号,并点击:高级功能-进入开发模式-成为开发者。我的微信号是未认证的订阅号,如下图:

接下来我们要做的是写一个php的接入程序,然后上传到我们在sae上的后台空间里面去完成接入验证。
接入程序很简单,在之前的教程里面已经详细讲解过。

将该文件(见附件)上传到sae服务器。至于如何将代码文件上传到sae,我们下面来给大家介绍。
首先,sae是采用svn工具进行代码管理的,svn是一个版本管理工具。

  1. 下载svn客户端工具。
  2. 安装完成后,我们在本地电脑上创建一个空目录,在该空目录下右键,选择 TortoiseSVN-Create Repository Here.
  3. 点击我们的sae界面上的代码管理,查看svn 仓库地址:
  4. 在步骤2的目录下右键,选择svnchekout,并输入上一步的svn 仓库地址,点击确定。再输入我们的sae账号和密码,点击ok。这样就将我们在sae上的代码下载到我们的本地了。
  5. Ok ,我们接着将我们的接入验证文件的代码拷贝到下载下来的版本1的index.php文件里面去全部覆盖原来的内容。
  6. 然后再被修改的index.php文件上右键,选择 SVN Commit,点击ok就将这个文件提交到sae上的对应目录去了。
  7. 我们登录sae管理平台,点击编辑代码
  8. 在打开的代码编辑页面,双击 index.php,查看是否是我们更新上去的代码。
  9. 登录我们的微信公众平台帐号,在接入验证输入框中输入我们的后台url,例如我的是:mywxsvr.sinaapp.com和 Token,Token的值就是我们刚才上传到sae的接入程序中定义的那个字符串,例如我的是:weixin.,

然后单击“提交”按钮,就能通过接入验证了。

说明,我们的微信公众号已经成功的和我们在sae上的后台程序之间建立了联系,而且,我们在sae后台程序中可以使用微信的基础接口来编程。

更详细的操作,大家可以从CSDN学院视频课程中学哦,那里还有更多的技术内容与大家分享。

更多实战课程请点击CSDN学院链接地址查看:http://edu.csdn.net/course/detail/3456?utm_source=blog11

2017-07-14 15:38:22 sinat_35861727 阅读数 16443
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27838 人正在学习 去看看 秦子恒
做微信开发的,必不可少的都会涉及到微信网页授权,来获取用户信息的功能。想要实现公众号通过微信网页授权机制,来获取用户基本信息,必须先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,填写授权回调域名。但是呢,在微信公众号后台,业务域名和JS安全域名都可以填写3个,唯独网页授权域名只能填写一个

现在我只有一个公众号,由于业务需要,我在不同的场景下不同的域名都使用这个公众号,而且都需要获取用户信息。但是网页授权域名只能填写一个,并且只有回调地址的域名与该设置完全相同,才能成功发起微信授权,否则就会提示rediret_uri参数错误。

那么,就来讲讲怎么突破这个限制,实现多个域名使用一个公众号同时发起网页授权获取到用户基本信息。

它只能填写一个授权域名,那我们就从这一个域名下手,既然这个授权域名可以顺利拿到网页请求的数据,那我们其他的域名可以先去请求授权域名,然后让授权域名再去微信服务器请求数据,这样就完美解决了。这个授权域名,起到了类似于中介和代理人的作用。实现方法如下:
1.在公众号后台设置一个授权回调页面域名,比如叫:wx.agency.com,我们可以称其为代理域名。
2.在wx.agency.com指向的网站根目录下部署一个index.php文件。

工作原理如下:
(1)当你的其他域名需要发起微信授权时,将授权请求先发到代理域名wx.agency.com,然后wx.agency.com会把这个请求转发到微信服务器; 
(2)当用户同意授权后,wx.agency.com会收到微信的授权回调,并把回调结果(code、state参数)原封不动地再返回给最开始发起授权的域名。

代码实现:
之前有写过微信网页授权获取用户基本信息,那是常规方法授权获取用户信息,代码如下:

public function _userInfoAuth($redirect_url){
	
	//1.准备scope为snsapi_userInfo网页授权页面
	$redirecturl = urlencode($redirect_url);
	$snsapi_userInfo_url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$this->_appid.'&redirect_uri='.$redirecturl.'&response_type=code&scope=snsapi_userinfo&state=YQJ#wechat_redirect';
	
	//2.用户手动同意授权,同意之后,获取code
	//页面跳转至redirect_uri/?code=CODE&state=STATE
	$code = $_GET['code'];
	if( !isset($code) ){
		header('Location:'.$snsapi_userInfo_url);
	}
	
	//3.通过code换取网页授权access_token
	$curl = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$this->_appid.'&secret='.$this->_appsecret.'&code='.$code.'&grant_type=authorization_code';
	$content = $this->_request($curl);
	$result = json_decode($content);
	
	//4.通过access_token和openid拉取用户信息
	$webAccess_token = $result->access_token;
	$openid = $result->openid;
	$userInfourl = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$webAccess_token.'&openid='.$openid.'&lang=zh_CN ';
	
	$recontent = $this->_request($userInfourl);
	$userInfo = json_decode($recontent,true);
	return $userInfo;
}
这次获取用户信息的代码如下:

//第三方代理服务器授权登录
public function agencyInfoAuth($redirect_url){
	
	//1.准备scope为snsapi_userInfo网页授权页面
	$redirecturl = urlencode($redirect_url);
	$snsapi_userInfo_url = 'http://wx.agency.com/index.php?appid='.$this->_appid.'&redirect_uri='.$redirecturl.'&response_type=code&scope=snsapi_userinfo&state=YQJ#wechat_redirect';
	
	//2.用户手动同意授权,同意之后,获取code
	//页面跳转至redirect_uri/?code=CODE&state=STATE
	$code = $_GET['code'];
	if( !isset($code) ){
		header('Location:'.$snsapi_userInfo_url);
	}
	
	//3.通过code换取网页授权access_token
	$curl = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$this->_appid.'&secret='.$this->_appsecret.'&code='.$code.'&grant_type=authorization_code';
	$content = $this->_request($curl);
	$result = json_decode($content);
	
	//4.通过access_token和openid拉取用户信息
	$webAccess_token = $result->access_token;
	$openid = $result->openid;
	$userInfourl = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$webAccess_token.'&openid='.$openid.'&lang=zh_CN ';
	
	$recontent = $this->_request($userInfourl);
	$userInfo = json_decode($recontent,true);
	return $userInfo;
}
可以卡看到两种方法唯一的区别就在第一步准备scope为snsapi_userInfo网页授权页面链接不同,一个是去open.weixin.qq.com请求数据,另一个是去wx.agency.com请求数据。

这个方案我亲测有效,虽然增加了一次重定向操作,但实际上不会对用户体验产生多大的影响,真实解决了公众号网页授权域名只能填写一个的问题。

实现思路来自:http://www.cnblogs.com/lyzg/

2018-08-24 11:34:40 Alsyuan 阅读数 180
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27838 人正在学习 去看看 秦子恒

有过微信公众号开发的前端都应该遇到过怎么本地调试的问题吧,在微信开发的时候 需要填写与微信服务器相连接的url,而这个url必须是外网域名,也就是说我们需要在这个外网域名对应的ip服务器上做开发,而没办法本地开发调试。这篇文章告诉大家怎么在本地调试微信公众号的开发。

方法/步骤

  1. 去官方下载ngrok。

    在微信开发的时候 需要填写与微信服务器相连接的url,而这个url必须是外网域名,也就是说我们需要在这个外网域名对应的ip服务器上做开发,而没办法本地开发调试。通过用ngrok可以获得一个外网域名,这个外网域名实际访问的是本地主,这样把此外网域名填入到微信需要的外网url里,就可以在本地开发调试了。

    微信开发如何做本地调试?

  2. 在官网注册账号获取到authtoken

    微信开发如何做本地调试?

  3. 打开下载的ngrok压缩包解压并运行ngrok.exe文件,在窗口输入上一步的

    ngrok authtoken 2jtwcM1L5ocRWPyra78No_68Ce6qRrwUzgyZehhdrT 和 ngrok http 80  这里的authtoken 你按你注册后得到的为准,后面的端口号写你实际本地项目中的端口号。

  4. 4

    然后会打开这样一个窗口,里面红色的区域就是ngrok给的外网域名,可以通过这个域名访问自己的本地服务器

    微信开发如何做本地调试?

  5. 5

    这样就可以通过给的外网域名在本地打开微信公众号的地址进行调试。

    微信开发如何做本地调试?

没有更多推荐了,返回首页