2018-04-12 11:47:21 MyLoveSunset7777 阅读数 157
  • 微信支付开发-微信公众号开发12-微信开发php

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

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

通过收集相关资料,加亲身实验,有以下几种调试微信页面的方式:

1、(推荐)手机连wifi,并确保手机可以ping通pc端(不在一个网段也可以,只要路由是通的)

     此种方法需要在手机上按开发者工具上设置连接wifi的代理IP,和端口

     无法调试断点,响应数据无法查看

2、(推荐)适用于没有手机的情况,需要有开发者权限,并在工具上登录微信帐号

      在工具内部右边的浏览器地址栏输入测试的网页url,就像在浏览器打开一样

      可以调试断点,可查看响应数据

3、(不推荐)同样适用没有wifi情况,xblink方式,试过,总会在开始调试后,点击页面inspect时无限转圈,也开启了Inspector调试,没用

2016-12-18 14:46:22 testcs_dn 阅读数 6523
  • 微信支付开发-微信公众号开发12-微信开发php

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

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

微信公众平台小程序开放公测。小程序是一种新的开放能力,开发者可以快速地开发一个小程序。小程序可以在微信内被便捷地获取和传播,同时具有出色的使用体验。小程序已经风风火火这么久了,但是开放时间还未确定,到现在也没用上小程序,不知道它究竟有多大的魔力。今天先来了解一下微信小程序的开发者工具。

下载

https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html?t=20161122

最新版本 0.11.112301

windows 64 、 windows 32 、 mac

安装

没什么可说的,大家看看就是。





安装完成启动之后可能会提示要求访问网络,允许访问。

登录



选择调用类型

创建项目


我只是想安装一下看看,还没有申请AppID,所以这里选择无AppID。

项目创建后开发工具的首页,默认就是调试页面

用过Chrome的开发者工具的小伙伴看这界面是不是感觉很亲切?感觉就是一个模子里出来的。

是不是?

是不是?

编辑界面,只是图中的一个菜单项有点特别:硬盘打开,是打开项目文件目录

项目界面:由于创建的项目没有填写AppID,所以没办法上传体验。

结束语

为什么它和Chrome的开发者工具那么像?
我用SPY++查看了一下微信小程序的开发者工具:

发现和Chrome显示网页内容的窗口标题及类完全一致; 
由此看来微信小程序的最终呈现还是基于浏览器。
我们在开发的时候使用的是转义后的标签,而实际部署后用户端使用的应该还是HTML。
为什么这么说?
小程序也好,轻应用也好,为的就是一个轻,无处不在,随便一个浏览器就可以打开。
但这也是只是一个猜测,而如果不是这样,微信内置一个支持小程序的类浏览器的内核,
虽然在小程序的封装上起到了保护源码的作用,但就设置了一个壁垒,也就是如果想使用小程序还必须安装微信才可以;
当然,现在微信的装机率已经不是问题了。
小伙伴们,你们怎么看?
===========文档信息============ 
版权声明:非商用自由转载-保持署名-注明出处 
署名(BY) :testcs_dn(微wx笑) 
文章出处:[无知人生,记录点滴](http://blog.csdn.net/testcs_dn)
2018-11-28 14:46:38 zxq131495 阅读数 1321
  • 微信支付开发-微信公众号开发12-微信开发php

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

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

网上有好多方法,但是我一一实验都没有用,后来自己倒腾无意发现了原因

其实下图标记的一段文字已经说的很明确了,安装 开发工具的时候应该关闭其他应用,

亲测~~,有效。

2019-11-26 10:06:21 qq_36906627 阅读数 50
  • 微信支付开发-微信公众号开发12-微信开发php

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

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

前言


  最近项目有需求需要用到微信小程序推送消息,在此记录一下实验过程。

前提准备


在开始前,你需要准备:

  • 注册微信小程序
  • 一个简单的springBoot 项目
  • 微信开发者工具

正式


微信小程序发送消息主要通过WxMaTemplateMessage 类来推送

public class WxMaTemplateMessage implements Serializable {
    private String toUser;       // 给谁推送(用户openId)
    private String templateId;  // 消息ID
    private String page;    // 用户点开消息跳转到对应的小程序界面
    private String formId;  // 表单formId
    private List<WxMaTemplateData> data; // 消息的数据列表
    private String emphasisKeyword;  
...

所以我们在推送前需要构造这些信息,formId 和toUser(openId) 是从前端传过来的。formId 可以通过表单或者支付来获取,表单比较简单,只需要把report-submit 设置为true 就可以获得。

简单通过微信开发者工具来获取formId(openId 数据库存了)

  1. 先建立一个前端项目,AppID 就是小程序的id,在微信公众号后台可以看到。
    image.png

  2. 修改index/index.js 和index.wxml (百度某位同学的),通过表单来获取formId ,并发送到后台。

// index.wxml
<form bindsubmit='registerFormSubmit' report-submit='true'>
  <view class='buttons'>
    <button class='confirmbtn' form-type='submit'>确定</button>
  </view>

</form>
<view>formid: {{formid}}</view>
<button bindtap='push'>
    发送
</button>

//index.js
//获取应用实例
const app = getApp()

Page({
  
  data: {
    formid: ""
  },
  //事件处理函数
  registerFormSubmit: function (e) {
    //    打印formId
    console.log(e.detail.formId);
    this.setData({
      formid: e.detail.formId
    })
   },
  //测试推送
 push() {
    let formid = this.data.formid;
   let openid = 'oT-H-40ZHdRX1REZFKQhPg3jJZoQ';
    wx.request({
      url: 'http://localhost:8080/push?openId=' + openid + "&formId=" + formid,
      success(res) {
        console.log("推送结果:", res)
      },
      fail(err) {
        console.log("推送失败:", err)
      }
    })
  }
})

效果图
这里formid 在测试的时候获取不到,调到真机调试,或者用预览就行了。

  1. 请求后台接口来发送消息(ctrl c v 百度某同学)
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
import cn.binarywang.wx.miniapp.bean.WxMaTemplateData;
import cn.binarywang.wx.miniapp.bean.WxMaTemplateMessage;
import cn.binarywang.wx.miniapp.config.WxMaInMemoryConfig;
import me.chanjar.weixin.common.error.WxErrorException;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

@RestController
public class PushController {

    @GetMapping("/push")
    public String push(@RequestParam String openId, @RequestParam String formId) {
        //1,配置小程序信息
        WxMaInMemoryConfig wxConfig = new WxMaInMemoryConfig();
        wxConfig.setAppid("你的appId");
        wxConfig.setSecret("你的secret");

        WxMaService wxMaService = new WxMaServiceImpl();
        wxMaService.setWxMaConfig(wxConfig);

        //2,设置模版信息(keyword1:类型,keyword2:内容)
        List<WxMaTemplateData> templateDataList = new ArrayList<>(2);
        WxMaTemplateData data1 = new WxMaTemplateData("keyword1", "获取老师微信");
        WxMaTemplateData data2 = new WxMaTemplateData("keyword2", "2501902696");
        WxMaTemplateData data3 = new WxMaTemplateData("keyword3", "2501902696");
        WxMaTemplateData data4 = new WxMaTemplateData("keyword4", "2501902696");
        templateDataList.add(data1);
        templateDataList.add(data2);
        templateDataList.add(data3);
        templateDataList.add(data4);

        //3,设置推送消息
        WxMaTemplateMessage templateMessage = WxMaTemplateMessage.builder()
                                                  .toUser(openId)
                                                  .formId(formId)
                                                  .templateId("你的消息id") // 在微信公众号后台可以申请消息模版
                                                  .data(templateDataList)
                                                  .page("pages/index/index")
                                                  .build();

        //4,发起推送
        try {
            wxMaService.getMsgService().sendTemplateMsg(templateMessage);
        } catch (WxErrorException e) {
            System.out.println("推送失败:" + e.getMessage());
            return e.getMessage();
        }
        return "推送成功";
    }

}

image.png

一个简单的小程序推送demo ,权侵删

2018-04-07 21:08:29 chy_php 阅读数 2385
  • 微信支付开发-微信公众号开发12-微信开发php

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

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

    首先在微信公众平台(网址:https://mp.weixin.qq.com)申请一个订阅号,然后在开发里找到开发者工具点击公众平台测试账号,在测试账号内进行微信开发实验。
    1. 设置一个自己的有效的域名网址和TOKEN(就是暗号),TOKEN一定要与PHP代码中的TOKEN验证一致否则会一直配置失败(写有这段代码的文件一定要传到有效的域名网址内。与设置的网址必须相同)。
    下面是PHP代码(在微信公众平台开发里的开发者文档内有部分代码) 。
<?php

//define your token
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->run();

class wechatCallbackapiTest
{
	public function run()
    {

    	if ($this->checkSignature()==false) {
    		die('非法请求');
    	}

    	if (isset($_GET["echostr"])) {
    		$echostr = $_GET["echostr"];
    		echo $echostr;
    		exit();
    	} else {
    		$this->responseMsg();
    	}
    	

        /*$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 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!";
                	$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.自动回复 
首先重新写一个方法在上面那个文件夹里,再调用此方法,注意不能重名。
以下代码是给订阅号发天气,它会回复天气晴朗,发放假,它会回复你“不好好奋斗瞎想啥?”回复其他则会回复"Welcome to wechat world!"
public function responseMsg()
    {
		//get post data, May be due to the different environments
		$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
		file_put_contents('msg.txt', $postStr,FILE_APPEND);
      	//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();
                //$msgType = $postObj->MsgType;//消息类型  
                //$event = $postObj->Event;//时间类型,subscribe(订阅)、unsubscribe(取消订阅)
                $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 = $this->autohuifu($keyword);
                	//$contentStr = "Welcome to wechat world!";
                	$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                	echo $resultStr;
                }else{
                	echo "Input something...";
                }

        }else {
        	echo "";
        	exit;
        }
    }
	

    public function autohuifu($keyword){
		
		if($keyword =='天气'){
			$contentStr = "天气晴朗";
                	
        	}else if($keyword =='放假'){
        	$contentStr = "成天不好好奋斗瞎想啥?";

        }else{
        	$contentStr = "Welcome to wechat world!";
        
        }

        return $contentStr;
    



开发进度4

阅读数 1

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