更新为v2.0  链接:  http://pan.baidu.com/s/1o6rcvME  密码: 67bp
*说明参考续篇  http://snmoney.blog.163.com/blog/static/440058201582141547557/
使用公众号发送红包的准备工作(前提条件)
1.你需要有一个微信服务号(mp.weixin.qq.com 注册,订阅号不行)且进行了企业认证(才能满足下一个条件);
2. 需要申请一个微信商户号(pay.weixin.qq.com登录,需要发邮件申请注册,方法百度),且充值足够发红包用的资金;
3. 回微信公众平台(mp.weixin.qq.com) 完成【微信支付】的功能开通,然后打开【开发者中心】的开发模式。确认在下面接口权限的列表中 【功能服务->微信支付】 为已获得;
4. 从mp.weixin 中记录下微信号的 AppId(开发者中心);
5. 从pay.weixin 记录下商户号(账户概览)、商户的API秘钥(账户设置->API安全),下载API证书(账户设置->API安全),解压得到pem文件备用。
类用法
1. 用编辑器打开wxhongbao.class.php , 参考备注说明根据自己的微信号和商户号的信息设定前40行的变量;
2. 把类文件、pem证书(apiclient_cert.pem/ apiclient_key.pem),上传到相应的路径下;
3. 调用类,以下是一个简单的sample 。
include("wxhongbao.class.php");$usrWXOpenId = "123456987654"; //接收红包的用户的微信OpenId,捕获和辨识方法略~$hb = new WXHongBao();$hb->newhb($usrWXOpenId ,1000); //新建一个10元的红包,第二参数单位是 分,注意取值范围 1-200元//以下若干项可选操作,不指定则使用class脚本顶部的预设值  $hb->setNickName("土豪有限公司");  $hb->setSendName("王富贵");  $hb->setWishing("恭喜发财");  $hb->setActName("发钱活动");  $hb->setRemark("有钱!任性!");//发送红包if(!$hb->send()){ //发送错误    echo $hb->err();}else{   echo "红包发送成功";}

*推荐应用场景:可以在微信公众号的业务接口脚本中,对用户触发的按键、菜单或者交互事件作出响应。具体怎么用可以发挥自己的想象力额。
注意事项
1. act_name、nick_name、send_name 的接口限制是32字节,数据打包提交时中文编码后一个中文字占4字节,所以注意上述3项不要超过8个中文字;否则接口会返回错误。详尽的参数规范见文档 http://pay.weixin.qq.com/wiki/doc/api/cash_coupon.php?chapter=13_5 
2. 金额的单位是分,合法取值范围是 100-20000(对应金额为1元~200元)
3. 
-------------
*开发备忘(对类的源码构成没有兴趣深究的可以忽略本部分)
依据接口要求算法生成签名的时候返回一直报签名错!
原本的写法是
private function gen_Sign(){        unset($param); //将所有的变量构造成一个数组先
        $param["act_name"]=$this->act_name;
        ... //过程略
        $param["wxappid"]=$this->wxappid;

        ksort($param); //按照键名排序,sign算法要求

        $sign_raw = http_build_query($param); //数组转换串接
        $sign_raw .= "&key=".$this->apikey; //黏附最后的api秘钥参数,sign算法要求

        $this->sign = strtoupper(md5($sign_raw)); //md5之后转大写,sign算法要求
    }

查半天!错误是因为  http_build_query 会对中文进行urlencode,而微信要求的是utf8的原文,难怪md5出来的值不一致!老老实实把数组转换串接的那一行改写,用foreach循环手动串接。就正确了

private function gen_Sign(){        unset($param); //将所有的变量构造成一个数组先
        $param["act_name"]=$this->act_name;
        ... //过程略
        $param["wxappid"]=$this->wxappid;

        ksort($param); //按照键名排序,sign算法要求

        //$sign_raw = http_build_query($param); //数组转换串接    $sign_raw = "";
        foreach($param as $k => $v){            $sign_raw .= $k."=".$v."&";
        }
        $sign_raw .= "key=".$this->apikey; //黏附最后的api秘钥参数,sign算法要求

        $this->sign = strtoupper(md5($sign_raw)); //md5之后转大写,sign算法要求
    }

阅读(3339) |  评论(17)

PHP:微信公众号的红包发送功能相关推荐

  1. 如何设置关注微信公众号送红包功能?

    如何设置关注微信公众号送红包功能?,具体解决方案如下: 解决方案: 1,微信服务号可以通过开通微信支付功能(开通条件是认证过的"服务号")进行关注发红包; 2,微信订阅号由于不能开 ...

  2. 【微信公众号发红包转账】微信公众号上手机网页接收请求,通过公众号给用户发红包 开发流程...

    有了微信支付 的开发做铺垫,相关的微信其他业务处理起来逻辑就能清晰很多. 准备好这两个架包 ------------------------------------------------------ ...

  3. 微信公众号消息模板发送

    微信公众号消息模板发送 微信公众号消息模板群发功能 开通申请模板消息功能 获取模板消息发送所需参数 AccessToken pojo类 TemplateData pojo类 WxTagsEntity ...

  4. python微信公众号翻译功能_自学Python笔记:给微信公众号搭建“成绩查询”功能...

    原标题:自学Python笔记:给微信公众号搭建"成绩查询"功能 期末考试 临近年末,全国各地都在上演一场大戏<期末考试>,考完试无论什么样的结果总想尽快看到自己一个学期 ...

  5. 【安信可A9G专题②】A9G在微信公众号上的定位功能笔记分享;

    本系列博客学习由 安信可科技 - 官方博客 技术分享,如有疑问请留言或联系邮箱. 1.A9G环境在windows上搭建并编译,串口打印 Hello GPRS 2.A9G在微信公众号上的定位功能笔记分享 ...

  6. 微信开发学习总结(三)——开发微信公众号的最基本功能——普通消息的接收和回复

    在上篇<微信开发学习总结(二)--微信开发入门>我们介绍了微信公众平台的基本原理,如何接入微信公众号,如何保持access_token的长期有效性以及进行了简单的文本消息测试,本篇再来具体 ...

  7. 微信公众号实现定时提醒功能

    微信公众号实现定时提醒功能 源码地址:https://github.com/selierlin/help_girlfriends help_girlfriends 是一款基于微信公众号和推送通知的应用 ...

  8. 字节跳动成立抖音集团或在香港上市;微信公众号上线“快捷私信”功能;Facebook开源挑战GPT-3的语言模型|极客头条

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  9. php创建菜单_php实现微信公众号创建自定义菜单功能的实例代码

    目的 创建自定义菜单,实现菜单事件. 首先获取Access_Token 接口: 我用的是测试号,修改APPID和APPSECRET,然后浏览器访问上面这个Url即可生成Access_Token 然后配 ...

最新文章

  1. 在ASP.NET中使用WINDOWS模式登录SQL数据库
  2. 支付宝支付 第三集:搭建项目及测试(含代码)
  3. deepin安装zsh以及简单配置
  4. [转贴]Silverlight Socket 实现收发信息
  5. 新手入坑自动驾驶,从 JetBot 机器人小车开始,能学到什么?
  6. 机器学习- 吴恩达Andrew Ng - week3-3 Multiclass Classification
  7. eXeScope 注册机制破解
  8. Vivado2018的使用
  9. 创建一个 C++ 控制台应用程序项目
  10. 无法完成操作,因为文件包含病毒或潜在的垃圾软件
  11. Ink脚本语言学习笔记(三)
  12. 利用XMLHTTP实现ASP.NET无刷新提交 (老梁)
  13. oracle逗号隔开行转列_oralce逗号分割变多行-Oracle
  14. Cannot read property ‘$message‘ of undefined
  15. HTML页面SVG的使用
  16. YB时代,数据保护的“难”与“易”
  17. CondaIOError: Missing write permissions in: C:\ProgramData\Anaconda3
  18. i5 13400怎么样相当于什么水平级别
  19. msk 频偏_一种直扩MSK信号的二维联合捕获方法
  20. 连锁零售系统能解决多门店管理哪些痛点

热门文章

  1. HttpClient 访问Https报错hostname in certificate didn't match:
  2. 江苏科技大学计算机科学与工程,江苏科技大学
  3. LeetCode题解(0594):计算最长和谐子序列(Python)
  4. 三端气体放电管的原理
  5. idea点击接口的方法的跳到实现类的快捷键
  6. web.xml文件是什么?有什么用?--详解
  7. 美通社发布《2020年亚太地区旅游媒体推介资料包》,揭示疫情下的媒体关注点...
  8. javaScript进阶webAPI web前端api进阶DOM、BOM学习笔记day01
  9. AE基础教程(6)——第6章 显示通道,分辨率解析
  10. Win10-ODI12安装以及本地简单映射测试