微信公众号开发流程及完整代码,效果图

一:前提配置:

1.创建公众号并认证,备案网站并且有服务器。

2.微信公众平台 - 登录微信公众号 - 设置 - 公众号设置 - 功能设置 - 添加JS接口安全域名,

3.微信公众平台 - 登录微信公众号 - 开发 - 基本配置 - 添加IP地址白名单(配置后才能获取 access_token )

二:使用JS-SDK完整代码及流程

 获取 access_token    -->    根据access_token 获取  jsapi_ticke    -->     生成JS-SDK权限验证的签名

html示例代码:

<!DOCTYPE html>
<html lang="en">
	<head>
		<title>弹窗</title>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0" />
		<meta http-equiv="X-UA-Compatible" content="ie=edge">
		<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
		<script src="http://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
		<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>

		<style type="text/css">
			.toast {
				padding: 10px 25px 10px 25px;
				background: rgba(0, 0, 0, .5);
				border-radius: 5px;
				color: #ffffff;
				text-align: center;
				position: fixed;
				left: 50%;
				top: 40%;
				transform: translate(-50%, -50%);
				z-index: 100;
			}
		</style>
	</head>
	<body>
		<div id="test">
			<toast v-if='isShow' :message='isShowMsg'></toast>
			<div class="container" @click="showToast">
				点击显示 showToast
			</div>
		</div>
		<script>
			var that;
			Vue.component('toast', {
				props: ['message'],
				template: `
			    <div class="toast_bg_transparent">
			        <div class="toast">
			            <span>{{message}}</span>
			        </div>
			    </div>
			    `
			})
			new Vue({
				el: '#test',
				data() {
					return {
						isShow: false,
						isShowMsg: '', //弹窗提示
					}
				},
				methods: {
					getA() {
						var url = 'https://jayjing.wang/gongzhonghao_H5/getConfig.php';
						$.ajax({
							url: url,
							complete: res => {
								var config = JSON.parse(res.responseText)
								console.log('res-config', config)
								wx.config({
									debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
									appId: config.appId, // 必填,公众号的唯一标识
									timestamp: config.timestamp, // 必填,生成签名的时间戳
									nonceStr: config.nonceStr, // 必填,生成签名的随机串
									signature: config.signature, // 必填,签名
									jsApiList: [] // 必填,需要使用的JS接口列表
								});
							}
						})
					},
					showToast() {
						console.log('点击了 showToast')
						this.isShow = true;
						this.isShowMsg = '错误提示';

						setTimeout(() => {
							this.isShow = false;
						}, 1000);
					}
				},
				mounted() {
					this.getA()
					wx.ready(function(res) {
						console.log('ready', res)
						// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
					});
				}
			})
		</script>
	</body>
</html>

运行结果如下图,就证明配置完成,可以开发了。

php示例代码:

<?php
    header("Content-Type:text/html;charset=utf8"); 
	header("Access-Control-Allow-Origin: *"); //解决跨域
	header('Access-Control-Allow-Methods:GET');// 响应类型  
	header('Access-Control-Allow-Headers:*'); // 响应头设置 
	$appid = "wx9025b8efd---";
	$secret = "3c242548fb56---";
        $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";
        $s = file_get_contents($url);
		$s = json_decode($s, true);
		$url_b = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={$s['access_token']}&type=jsapi";
        $data = file_get_contents($url_b);
		$data = json_decode($data, true);
		$ticket = $data['ticket'];
		//print();
        //echo $ticket;
		
		// 进行sha1签名
        $timestamp = time();
        $nonceStr = createNonceStr();
        // 注意 URL 建议动态获取(也可以写死).
        $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
        $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; // 调用JSSDK的页面地址
        //$url = $_SERVER['HTTP_REFERER']; // 前后端分离的, 获取请求地址(此值不准确时可以通过其他方式解决)
        $str = "jsapi_ticket={$ticket}&noncestr={$nonceStr}&timestamp={$timestamp}&url={$url}";
        $sha_str = sha1($str);
        $signPackage = array(
            "appId" =>  $appid,
            "nonceStr" => $nonceStr,
            "timestamp" => $timestamp,
            "signature" => $sha_str,
        );
		//echo $appid.'-----'.$nonceStr.'-----'.$timestamp.'-----'.$sha_str;
    echo urldecode(json_encode($signPackage));
		
		
		//随机字符串
    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;
    }
	?>

大功告成。

扫描二维码关注公众号,回复: 10779583 查看本文章

--

发布了423 篇原创文章 · 获赞 842 · 访问量 213万+

猜你喜欢

转载自blog.csdn.net/qq_35713752/article/details/105228281
今日推荐