微信php代码
㈠ 关于微信公众平台订阅号 自定义菜单 php 代码的问题。
公众号可以使用AppID和AppSecret调用本接口来获取access_token,代码如下:
public$appid="填写你的id";
public$appsecret="填写你的secret";
//获得凭证接口
//返回数组,access_token和time有效期
publicfunctionaccess_token(){
$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->appid}&secret={$this->appsecret}";
$cont=file_get_contents($url);
returnjson_decode($cont,1);
}
获得access_token后,在创建菜单时要POST提交数据。
㈡ 接入微信开发时php实例怎么配置
第一步需要指定接收微信服务器数据的URL,同时还需要指定一个TOKEN(由开发者任意填写,用于生成签名),用于接入时的验证。
第二步要验证您指定的URL的有效性,微信服务器会像您指定的URL发送一个GET请求,该请求携带四个参数。
开发者通过检验signature对请求进行校验。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。
PHP检验代码如下。
<?php
$wechatObj
=
new
wechatCallbackAPI();
$wechatObj->valid();
class
wechatCallbackAPI
{
private
$token
=
"WEIXIN";
private
$appId
=
"APPID";
private
$appSecret
=
"APPSECRET";
private
function
checkSignature()
{
$signature
=
$_GET["signature"];
$timestamp
=
$_GET["timestamp"];
$nonce
=
$_GET["nonce"];
$tmpArr
=
array($this->token,
$timestamp,
$nonce);
你看过后很简单吧以后不会可以向我一样经常到后盾人平台找找相关教材看看就会了,希望能帮到你,给个采纳吧谢谢ヾ(◍
°
㉨
°
◍)ノ゙
㈢ 微信的一个PHP文件怎么写,要用软件吗,还是用电脑里有笔记本文件也可以写
这个是案例的代码,PHP开发工具选择是仁者见仁,智者见智。都可以的。
常用的有 记事本、editplus、Notepad++、dreamweaver、Zend Studio 等等
我用的是 editplus
㈣ PHP通过微信跳转的Code参数获取用户的openid(关键代码)
关键代码如下所示:
//获取微信登录用户信息
function
getOpenID($appid,$appsecret,$code){
$url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".
$appsecret."&code=".$code."&grant_type=authorization_code";
$weixin=file_get_contents($url);//通过code换取网页授权access_token
$jsondecode=json_decode($weixin);
//对JSON格式的字符串进行编码
$array
=
get_object_vars($jsondecode);//转换成数组
$openid
=
$array['openid'];//输出openid
return
$openid;
}
以上所述是小编给大家介绍的PHP通过微信跳转的Code参数获取用户的openid(关键代码),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
㈤ 微信后台PHP代码中文乱码
header("content-type:text/html;charset=utf-8");
mysql_query('SETNAMESUTF8');
㈥ 微信分享到朋友圈中的按钮点击在php代码和输出页面代码怎么写
下面是代码(相关参数请自行修改):
function WeiXinShareBtn() {
if (typeof WeixinJSBridge == "undefined") {
alert("xxxxxxxxxxxxxxxxxxx,通过微信分享文章 ");
} else {
WeixinJSBridge.invoke('shareTimeline', {
"title": "xxx",
"link": "http://www.36kr.com",
"desc": "xxxxxxxx",
"img_url": "assets/images/apple-touch-icon.png"
});
}
}
㈦ 我有一组微信号,每次刷新页面,随机显示一个微信号,怎样用php实现
php后台代码(命名为:houtai.php):
<?php
srand ((float) microtime() * 10000000);
$input = array ("wx1", "wx2", "wx3", "wx3");
$rand_keys = array_rand ($input);
//print $input[$rand_keys];
?>
前台代码(在前台展示页面,例如:index.php):
<span id="wxzs"><?php require_once 'houtai.php'; echo "$input[$rand_keys]";?></span>
主要利用随机数原理,可以参考这个网址:http://www.jb51.net/article/84856.htm
㈧ 微信公众平台如何通过php代码给会员发送被动响应消息
明确在哪接收消息
从微信公众平台接口消息指南中可以了解到,当用户向公众帐号发消息时,微信服务器会将消息通过POST方式提交给我们在接口配置信息中填写的URL,而我们就需要在URL所指向的请求处理类CoreServlet的doPost方法中接收消息、处理消息和响应消息。
接收、处理、响应消息
下面先来看我已经写好的CoreServlet的完整代码:
package org.liufeng.course.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.liufeng.course.service.CoreService;
import org.liufeng.course.util.SignUtil;
/**
* 核心请求处理类
*
* @author liufeng
* @date 2013-05-18
*/
public class CoreServlet extends HttpServlet {
private static final long serialVersionUID = 4440739483644821986L;
/**
* 确认请求来自微信服务器
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 微信加密签名
String signature = request.getParameter("signature");
// 时间戳
String timestamp = request.getParameter("timestamp");
// 随机数
String nonce = request.getParameter("nonce");
// 随机字符串
String echostr = request.getParameter("echostr");
PrintWriter out = response.getWriter();
// 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
if (SignUtil.checkSignature(signature, timestamp, nonce)) {
out.print(echostr);
}
out.close();
out = null;
}
/**
* 处理微信服务器发来的消息
*/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 将请求、响应的编码均设置为UTF-8(防止中文乱码)
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
// 调用核心业务类接收消息、处理消息
String respMessage = CoreService.processRequest(request);
// 响应消息
PrintWriter out = response.getWriter();
out.print(respMessage);
out.close();
}
}
代码说明:
1)第51行代码:微信服务器POST消息时用的是UTF-8编码,在接收时也要用同样的编码,否则中文会乱码;
2)第52行代码:在响应消息(回复消息给用户)时,也将编码方式设置为UTF-8,原理同上;
3)第54行代码:调用CoreService类的processRequest方法接收、处理消息,并得到处理结果;
4)第57~59行:调用response.getWriter().write()方法将消息的处理结果返回给用户
从doPost方法的实现可以看到,它是通过调用CoreService类的processRequest方法接收、处理消息的,这样做的目的是为了解耦,即业务相关的操作都不在Servlet里处理,而是完全交由业务核心类CoreService去做。下面来看CoreService类的代码实现:
package org.liufeng.course.service;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.liufeng.course.message.resp.TextMessage;
import org.liufeng.course.util.MessageUtil;
/**
* 核心服务类
*
* @author liufeng
* @date 2013-05-20
*/
public class CoreService {
/**
* 处理微信发来的请求
*
* @param request
* @return
*/
public static String processRequest(HttpServletRequest request) {
String respMessage = null;
try {
// 默认返回的文本消息内容
String respContent = "请求处理异常,请稍候尝试!";
// xml请求解析
Map<String, String> requestMap = MessageUtil.parseXml(request);
// 发送方帐号(open_id)
String fromUserName = requestMap.get("FromUserName");
// 公众帐号
String toUserName = requestMap.get("ToUserName");
// 消息类型
String msgType = requestMap.get("MsgType");
// 回复文本消息
TextMessage textMessage = new TextMessage();
textMessage.setToUserName(fromUserName);
textMessage.setFromUserName(toUserName);
textMessage.setCreateTime(new Date().getTime());
textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
textMessage.setFuncFlag(0);
// 文本消息
if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) {
respContent = "您发送的是文本消息!";
}
// 图片消息
else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_IMAGE)) {
respContent = "您发送的是图片消息!";
}
// 地理位置消息
else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LOCATION)) {
respContent = "您发送的是地理位置消息!";
}
// 链接消息
else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LINK)) {
respContent = "您发送的是链接消息!";
}
// 音频消息
else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VOICE)) {
respContent = "您发送的是音频消息!";
}
// 事件推送
else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)) {
// 事件类型
String eventType = requestMap.get("Event");
// 订阅
if (eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) {
respContent = "谢谢您的关注!";
}
// 取消订阅
else if (eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) {
// TODO 取消订阅后用户再收不到公众号发送的消息,因此不需要回复消息
}
// 自定义菜单点击事件
else if (eventType.equals(MessageUtil.EVENT_TYPE_CLICK)) {
// TODO 自定义菜单权没有开放,暂不处理该类消息
}
}
textMessage.setContent(respContent);
respMessage = MessageUtil.textMessageToXml(textMessage);
} catch (Exception e) {
e.printStackTrace();
}
return respMessage;
}
}
代码说明:
1)第29行:调用消息工具类MessageUtil解析微信发来的xml格式的消息,解析的结果放在HashMap里;
2)32~36行:从HashMap中取出消息中的字段;
3)39-44、84行:组装要返回的文本消息对象;
4)47~82行:演示了如何接收微信发送的各类型的消息,根据MsgType判断属于哪种类型的消息;
5)85行:调用消息工具类MessageUtil将要返回的文本消息对象TextMessage转化成xml格式的字符串;
关于事件推送(关注、取消关注、菜单点击)
对于消息类型的判断,像文本消息、图片消息、地理位置消息、链接消息和语音消息都比较好理解,有很多刚接触的朋友搞不懂事件推送消息有什么用,或者不清楚该如何判断用户关注的消息。那我们就专门来看下事件推送,下图是官方消息接口文档中关于事件推送的说明:
㈨ php写的微信公众平台代码如何进行断点调试
首先需要说明的是,php程序调试需要手动编写部分代码,目的是断截程序线程的执行,输出指定环节的结果,就是所谓的断点调试。所以,实际上需要讨论的问题是采用什么断点代码更合适。
die()和exit()
die()和exit()函数都有终止线程的作用,是php断点调试需要使用的最主要的函数,它们也是php程序员使用非常频繁的函数。然而两者又有什么区别呢?在程序调试时需要注意什么问题呢?
die()函数一般与“or”一并使用,写作“or die()”,经常看到这样的语句:
$file = fopen($filename, 'r') or die("抱歉,无法打开: $filename")
or在这里是这样理解的,因为在PHP中并不区分数据类型,所以$file既可以是int也可以bool,所以这样的语句不会报错。但其处理过程可能有些朋友不大明白。其实在大多数的语言中, bool or bool这样的语句中,如果前一个值为真后一个值就不会再判断了。这里也是的,所以如果fopen函数执行正确的话,会返回一个大于0的int值(这其实就是"真"),后面的语句就不会执行了。如果fopen函数执行失败,就会返回false,那么就会判断后面的表达式是否为真了。结果执行了die()之后,不管返回什么,程序都已经停止执行了,并且显示指定的出错信息,也就达到了调试的目的。就这样。
实际上,die和exit是等价的,都是用来终止当前脚本。
php手册对两者的解释如是说:
exit() 函数输出一条消息,并退出当前脚本。该函数是 die() 函数的别名。
die() 函数输出一条消息,并退出当前脚本。该函数是 exit() 函数的别名。
实例:
<?php $site = "http://www.w3school.com.cn/"; fopen($site,"r") or exit("Unable to connect to $site"); ?>
<?php $site = "http://www.w3school.com.cn/"; fopen($site,"r") or die("Unable to connect to $site"); ?>
var_mp()和print_r()
var_mp -- 打印变量的相关信息
void var_mp ( mixed expression [, mixed expression [, ...]] )
此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
提示: 为了防止程序直接将结果输出到浏览器,可以使用输出控制函数(output-control functions)来捕获此函数的输出,并把它们保存到一个例如 string 类型的变量中。
<?php
$a = array (1, 2, array ("a", "b", "c"));
var_mp ($a);
$b = 3.1;
$c = TRUE;
var_mp($b,$c);
?>
var_mp()可以输出多个变量,如:var_mp($b,$c)
print_r -- 打印关于变量的易于理解的信息
bool print_r ( mixed expression [, bool return] )
注: 参数 return 是在 PHP 4.3.0 的时候加上的
print_r() 显示关于一个变量的易于理解的信息。如果给出的是 string、integer 或 float,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。object 与数组类似。
记住,print_r() 将把数组的指针移到最后边。使用reset() 可让指针回到开始处。
<pre>
<?php
$a = array ('a' => 'apple',
'b' => 'banana',
'c' => array ('x','y','z'));
print_r ($a);
?>
</pre>
上边的代码将输出:
<pre> Array ( [a] => apple [b] => banana [c] => Array ( [0] => x [1] => y [2] => z ) ) </pre>
如果想捕捉 print_r() 的输出,可使用 return 参数。若此参数设为 TRUE,print_r() 将不打印结果(此为默认动作),而是返回其输出。
例子:return 参数示例
<?php
$b = array ('m' => 'monkey',
'foo' => 'bar',
'x' => array ('x', 'y', 'z'));
$results = print_r ($b, true); //$results 包含了 print_r 的输出结果
?>
注: 如果想在 PHP 4.3.0 之前的版本中捕捉 print_r() 的输出,可使用输出控制函数。
注: 在 PHP 4.0.4 之前的版本中,如果给出的 array 或 object 包含了直接或间接指向自身的引用,print_r() 将永远继续下去。print_r($GLOBALS) 就是一个例子,因为 $GLOBALS 自身即是全局变量,其包含了指向自身的引用。
Zend Debugger
php断点调试,有人提到用Zend Debugger,简单方便,适合菜鸟使用。不过本人因没有用过,在此不作讨论。
㈩ PHP 生成微信红包代码简单
废话不多说了,一切解释尽在代码中,具体代码如下所示:
/**
*
@param
$total
[你要发的红包总额]
*
@param
int
$num
[发几个]
*
@return
array[生成红包金额]
*/
function
getRedGift($total,
$num
=
10)
{
$min
=
0.01;
$wamp
=
array();
$returnData
=
array();
for
($i
=
1;
$i
<
$num;
++$i)
{
$safe_total
=
($total
-
($num
-
$i)
*
$min)
/
($num
-
$i);
//红包金额的最大值
if
($safe_total
<
0)
break;
$money
=
@mt_rand($min
*
100,
$safe_total
*
100)
/
100;//随机产生一个红包金额
$total
=
$total
-
$money;//剩余红包总额
$wamp[$i]
=
round($money,
2);//保留两位有效数字
}
$wamp[$i]
=
round($total,
2);
$returnData['MoneySum']
=
$wamp;
$returnData['newTotal']
=
array_sum($wamp);
return
$returnData;
}
//测试
$data
=
getRedGift(100,
10);
print_r($data);
//result:
/*
Array
(
[1]
=>
8.7
[2]
=>
10.09
[3]
=>
6.23
[4]
=>
6.87
[5]
=>
0.47
[6]
=>
3.12
[7]
=>
7.52
[8]
=>
12.21
[9]
=>
20.53
[10]
=>
24.26
)*/
代码到此就给大家写完了,希望对大家有所帮助!更多有关php
生成红包的程序代码尽在脚本之家网站,请登陆我们的官网了解更多资讯,谢谢!