2016-11-16 15:41:51 hwk_yellow 阅读数 1773
  • 微信支付开发-微信公众号开发12-微信开发php

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

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

微信作为一款聊天工具;在中国来说应该是家喻户晓的了;微信在qq横行的时代异军突起靠的是什么?下面我们来了解一下微信公众号的开发;


想要开发微信,我们最先要准备的开发工具莫过于一个服务器;有了服务器,我们才能随意的为公众号;添加功能;

下面;我们在服务器上开发一下微信公众号的样式库;

①;在服务器上安装weui;

WeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信内网页开发量身设计,可以令用户的使用感知更加统一。在微信网页开发中使用 WeUI,有如下优势:

  • 同微信客户端一致的视觉效果,令所有微信用户都能更容易地使用你的网站
  • 便捷获取快速使用,降低开发和设计成本
  • 微信设计团队精心打造,清晰明确,简洁大方
该样式库目前包含 button、cell、dialog、progress、toast、article、icon 等各式元素,已经在 GitHub 上开源。访问http://weui.github.io/weui/ 即可预览。


在服务器上安装weui

1:首先需要先安装一下nodejs;

wget https://nodejs.org/dist/v4.6.0/node-v4.6.0.tar.gz

./configure  --prefix=/usr/local/nodejs

Make && make install

2:安装好以后在,微信开发目录下输出安装指令

/usr/local/nodejs/bin/npm install –save weui

成功后获得node_modules目录

②安装成功后使用weui;

在需要使用weui功能的页面,输出下面代码用来引入weui;

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <!DOCTYPE html>  
  2. <html lang="en">  
  3.     <head>  
  4.         <meta charset="UTF-8">  
  5.         <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">  
  6.         <title>WeUI</title>  
  7.         <link rel="stylesheet" href="path/to/weui/dist/style/weui.min.css"/>  
  8.     </head>  
  9.     <body>  
  10.     
  11.     </body>  
  12. </html>  
还可以使用
[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. git clone https://github.com/weui/weui.git  
  2. cd weui  
  3. npm install -g gulp  
  4. npm install  
  5. gulp -ws  
运行 gulp -ws 命令,会监听 src 目录下所有文件的变更,并且默认会在8080端口启动服务器,

下面我们就可以使用weui的各种功能样式了

①button

按钮可以使用 a 或者 button 标签。wap 上要触发按钮的 active 态,必须触发 ontouchstart 事件,可以在 body 上加上 ontouchstart="" 全局触发。

按钮常见的操作场景:确定、取消、警示,分别对应 class:weui_btn_primaryweui_btn_defaultweui_btn_warn,每种场景都有自己的置灰态 weui_btn_disabled,除此外还有一种镂空按钮 weui_btn_plain_xxx,客户端 webview 里的按钮尺寸有两类,默认宽度100%,小型按钮宽度自适应,两边边框与文本间距0.75em:

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <!DOCTYPE html>  
  2. <html lang="en">  
  3.     <head>  
  4.         <meta charset="UTF-8">  
  5.         <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">  
  6.         <title>WeUI</title>  
  7.         <link rel="stylesheet" href="<span style="color:#FF0000;">引入node_modules目录下的./node_modules /to/weui/dist/style/weui.min.css文件</span>"/>  
  8.     </head>  
  9.     <body>  
  10. <div>  
  11. <pre><a href="#" class="weui_btn weui_btn_primary">按钮</a>  
  12. <a href="#" class="weui_btn weui_btn_disabled weui_btn_primary">按钮</a>  
  13. <a href="#" class="weui_btn weui_btn_warn">确认</a>  
  14. <a href="#" class="weui_btn weui_btn_disabled weui_btn_warn">确认</a>  
  15. <a href="#" class="weui_btn weui_btn_default">按钮</a>  
  16. <a href="#" class="weui_btn weui_btn_disabled weui_btn_default">按钮</a>  
  17. <div class="button_sp_area">  
  18.     <a href="#" class="weui_btn weui_btn_plain_default">按钮</a>  
  19.     <a href="#" class="weui_btn weui_btn_plain_primary">按钮</a>  
  20.   
  21.     <a href="#" class="weui_btn weui_btn_mini weui_btn_primary">按钮</a>  
  22.     <a href="#" class="weui_btn weui_btn_mini weui_btn_default">按钮</a>  
  23. </div>  
</body></html>



cell列表视图

Cell,列表视图,用于将信息以列表的结构显示在页面上,是 wap 上最常用的内容结构。Cell 由多个 section 组成,每个 section 包括 section header weui_cells_title以及 cells weui_cells

Cell 由 thumbnail weui_cell_hd、body weui_cell_bd、accessory weui_cell_ft 三部分组成,cell 采用自适应布局,在需要自适应的部分加上 class weui_cell_primary即可:

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. 带说明的列表项  
  2.   
  3. <div class="weui_cells_title">带说明的列表项</div>  
  4. <div class="weui_cells">  
  5.     <div class="weui_cell">  
  6.         <div class="weui_cell_bd weui_cell_primary">  
  7.             <p>标题文字</p>  
  8.         </div>  
  9.         <div class="weui_cell_ft">  
  10.             说明文字  
  11.         </div>  
  12.     </div>  
  13. </div>  

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. Cell 可根据需要进行各种自定义扩展,包括辅助说明、跳转、单选、复选等。下面以带图标、说明、跳转的列表项,其他情况可以直接参考 example 下的代码:  
  2.   
  3. <div class="weui_cells_title">带图标、说明、跳转的列表项</div>  
  4. <div class="weui_cells weui_cells_access">  
  5.   
  6.     <a class="weui_cell" href="#">  
  7.         <div class="weui_cell_hd">  
  8.             <img src="" alt="icon" style="width:20px;margin-right:5px;display:block">  
  9.         </div>  
  10.         <div class="weui_cell_bd weui_cell_primary">  
  11.             <p>cell standard</p>  
  12.         </div>  
  13.         <div class="weui_cell_ft">  
  14.             说明文字  
  15.         </div>  
  16.     </a>  
  17.     <a class="weui_cell" href="#">  
  18.         <div class="weui_cell_hd">  
  19.             <img src="" alt="icon" style="width:20px;margin-right:5px;display:block">  
  20.         </div>  
  21.         <div class="weui_cell_bd weui_cell_primary">  
  22.             <p>cell standard</p>  
  23.         </div>  
  24.         <div class="weui_cell_ft">  
  25.             说明文字  
  26.         </div>  
  27.     </a>  
  28. </div>  

③dialog

若系统的 alert 窗体无法满足网页的临时视图内容需求,则可以自定义实现与 alert 形式相似的 dialog,并且在 dialog 中可以自定义地使用各种控件,来满足需求。

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <div class="weui_dialog_confirm">  
  2.     <div class="weui_mask"></div>  
  3.     <div class="weui_dialog">  
  4.         <div class="weui_dialog_hd"><strong class="weui_dialog_title">弹窗标题</strong></div>  
  5.         <div class="weui_dialog_bd">自定义弹窗内容,居左对齐显示,告知需要确认的信息等</div>  
  6.         <div class="weui_dialog_ft">  
  7.             <a href="#" class="weui_btn_dialog default">取消</a>  
  8.             <a href="#" class="weui_btn_dialog primary">确定</a>  
  9.         </div>  
  10.     </div>  
  11. </div>  

<div class="weui_dialog_alert">
    <div class="weui_mask"></div>
    <div class="weui_dialog">
        <div class="weui_dialog_hd"><strong class="weui_dialog_title">弹窗标题</strong></div>
        <div class="weui_dialog_bd">弹窗内容,告知当前页面信息等</div>
        <div class="weui_dialog_ft">
            <a href="#" class="weui_btn_dialog primary">确定</a>
        </div>
    </div>
</div>

article

文字视图显示大段文字,这些文字通常是页面上的主体内容。Article 支持分段、多层标题、引用、内嵌图片、有/无序列表等富文本样式,并可响应用户的选择操作。

在微信客户端 webview 中使用 Article,必须保证文字有足够的可读性和可辨识性、使用规范字体、保证足够的段间距、段首无缩进。

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <article class="weui_article">  
  2.     <h1>大标题</h1>  
  3.     <section>  
  4.         <h2 class="title">章标题</h2>  
  5.         <section>  
  6.             <h3>1.1 节标题</h3>  
  7.             <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod  
  8.                 tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,  
  9.                 quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo  
  10.                 consequat. Duis aute</p>  
  11.         </section>  
  12.         <section>  
  13.             <h3>1.2 节标题</h3>  
  14.             <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod  
  15.                 tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,  
  16.                 cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non  
  17.                 proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>  
  18.         </section>  
  19.     </section>  
  20. </article>  
2017-09-20 21:40:41 hadoopxsy 阅读数 3194
  • 微信支付开发-微信公众号开发12-微信开发php

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

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

众所周知,在我们pc端的浏览器上,当后台改动css,或者js等代码的时候,需要浏览器清除缓存,页面才能重新加载,显示最新的样式或内容;

但是,如果我们的在手机端呢?比如说,我们开发一个微信服务号来实现一个微商场。突然有一天,客户要求升级或者改动一部分样式,这时我们在后台很rasy的搞定了,

但是会发现,微信页面根本样式就没变,搞了一下午原来是缓存的问题!但是发现怎么清理缓存啊!而且大部分用户根本就不知道“缓存”这回事:经过测试和努力找到了一下解决方案:

1、取消关注该微信公众号,重新关注即可(这很影响用户体验)

2、清理微信内存,关闭微信,再重新登录(太折腾)

3、给引入网页的css文件,或超链接  加参数时间戳:time=${time}   (终极解决方案)

例如:

<link rel="stylesheet" href="<%=basePath %>css/public.css?time=${time}">

当后台修改public.css文件内容时,微信服务号会重新加载最新的时间戳内容。这里的${time}  是从后台传过来的System.currentTimeMillis()值


同理,超链接也是如此!


这样做会使每次都重新加载内容会使反映时间加长,不过那也是在用户量访问大的时候!毕竟功能的展现啊!!!


2015-12-16 10:52:41 myfmyfmyfmyf 阅读数 6688
  • 微信支付开发-微信公众号开发12-微信开发php

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

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

企业可以主动发消息给成员,消息量不受限制

调用接口时,使用Https协议、JSON数据包格式,数据包不需做加密处理。

目前消息型应用支持文本、图片、语音、视频、文件、图文等消息类型。除了news类型,其它类型的消息可在发送时加上保密选项,保密消息会被打上水印,并且只有接收者才能阅读。主页型应用支持文本类型,文本长度不超过20个字。

news消息

{
   "touser": "UserID1|UserID2|UserID3",
   "toparty": " PartyID1 | PartyID2 ",
   "totag": " TagID1 | TagID2 ",
   "msgtype": "news",
   "agentid": 1,
   "news": {
       "articles":[
           {
               "title": "Title",
               "description": "Description",
               "url": "URL",
               "picurl": "PIC_URL"
           },
           {
               "title": "Title",
               "description": "Description",
               "url": "URL",
               "picurl": "PIC_URL"
           }    
       ]
   }
}
参数 必须 说明
touser 成员ID列表(消息接收者,多个接收者用‘|’分隔,最多支持1000个)。特殊情况:指定为@all,则向关注该企业应用的全部成员发送
toparty 部门ID列表,多个接收者用‘|’分隔,最多支持100个。当touser为@all时忽略本参数
totag 标签ID列表,多个接收者用‘|’分隔。当touser为@all时忽略本参数
msgtype 消息类型,此时固定为:news
agentid 企业应用的id,整型。可在应用的设置页面查看
articles 图文消息,一个图文消息支持1到10条图文
title 标题
description 描述
url 点击后跳转的链接。
picurl 图文消息的图片链接,支持JPG、PNG格式,较好的效果为大图640*320,小图80*80。如不填,在客户端不显示图片

---------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------


/**
  	 * 主动发送消息
  	 * @param mess
  	 * @return
  	 */
  	public  boolean sendReqMsg(ReqBaseMessage mess){
  		//消息json格式
  		String jsonContext=mess.toJsonStr();
  		//System.out.println(jsonContext);
  		//获得token
  		String token=getTokenFromWx();
		 boolean flag=false;
		 try {
			 CloseableHttpClient httpclient = HttpClients.createDefault();
			 HttpPost httpPost= new HttpPost("https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token="+token);
			 //发送json格式的数据
			 StringEntity myEntity = new StringEntity(jsonContext, 
					   ContentType.create("text/plain", "UTF-8"));
			 //设置需要传递的数据
			 httpPost.setEntity(myEntity);
			 // Create a custom response handler
            ResponseHandler<JSONObject> responseHandler = new ResponseHandler<JSONObject>() {
            	//对访问结果进行处理
                public JSONObject handleResponse(
                        final HttpResponse response) throws ClientProtocolException, IOException {
                    int status = response.getStatusLine().getStatusCode();
                    if (status >= 200 && status < 300) {
                        HttpEntity entity = response.getEntity();
                        if(null!=entity){
                        	String result= EntityUtils.toString(entity);
                            //根据字符串生成JSON对象
                   		 	JSONObject resultObj = JSONObject.fromObject(result);
                   		 	return resultObj;
                        }else{
                        	return null;
                        }
                    } else {
                        throw new ClientProtocolException("Unexpected response status: " + status);
                    }
                }

            };
          //返回的json对象
            JSONObject responseBody = httpclient.execute(httpPost, responseHandler);
            System.out.println(responseBody);
            int result= (Integer) responseBody.get("errcode");
            if(0==result){
            	flag=true;
            }else{
            	flag=false;
            }
			httpclient.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		 return flag;
	}

---------------------------------------------------------------------------------------------------------------

------实体类

---------------------------------------------------------------------------------------------------------------

/**
 * 
 * 
 * @author muyunfei
 * 
 * <p>Modification History:</p> 
 * <p>Date       Author      Description</p>
 * <p>------------------------------------------------------------------</p>
 * <p>Apr 8, 2015           牟云飞       		 新建</p>
 */
public class WxNewsMessage extends ReqBaseMessage {
	public  WxNewsMessage(){}
	
	//消息
	public List<WxArticle> news;
	
	
	
	public List<WxArticle> getNews() {
		return news;
	}
	public void setNews(List<WxArticle> news) {
		this.news = news;
	}

	public  WxNewsMessage(String touser, String toparty, String totag,
			String msgtype, String agentid) {
		super();
		super.touser = touser;
		super.toparty = toparty;
		super.totag = totag;
		super.msgtype = msgtype;
		super.agentid = agentid;
	}
	
	public String toJsonStr(){
		StringBuffer jsonStr=new StringBuffer("{");
		StringBuffer str_tmp= new StringBuffer("");
		//"\"touser\": \"@all\",\"msgtype\": \"text\",\"agentid\": \"0\",\"text\": {\"content\": \"helloworld\"},\"safe\": \"0\"}";
		if(null!=touser&&!"".equals(touser)){
			if(!"".equals(str_tmp.toString())){
				str_tmp.append(",");
			}
			str_tmp.append("\"touser\": \""+touser+"\"");
		}
		if(null!=toparty&&!"".equals(toparty)){
			if(!"".equals(str_tmp.toString())){
				str_tmp.append(",");
			}
			str_tmp.append("\"toparty\": \""+toparty+"\"");
		}
		if(null!=totag&&!"".equals(totag)){
			if(!"".equals(str_tmp.toString())){
				str_tmp.append(",");
			}
			str_tmp.append("\"totag\": \""+totag+"\"");
		}
		if(null!=msgtype&&!"".equals(msgtype)){
			//去除空格
			msgtype=msgtype.trim();
			//判断是否加逗号
			if(!"".equals(str_tmp.toString())){
				str_tmp.append(",");
			}
			str_tmp.append("\"msgtype\": \""+msgtype+"\"");
			//新闻消息
			if(null!=news&&0!=news.size()){
				if(!"".equals(str_tmp.toString())){
					str_tmp.append(",");
				}
				StringBuffer content=new StringBuffer("");
				for (int i = 0; i < news.size(); i++) {
					if(i!=0){
						content.append(",");
					}
					content.append("{");
					//获得一条消息
					WxArticle info = news.get(i);
					StringBuffer artileContent=new StringBuffer("");
					if(null!=info.getTitle()&&!"".equals(info.getTitle())){
						if(null!=artileContent.toString()&&!"".equals(artileContent.toString())){
							artileContent.append(",");
						}
						//标题
						artileContent.append("\"title\": \""+info.getTitle()+"\"");
					}
					if(null!=info.getDescription()&&!"".equals(info.getDescription())){
						if(null!=artileContent&&!"".equals(artileContent)){
							artileContent.append(",");
						}
						//描述
						artileContent.append("\"description\": \""+info.getDescription()+"\"");
					}
					if(null!=info.getUrl()&&!"".equals(info.getUrl())){
						if(null!=artileContent&&!"".equals(artileContent)){
							artileContent.append(",");
						}
						//详细地址
						artileContent.append("\"url\": \""+info.getUrl()+"\"");
					}
					if(null!=info.getPicurl()&&!"".equals(info.getPicurl())){
						if(null!=artileContent&&!"".equals(artileContent)){
							artileContent.append(",");
						}
						//图片地址
						artileContent.append("\"picurl\": \""+info.getPicurl()+"\"");
					}
					content.append(artileContent.toString()+"}");
				}
				str_tmp.append("\"news\": {\"articles\":["+content+"]}");
			}
			
		}
		if(null!=agentid&&!"".equals(agentid)){
			if(!"".equals(str_tmp.toString())){
				str_tmp.append(",");
			}
			str_tmp.append("\"agentid\": \""+agentid+"\"");
		}
		
		jsonStr.append(str_tmp);
		jsonStr.append("}");
		return jsonStr.toString();
	}
}

package com.haiyisoft.entity.wx.req;

/**
 * 图文model
 */
public class WxArticle {
	// 图文消息名称
	private String title;
	// 图文消息描述
	private String description;
	// 图片链接,支持JPG、PNG格式,较好的效果为大图640*320,小图80*80
	private String picurl;
	// 点击图文消息跳转链接
	private String url;
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	public String getPicurl() {
		return picurl;
	}
	public void setPicurl(String picurl) {
		this.picurl = picurl;
	}
	public String getUrl() {
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}

	
}


2018-11-24 11:28:22 qq_41654694 阅读数 316
  • 微信支付开发-微信公众号开发12-微信开发php

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

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

1.微信的分享接口调用其实相当于是重写了个接口,自定义的是分享样式
2.位置还是右上角的三个点点

分享样式

首先获取jssdk
因为我的token是储存在数据库里的,所以只要appid和token
没有的话需要加一步获取token值

<?php
class JSSDK {
  private $appId;
  private $access_token;

  public function __construct($appId, $access_token) {
    $this->appId = $appId;
    $this->access_token = $access_token;
  }

  public function getSignPackage() {
    $jsapiTicket = $this->getJsApiTicket();

    // 注意 URL 一定要动态获取,不能 hardcode.
    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
    $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

    $timestamp = time();
    $nonceStr = $this->createNonceStr();

    // 这里参数的顺序要按照 key 值 ASCII 码升序排序
    $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";

    $signature = sha1($string);

    $signPackage = array(
      "appId"     => $this->appId,
      "nonceStr"  => $nonceStr,
      "timestamp" => $timestamp,
      "url"       => $url,
      "signature" => $signature,
      "rawString" => $string
    );
    return $signPackage; 
  }

  private function createNonceStr($length = 16) {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    $str = "";
    for ($i = 0; $i < $length; $i++) {
      $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
    }
    return $str;
  }

  private function getJsApiTicket() {
      $accessToken = $this->access_token;
      $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";
      $res = json_decode($this->httpGet($url));
      $ticket = $res->ticket;

    return $ticket;
  }

  private function httpGet($url) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_TIMEOUT, 500);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl, CURLOPT_URL, $url);

    $res = curl_exec($curl);
    curl_close($curl);

    return $res;
  }
}

调用分享接口
因为wx.ready相当于加载页面的同时就已经加载了,一定放在最外面。
还是右上角三个点点分享

<?php
require('jssdk.php');
$wechat = $db->getRow("SELECT access_token,appid FROM `wechat`");//从数据库获取appid和token
$jssdk = new JSSDK($wechat['appid'], $wechat['access_token']);
$signPackage = $jssdk->GetSignPackage();
?>

<script>
wx.config({
    debug: false, //调试是否开启
    appId: '<?php echo $signPackage["appId"];?>',
    timestamp: '<?php echo $signPackage["timestamp"];?>',
    nonceStr: '<?php echo $signPackage["nonceStr"];?>',
    signature: '<?php echo $signPackage["signature"];?>',
    jsApiList: [
                'checkJsApi',
                'onMenuShareTimeline',//
                'onMenuShareAppMessage',
                'onMenuShareQQ',
                'onMenuShareWeibo'
                ]
        
  });
window.share_config = {
	     "share": {
	        "imgUrl": 'http://jiashijia.137oa.com/<?= $data['headerUrl'] ?>',//分享图,默认当相对路径处理,所以使用绝对路径的的话,“http://”协议前缀必须在。
	        "desc" : '<?= $data['valuation'] ?>',//摘要,如果分享到朋友圈的话,不显示摘要。
	        "title" : '家事佳推荐:<?= $data['uname'] ?>',//分享卡片标题
	        "link": 'http://<?= $_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI] ?>',//分享出去后的链接,这里可以将链接设置为另一个页面。
	        "success":function(){//分享成功后的回调函数
	        },
	        'cancel': function () { 
	            // 用户取消分享后执行的回调函数
	        }
	    }
	}; 
	wx.ready(function () {
	    wx.onMenuShareAppMessage(share_config.share);//分享给好友
	    wx.onMenuShareTimeline(share_config.share);//分享到朋友圈
	    wx.onMenuShareQQ(share_config.share);//分享给手机QQ

	    function weixinSendAppMessage(title,desc,link,imgUrl){
	    	WeixinJSBridge.invoke('sendAppMessage',{
	    	//"appid":appId,
	    	"img_url":imgUrl,
	    	//"img_width":"640",
	    	//"img_height":"640",
	    	"link":link,
	    	"desc":desc,
	    	"title":title
	    	});
	    }
	    
	});

</script>
2017-01-17 11:15:38 qq_35936097 阅读数 5891
  • 微信支付开发-微信公众号开发12-微信开发php

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

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

(本文参考自github/,地址:https://github.com/liujians/weApp)

作者声明:

基于微信小程序开发的仿微信demo 
整合了ionic的样式库和weui的样式库 
使用请查看使用必读! 
更新日志请点击这里

目前功能

查看消息
网络请求获取数据(download示例server端demo)
微信地图(调用API已换成map组件)
发送图片
查看朋友圈
新的朋友
实时文本搜索框(优化)
IDE更新的下拉(目前跟一些组件会出现冲突,等待官方解决)
2种播放器组件
查看系统信息
picker三种MODE
upload与download接口的调用(示例server端demo一起更新)
加入websocket示例,**需要重新install安装依赖**

等待官方加入新内容


欢迎一起学习交流 前端群居所


为学习微信小程序而开发,转发请附地址

https://github.com/liujians/WeApp

使用必读:

  • 10月08日之后的版本被我分离成了服务端和客户端2个demo
  • 如果想要继续留有之前静态demo的请备份 
  • server 部分为单独一个项目,装载着此项目需要的数据,需要下载跑起来才能运行此项目 
  • 项目链接: > 请点击这里下载示例server的demo

跑起服务器之后,在app.js中设置自己的Ip地址 
image

关于使用:

克隆本项目 -> 在微信开发工具中添加项目 -> 选择项目目录 -> 启动示例服务器 -> 重启项目

image

image

image

相关资源:

第二步 要使用node.js搭建一个实例服务器

这里是liujians\weApp的依赖server

由于weApp的项目不能与server的代码混杂,所以server开在这里 

https://github.com/liujians/WeApp-server

配合客户端,加入websocket和相关依赖,需要重新install安装依赖

关于使用:

没有node的需要先安装node

用命令行进入项目根目录下,输入npm install

安装依赖成功后,输入npm run dev运行



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