2017-03-24 10:57:53 jiangpan1952 阅读数 221
  • CentOS7 Linux入门实战视频课程

    此课程基于CentOS7.2 64位版本,讲解了CentOS7的安装、基础网络命令、网卡设置、文件与目录管理、进程与线程管理、VI编辑器、用户与权限、软件包管理、YUM软件仓库的搭建,在后教会大家如何地在Linux上搭建Discuz论坛。

    29875 人正在学习 去看看 杨璞

课程目录:
最新2015年1月到2015年5月PHP就业班培训视频课程 最新34期全套完整, 带微信开发
php核心编程、MySQL数据库\、XML编程、Smarty、ThinkPHP框架、JAVAscript巩固加强、ajax、jquery、Redis、大型门户网站核心技术、ThinkPHP框架加强、电子商城项目、sphinx、mongodb、lnmp、dedecms、微信接口开发、discuz、linux(LAMP)
下载地址:www.feixueteam.net/thread-517-1-1.html


2018-12-05 20:40:20 cncici 阅读数 1610
  • CentOS7 Linux入门实战视频课程

    此课程基于CentOS7.2 64位版本,讲解了CentOS7的安装、基础网络命令、网卡设置、文件与目录管理、进程与线程管理、VI编辑器、用户与权限、软件包管理、YUM软件仓库的搭建,在后教会大家如何地在Linux上搭建Discuz论坛。

    29875 人正在学习 去看看 杨璞

discuz论坛微信支付的话,还是比较麻烦的,需要对接微信商户号,还要企业资质。

所幸,有payjs微信支付个人接口,直接对接就好。

于是我开发了一个基于payjs的discuz论坛微信支付积分充值插件,有需要的可以直接下载使用

点击下载discuz微信支付个人版积分充值插件

2016-06-16 14:26:44 u014662268 阅读数 3176
  • CentOS7 Linux入门实战视频课程

    此课程基于CentOS7.2 64位版本,讲解了CentOS7的安装、基础网络命令、网卡设置、文件与目录管理、进程与线程管理、VI编辑器、用户与权限、软件包管理、YUM软件仓库的搭建,在后教会大家如何地在Linux上搭建Discuz论坛。

    29875 人正在学习 去看看 杨璞

由于微信公众号用Java开发,故discuz绑定微信公众号之后,在discuz首页进行微信二维码扫码登录时,微信处理的结果会到tomcat里面,不能转接到discuz,实现不了扫描登录。

由于本人没学过php,所以瞎折腾了很久。

1、在微信公众号平台里面,把原先设置的公众号token和url换成discuz管理员界面里微信设置中提供的token和url,这样的目的就能把微信扫码登入直接给discuz自己处理,而不经过tomcat,这样实现的情况下discuz微信用户对应的openid和微信公众号的openid是不一致。但是没事,因为这样做的目的是为了获取discuz登入扫码的数据,为下文的数据模拟做铺垫。

2、因为要获取数据,所以我就在本地部署了php环境,安装了Zend Studio编辑工具。因为没学过Php,里面流程怎么跑的还是一头雾水,用了很蠢的办法来跟踪,”file_put_contents('log.txt','111- ',FILE_APPEND);”,将信息输出到discuz项目下的log.txt文件里。接着用微信扫描discuz首页的二维码,最终跟踪到扫码成功返回的数据在wechat.lib.class.php下的accessDataPush()方法里,file_put_contents('log.txt','--0000 '.$postdata.'  0000---',FILE_APPEND);打印出扫码成功后要转发给discuz的数据

<xml>
<Ticket><![CDATA[gQH48DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL21UOFkwMGJsTVFGSWxlQVUtaEVPAAIEmfhhVwMECAcAAA==]]></Ticket>
<FromUserName><![CDATA[oys2GxKWgpvePu3fT69KhMBaDSqU]]></FromUserName>
<EventKey><![CDATA[189566]]></EventKey>
<Event><![CDATA[SCAN]]></Event>
<CreateTime>1466038431</CreateTime>
<ToUserName><![CDATA[gh_f3612806ef7d]]></ToUserName>
<MsgType><![CDATA[event]]></MsgType>
</xml>

3、利用FireFox火狐浏览器的RESTClient插件来模拟数据发送,目的url为discuz管理界面微信设置里的url。以post发送的时候,发现返回结果是404。在wechat.lib.class.php里面恰好有个404,对应的是signature验证失败导致的,所以注释_checkSignature()相关的处理代码。

private function accessDataPush() {
		file_put_contents('log.txt','accessDataPush-- ',FILE_APPEND);
		if (!$this->_checkSignature()) {
		    file_put_contents('log.txt',' --<Signature is null-1>-- ',FILE_APPEND);
			/* if (!headers_sent()) {
				header('HTTP/1.1 404 Not Found');
				header('Status: 404 Not Found');
			}
			$this->_activeHook('404');
			return;  */
		}

		$postdata = file_get_contents("php://input");
		if ($postdata) {
			if (!$this->_checkSignature()) {
			    file_put_contents('log.txt',' --<Signature is null-2>-- ',FILE_APPEND);
				//return;
			}
			file_put_contents('log.txt','--0000 '.$postdata.'  0000---',FILE_APPEND);
			$postObj = simplexml_load_string($postdata, 'SimpleXMLElement', LIBXML_NOCDATA);
			$postObj = $this->_handlePostObj($postObj);

			$this->_activeHook('receiveAllStart', $postObj);

			if (isset($postObj['event'])) {
				$hookName = 'receiveEvent::' . $postObj['event'];
			} else {
				$hookName = 'receiveMsg::' . $postObj['type'];
			}
			$this->_activeHook($hookName, $postObj);

			$this->_activeHook('receiveAllEnd', $postObj);
		} elseif (isset($_GET['echostr'])) {

			$this->_activeHook('accessCheckSuccess');
			if (!headers_sent()) {
				header('Content-Type: text/plain');
			}
			echo preg_replace('/[^a-z0-9]/i', '', $_GET['echostr']);
		}
	}
4、这里获取验证信息有个小窍门,注释file_put_contents('log.txt','--0000 '.$postdata.'  0000---',FILE_APPEND);语句后面的代码,这样微信扫描二维码的时候到达打印信息之后就不会再往下执行,接着把打印出的信息复制到Firefox浏览的RESTClient插件的post中,点击send之后发现在discuz首页账号登录成功,登录会有一两秒的延迟。到达这里基本上完成了,接下去就是要在tomcat中把微信扫描过来的信息转发给discuz了。

5、在微信公众平台中把token和url改回公众号的。在java后台微信信息处理模块中,把接受到的request内容(xml格式)解析成map保存,然后把map转化为discuz指定的xml格式,转发url为discuz里微信设置的url。

// xml请求解析
			Map<String, String> requestMap = MessageUtil.parseXml(request);

	/**
	 * 解析微信发来的请求(XML)
	 * 
	 * @param request
	 * @return
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public static Map<String, String> parseXml(HttpServletRequest request) throws Exception {
		// 将解析结果存储在HashMap中
		Map<String, String> map = new HashMap<String, String>();
		
		// 从request中取得输入流
		InputStream inputStream = request.getInputStream();
		// 读取输入流
		SAXReader reader = new SAXReader();
		Document document = reader.read(inputStream);
		// 得到xml根元素
		Element root = document.getRootElement();
		// 得到根元素的所有子节点
		List<Element> elementList = root.elements();

		// 遍历所有子节点
		for (Element e : elementList)
			map.put(e.getName(), e.getText());

		// 释放资源
		inputStream.close();
		inputStream = null;

		return map;
	}


StringBuffer sb = new StringBuffer();
sb.append("<xml>");
MessageUtil.mapToXMLTest2(requestMap,sb);
sb.append("</xml>");
String xml = sb.toString();
	/**
	 * 获取discuz微信登录转发信息
	 * @param map
	 * @param sb
	 */
    public static void mapToXMLTest2(Map map, StringBuffer sb) {  
        Set set = map.keySet();  
        for (Iterator it = set.iterator(); it.hasNext();) {  
            String key = (String) it.next();  
            Object value = map.get(key);  
            if (null == value)  
                value = "";  
            if (value.getClass().getName().equals("java.util.ArrayList")) {  
                ArrayList list = (ArrayList) map.get(key);  
                sb.append("<" + key + ">");  
                for (int i = 0; i < list.size(); i++) {  
                    HashMap hm = (HashMap) list.get(i);  
                    mapToXMLTest2(hm, sb);  
                }  
                sb.append("</" + key + ">");  
  
            } else {  
                if (value instanceof HashMap) {  
                    sb.append("<" + key + ">");  
                    mapToXMLTest2((HashMap) value, sb);  
                    sb.append("</" + key + ">");  
                } else { 
                	if(key.equals("CreateTime")){
                		sb.append("<" + key + ">" + value + "</" + key + ">");  
                	}else{
                		sb.append("<" + key + "><![CDATA[" + value + "]]></" + key + ">");  
                	}
                }  
  
            }  
  
        }  
    }  

new HttpUtil().sendPostXML(Constants.weixinurl+"/bbs/api/mobile/?module=wechat", xml);
public void sendPostXML(String urlStr, String xml) {  
	        try {  
	            URL url = new URL(urlStr);  
	            URLConnection con = url.openConnection();  
	            con.setDoOutput(true);  
	            con.setRequestProperty("Pragma:", "no-cache");  
	            con.setRequestProperty("Cache-Control", "no-cache");  
	            con.setRequestProperty("Content-Type", "text/xml");  
	  
	            OutputStreamWriter out = new OutputStreamWriter(con  
	                    .getOutputStream());      
	            out.write(new String(xml.getBytes("ISO-8859-1")));  
	            out.flush();  
	            out.close();  
	            BufferedReader br = new BufferedReader(new InputStreamReader(con  
	                    .getInputStream(),"UTF-8"));  
	            String line = "";  
	            String lines = "";
	            for (line = br.readLine(); line != null; line = br.readLine()) {  
	                System.out.println(line);  
	            }  
	        } catch (MalformedURLException e) {  
	            e.printStackTrace();  
	        } catch (IOException e) {  
	            e.printStackTrace();  
	        }  
	    }  

这样就大功告成,真心不容易,第一次接触php,还要把它去tomcat相结合。新手第一次写!!!

2017-03-17 18:54:55 bq_cui 阅读数 215
  • CentOS7 Linux入门实战视频课程

    此课程基于CentOS7.2 64位版本,讲解了CentOS7的安装、基础网络命令、网卡设置、文件与目录管理、进程与线程管理、VI编辑器、用户与权限、软件包管理、YUM软件仓库的搭建,在后教会大家如何地在Linux上搭建Discuz论坛。

    29875 人正在学习 去看看 杨璞



    某些时候,微信客户端不能显示错误信息,一些第三方微信调试平台也不能正确显示返回信息,对微信开发调试造成很大不便。可以使用在服务器生成文本文件的方式,记录程序运行过程中的一些值进行除错。


	function set_file_content($filename, $content) {
		$fp = fopen($filename, "w");
		fwrite($fp, "<?php exit();?>" . $content);
		fclose($fp);
	}

使用举例:

set_file_content('log.txt', '$access_token:'.$access_token);


2020-02-14 06:09:36 Kenisitman 阅读数 2
  • CentOS7 Linux入门实战视频课程

    此课程基于CentOS7.2 64位版本,讲解了CentOS7的安装、基础网络命令、网卡设置、文件与目录管理、进程与线程管理、VI编辑器、用户与权限、软件包管理、YUM软件仓库的搭建,在后教会大家如何地在Linux上搭建Discuz论坛。

    29875 人正在学习 去看看 杨璞

前几天论坛微信扫码成功,但就是登录不上,根据后台的提示
在这里插入图片描述
查看了response.class.php文件,发现微信回调没响应,原来是discuz微信appid等设置没生效,重新检查appid与scretkey设置后清理了遍缓存,生效了,过了几天开发测试时又发现不能正常登录,这次回调正常,定位到Wechat::register();
在这里插入图片描述
结果是wechat.class.php的register里有限制同一IP重复微信扫码注册的情况,清除common_regip解决问题;
在这里插入图片描述

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