好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

微信怎么发送php 微信怎么发送原图

很多站长朋友们都不太清楚微信怎么发送php,今天小编就来给大家整理微信怎么发送php,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 微信公众平台如何通过php代码给会员发送被动响应消息 2、 微信小程序怎么向外部php文件传递参数 3、 php网站分享到微信怎么做? 微信公众平台如何通过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文件传递参数

PAY页面往 js_api_call.php 传值 获取不到的问题

echo 是可以echo出来的 但是

这里不写死就会报错 $key0$

<?php

/**

* JS_API支付demo

* ====================================================

* 在微信浏览器里面打开H5网页中执行JS调起支付。接口输入输出数据格式为JSON。

* 成功调起支付需要三个步骤:

* 步骤1:网页授权获取用户openid

* 步骤2:使用统一支付接口,获取prepay_id

* 步骤3:使用jsapi调起支付

*/

//获取信息

@$name="支付测试-包包";

@$price=0.01*100;

@$hyid=$_GET['hyid'];

@$out_trade_no=$_GET['num'];//订单号

include_once("WxPayPubHelper/WxPayPubHelper.php");

//使用jsapi接口

$jsApi = new JsApi_pub();

//=========步骤1:网页授权获取用户openid============

//通过code获得openid

if (!isset($_GET['code']))

{

//触发微信返回code码

$url = $jsApi->createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL);

Header("Location: $url");

}else

{

//获取code码,以获取openid

$code = $_GET['code'];

$jsApi->setCode($code);

$openid = $jsApi->getOpenId();

}

//=========步骤2:使用统一支付接口,获取prepay_id============

//使用统一支付接口

$unifiedOrder = new UnifiedOrder_pub();

//设置统一支付接口参数

//设置必填参数

//appid已填,商户无需重复填写

//mch_id已填,商户无需重复填写

//noncestr已填,商户无需重复填写

//spbill_create_ip已填,商户无需重复填写

//sign已填,商户无需重复填写

$unifiedOrder->setParameter("openid","$openid");//商品描述

$unifiedOrder->setParameter("body","$name");//商品描述

//自定义订单号,此处仅作举例

$timeStamp = time();

$out_trade_no = WxPayConf_pub::APPID."$timeStamp";

$unifiedOrder->setParameter("out_trade_no","$out_trade_no");//商户订单号

$unifiedOrder->setParameter("total_fee","$price");//总金额

$unifiedOrder->setParameter("notify_url","");//通知地址

$unifiedOrder->setParameter("trade_type","JSAPI");//交易类型

//非必填参数,商户可根据实际情况选填

//$unifiedOrder->setParameter("sub_mch_id","XXXX");//子商户号

//$unifiedOrder->setParameter("device_info","XXXX");//设备号

//$unifiedOrder->setParameter("attach","XXXX");//附加数据

//$unifiedOrder->setParameter("time_start","XXXX");//交易起始时间

//$unifiedOrder->setParameter("time_expire","XXXX");//交易结束时间

//$unifiedOrder->setParameter("goods_tag","XXXX");//商品标记

$unifiedOrder->setParameter("attach","2");//会员ID

$prepay_id = $unifiedOrder->getPrepayId();

//=========步骤3:使用jsapi调起支付============

$jsApi->setPrepayId($prepay_id);

$jsApiParameters = $jsApi->getParameters();

//echo $jsApiParameters;

?>

<html>

<head>

<meta charset="utf-8">

<title>支付页面</title>

<script type="text/javascript">

//调用微信JS api 支付

function jsApiCall()

{

WeixinJSBridge.invoke(

'getBrandWCPayRequest',

<?php echo $jsApiParameters; ?>,

function(res){

WeixinJSBridge.log(res.err_msg);

if(res.err_msg == "get_brand_wcpay_requestk"){

window.location.href='/shop/successful.php?spmc=<?php echo $name; ?>price=<?php echo $price; ?>';

//history.go(-1);

}else{

window.location.href='/shop/pay.php';

}

}

);

}

if (typeof WeixinJSBridge == "undefined"){

if( document.addEventListener ){

document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);

}else if (document.attachEvent){

document.attachEvent('WeixinJSBridgeReady', jsApiCall);

document.attachEvent('onWeixinJSBridgeReady', jsApiCall);

}

}else{

jsApiCall();

}

</script>

</head>

</html>

php网站分享到微信怎么做?

你直接使用网上的一些分享工具就是了,可以分享到微信、微博、邮箱等!例如百度分享,jia分享等!

一般是注册帐户后在帐户里生成分享代码,然后粘贴到你的网站合适的位置

关于微信怎么发送php的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于微信怎么发送php 微信怎么发送原图的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did211318
更新时间:2023-05-03   阅读:13次

上一篇: PHP图片解压失败 php解压压缩包

下一篇:宝塔安装PHP指令 宝塔安装php8

相关资讯

最新资料更新

  • 1.php接收post php接收post数据在发出代码
  • 2.影视php解析api php解析vip视频
  • 3.kohanaphp版本 koo版
  • 4.phpsql添加记录 php数据表里怎么添加数据
  • 5.macphp执行权限 macbookpro权限
  • 6.php求100的质数 php求出1100的素数
  • 7.php下载csv乱码 php下载文件名乱码
  • 8.php网站设计素材 php网站制作
  • 9.php获取url# php获取url id
  • 10.phpcrc-itu的简单介绍
  • 11.phpwsdl调用 php调用php文件
  • 12.php可以回收吗 php还有人用吗
  • 13.PHP版本在哪调 phpversion
  • 14.php在线做点兼职 php在线做点兼职是真的吗
  • 15.phphtml补全 html自动补全代码
  • 16.韩顺平php视频教程下载 韩顺平oracle视频
  • 17.php绘制健康码 php源码怎么搭建网站
  • 18.php文本转字节 php字符转换成数字
  • 19.php网站依赖 php运行网址
  • 20.phpsql过滤类 php过滤器

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://www.haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]