1.去商户平台里,给你的商户充钱,没钱是发不了红包哒! 2.微信红包需要证书支持,所以请大家到商户平台下去下载好证书后放到安全文件夹下,并且需要在配置文件中指定好证书路径!
好,接下来带来裂变红包具体功能实现代码:
step1:重复一下配置文件WxPayConf_pub.php,看过之前微信支付教程的同学应该很清楚这一块了,这里我将代码截图出来,配置好后进行下一步!

step2:下载你的证书,放到一个目录下,对应配置文件中,记得这里是绝对路径!

step3:与微信现金红包一样,我们得自己在WxPayHelper.php文件下写自己的红包支付方法,这里的主要区别就是createxm

/*** 红包支付接口* @author gaoyl101*/
class Groupredpack_pub extends Wxpay_client_pub
{var $code;//code码,用以获取openidvar $openid;//用户的openidfunction __construct(){//设置接口链接$this->url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack";//设置curl超时时间$this->curl_timeout = WxPayConf_pub::CURL_TIMEOUT;}/*** 生成接口参数xml*/function createXml(){try{//检测必填参数if($this->parameters["mch_billno"] == null){throw new SDKRuntimeException("缺少发红包接口必填参数mch_billno!"."<br>");}elseif ($this->parameters["send_name"] == null ) {throw new SDKRuntimeException("缺少发红包接口必填参数send_name!"."<br>");}elseif ($this->parameters["total_amount"] == null) {throw new SDKRuntimeException("缺少发红包接口必填参数total_amount!"."<br>");}elseif ($this->parameters["total_num"] == null) {throw new SDKRuntimeException("缺少发红包接口必填参数total_num!"."<br>");}elseif ($this->parameters["amt_type"] == null) {throw new SDKRuntimeException("缺少发红包接口必填参数amt_type!"."<br>");}elseif ($this->parameters["wishing"] == null) {throw new SDKRuntimeException("缺少发红包接口必填参数wishing!"."<br>");}elseif ($this->parameters["act_name"] == null) {throw new SDKRuntimeException("缺少发红包接口必填参数act_name!"."<br>");}elseif ($this->parameters["remark"] == null) {throw new SDKRuntimeException("缺少发红包接口必填参数remark!"."<br>");}$this->parameters["wxappid"] = WxPayConf_pub::APPID;//公众账号ID$this->parameters["mch_id"] = WxPayConf_pub::MCHID;//商户号$this->parameters["nonce_str"] = $this->createNoncestr();//随机字符串$this->parameters["re_openid"] = $this->openid;//用户openid$this->parameters["sign"] = $this->getSign($this->parameters);//签名return  $this->arrayToXml($this->parameters);}catch (SDKRuntimeException $e){die($e->errorMessage());}}function sendRedpack(){$this->postXmlSSL();$this->result = $this->xmlToArray($this->response);return $this->result;}/***     作用:生成可以获得code的url*/function createOauthUrlForCode($redirectUrl){$urlObj["appid"] = WxPayConf_pub::APPID;$urlObj["redirect_uri"] = "$redirectUrl";$urlObj["response_type"] = "code";$urlObj["scope"] = "snsapi_base";$urlObj["state"] = "STATE"."#wechat_redirect";$bizString = $this->formatBizQueryParaMap($urlObj, false);return "https://open.weixin.qq.com/connect/oauth2/authorize?".$bizString;}/***     作用:生成可以获得openid的url*/function createOauthUrlForOpenid(){$urlObj["appid"] = WxPayConf_pub::APPID;$urlObj["secret"] = WxPayConf_pub::APPSECRET;$urlObj["code"] = $this->code;$urlObj["grant_type"] = "authorization_code";$bizString = $this->formatBizQueryParaMap($urlObj, false);return "https://api.weixin.qq.com/sns/oauth2/access_token?".$bizString;}/***     作用:通过curl向微信提交code,以获取openid*/function getOpenid(){$url = $this->createOauthUrlForOpenid();//初始化curl$ch = curl_init();//设置超时curl_setopt($ch, CURLOP_TIMEOUT, $this->curl_timeout);curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);curl_setopt($ch, CURLOPT_HEADER, FALSE);curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);//运行curl,结果以jason形式返回$res = curl_exec($ch);curl_close($ch);//取出openid$data = json_decode($res,true);$this->openid = $data['openid'];return $this->openid;}/***     作用:设置code*/function setCode($code_){$this->code = $code_;}
}

step4:创建控制器WxGroupRedPackController

控制器中的代码:
1.引入WxPayHelper.php类库

/*** 初始化*/public function _initialize(){//引入WxPayPubHelpervendor('WxPayPubHelper.WxPayPubHelper');}

2.创建发送红包方法:sendRedpack,这个方法就是发送红包的具体功能代码!

/*** 发送红包*/public function sendRedpack(){//调用请求接口基类$Redpack = new \Groupredpack_pub();//=========步骤1:网页授权获取用户openid============//通过code获得openidif (!isset($_GET['code'])){//触发微信返回code码$reduct_uri = WEB_HOST."/index.php/Home/WxGroupRedPack/sendRedpack";$url = $Redpack->createOauthUrlForCode($reduct_uri);Header("Location: $url");}else{//获取code码,以获取openid$code = $_GET['code'];$Redpack->setCode($code);$openid = $Redpack->getOpenId();}//商户订单号$Redpack->setParameter('mch_billno', C('WxPayConf_pub.APPID')."static");//商户名称$Redpack->setParameter('send_name', "gaoyl101");//用户openid
//         $Redpack->setParameter('re_openid', $parameterValue);//付款金额$Redpack->setParameter('total_amount', 100);//红包发放总人数$Redpack->setParameter('total_num', 3);$Redpack->setParameter('amt_type','ALL_RAND');//红包祝福语$Redpack->setParameter('wishing', "现金红包教程祝大家写代码快乐");//活动名称$Redpack->setParameter('act_name', "现金红包教程");//备注$Redpack->setParameter('remark', "现金红包教程祝大家写代码快乐");//以下是非必填项目//子商户号
//         $Redpack->setParameter('sub_mch_id', $parameterValue);
//        //商户logo的url
//         $Redpack->setParameter('amt_list', '200|100|100');$result = $Redpack->sendRedpack();dump($result);}

访问这个方法,微信就会发裂变红包啦
在这里我dump了微信发送红包之后返回的结果,下面的业务逻辑就可以根据自己的需求接下去写了,返回值的说明可以看微信红包的接口说明,在微信支付平台上有。
到这里微信红包现金红包代码已经全部结束,功能经过测试已经完成!

原文转载地址 : http://www.thinkphp.cn/code/1330.html

微信支付之jsapi:
http://www.thinkphp.cn/code/1321.html
微信支付教程扫码模式一:
http://www.thinkphp.cn/code/1322.html
微信支付教程扫码模式二:
http://www.thinkphp.cn/code/1323.html
微信支付教程刷卡支付:
http://www.thinkphp.cn/code/1324.html
微信现金红包教程:
http://www.thinkphp.cn/code/1328.html

转载于:https://www.cnblogs.com/gyrgyr/p/6039225.html

ThinkPHP整合微信支付之发裂变红包相关推荐

  1. Thinkphp整合微信支付功能

    1.微信公众号: 独特的appid.appscrect.接口权限之中设置可以获取用户ID信息权限的域名(每个用户对于不同公众都会有一个特有ID,通过这个ID获取用户微信账号基本信息.详情看微信开发者文 ...

  2. ThinkPHP 整合微信支付 扫码支付 模式二 图文教程

    这篇文章主要介绍扫码支付场景二. 目前有两种模式,模式一比模式二稍微复杂点,至于模式一与模式二的具体内容,流程,微信开发文档都有详细介绍,这里就不多说废话,接下来赶紧上教程! Table of Con ...

  3. ThinkPHP整合微信支付之Native 扫码支付 模式二

    大家好,这篇文章是继微信支付之Native 扫码支付 模式一之后的微信支付系列教程第三篇:扫码支付之模式二 介绍下扫码支付目前有两种模式,模式一比模式二稍微复杂点,至于模式一与模式二的具体内容,流程, ...

  4. ThinkPHP整合微信支付之Native 扫码支付 模式一

    大家好,这篇文章是继微信支付jsapi篇之后的微信支付系列教程第二篇:扫码支付之模式一 介绍下扫码支付目前有两种模式,模式一比模式二稍微复杂点,至于模式一与模式二的具体内容,流程,微信开发文档都有详细 ...

  5. ThinkPHP整合微信支付之刷卡模式

    大家好,这篇文章是继微信支付之Native 扫码支付 模式二之后的微信支付系列教程第四篇:微信刷卡支付 本教程跟前三篇教程不一样,所需要的类库也不一样,所以做刷卡支付的时候,与之前的方法没多少关系,大 ...

  6. 微信支付php详解 php,ThinkPHP框架整合微信支付之刷卡模式图文详解

    本文实例讲述了ThinkPHP框架整合微信支付之刷卡模式.分享给大家供大家参考,具体如下: 大家好,这篇文章是继微信支付之Native 扫码支付 模式二之后的微信支付系列教程第四篇:微信刷卡支付 本教 ...

  7. Springboot----项目整合微信支付(引入延迟队列实现订单过期取消以及商户主动查单)

    前言 目前更新的是Springboot项目整合微信支付系列的文章,可以在我的主页中找到该系列其他文章,这一系列的文章将会系统介绍如何在项目中引入微信支付的下单.关单.处理回调通知等功能.由于前面创作经 ...

  8. SpringBoot整合微信支付开发在线教育视频网站(完整版)

    目录 ├─code.zip ├─第 1 章项目介绍和前期准备 │  ├─1-1 SpringBoot整合微信支付开发在线教育视频站点介绍.TS │  ├─1-2 中大型公司里面项目开发流程讲解.TS ...

  9. php微信支付jsapi,ThinkPHP实现微信支付(jsapi支付)

    这篇文章主要介绍了ThinkPHP实现微信支付(jsapi支付)流程教程详解,需要的朋友可以参考下 之前写过一篇文章讲了PHP实现微信支付(jsapi支付)流程 ,详见文章:PHP实现微信支付(jsa ...

  10. 关于微店整合微信支付时出现的的各种问题的记录 php版

    由于公司项目的需要,需要在项目里整合微信支付,公司原有的项目中已有老版本的支付功能,在此不作讨论.我需要作的就是加入新版本的支付功能 让项目里可以支持新老两种版本的功能.在微信官方下载到了新版支付的p ...

最新文章

  1. 加速 cinder 删除volume速度
  2. 微信小程序无法获取UnionId的情况及处理
  3. 《圣洁》的读后感作文3000字
  4. Dynpro程序抬头信息要求多值输入的解决方法
  5. adoquery.parameters流化
  6. 读取记事本内容,自动发布到新浪微博
  7. 曲师大教务系统服务器,曲师大教务处信息门户入口地址
  8. 一个大胖鲸-Docker(1)
  9. 05SpringMvc_映射器SimpleUrlHanderMapping
  10. [置顶]C++求平面最近点对
  11. MYSQL查询近一年 近一月 近一周 今天数据 没有数据返回0 按时间有序返回数据
  12. 网页视频播放器代码大全 + 21个为您的网站和博客提供的免费视频播放器
  13. matlab gui编程教程,matlab如何使用gui
  14. linux未找到 ftp命令,Linux服务器ftp命令找不到
  15. 软件测试工程师--面试题
  16. H3C S5820V2 MSR36-20
  17. 企业如何管理终端软件安装
  18. 广州百田 技术类 笔试题
  19. Rambo: Last Blood
  20. Agv、Rgv 车辆控制调度系统开发第二篇

热门文章

  1. 计算机科学与技术用惠普星15,11代酷睿满血出击 快来GET蔡徐坤同款惠普星14吧...
  2. als算法参数_ALS算法
  3. 仿Tumblr点赞心破碎动画
  4. 跑步为什么不能过量(对身体的危害)
  5. WeAdmin连接资源,相关错误
  6. 彻底删除IE的缓存问题
  7. 桶装水同城预订下单送水小程序开发制作(水站桶装水配送系统)
  8. android游戏flash插件下载,Flash Game Player Classic
  9. PID调节原理——方法
  10. matlab hurst代码,Hurst指数法matlab程序求助