微信商户平台发红包接口现金红包和裂变红包源码

今天刚写好的代码。官方文档看了两、三天才搞出来是个啥情况。废话不多说,进入正题。

操作方法

  • 01

    ‍直接公布源码,注意看下面的注意事项。

  • 02

    <?php $re = sendgroupredpack(); var_dump($re); // 现金红包 function sendredpack(){ $url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack"; $mch_billno = '0000000000' . date ( "YmdHis", time () ) . rand ( 1000, 9999 );      //商户订单号 $mch_id = '0000000000';                         //微信支付分配的商户号 $wxappid = '';        //公众账号appid $send_name = "";                          //商户名称 $re_openid = "";         //用户openid $total_amount = "100";                              // 付款金额,单位分 $total_num = 1;                                          //红包发放总人数 $wishing = "恭喜发财";                             //红包祝福语 $client_ip = "";                //Ip地址 $act_name = "关注有礼";                         //活动名称 $remark = "测试";                                      //备注 $apikey = "key";   // key 商户后台设置的  微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置 $nonce_str =  md5(rand());                                  //随机字符串,不长于32位 $m_arr = array ( 'mch_billno' => $mch_billno, 'mch_id' => $mch_id, 'wxappid' => $wxappid, 'send_name' => $send_name, 're_openid' => $re_openid, 'total_amount' => $total_amount, 'total_num' => $total_num, 'wishing' => $wishing, 'client_ip' => $client_ip, 'act_name' => $act_name, 'remark' => $remark, 'nonce_str'=> $nonce_str ); array_filter ( $m_arr ); // 清空参数为空的数组元素 ksort ( $m_arr ); // 按照参数名ASCII码从小到大排序 $stringA = ""; foreach ( $m_arr as $key => $row ) { $stringA .= "&" . $key . '=' . $row; } $stringA = substr ( $stringA, 1 ); // 拼接API密钥: $stringSignTemp = $stringA."&key=" . $apikey; $sign = strtoupper ( md5 ( $stringSignTemp ) );         //签名 $textTpl = '<xml> <sign><![CDATA[%s]]></sign> <mch_billno><![CDATA[%s]]></mch_billno> <mch_id><![CDATA[%s]]></mch_id> <wxappid><![CDATA[%s]]></wxappid> <send_name><![CDATA[%s]]></send_name> <re_openid><![CDATA[%s]]></re_openid> <total_amount><![CDATA[%s]]></total_amount> <total_num><![CDATA[%s]]></total_num> <wishing><![CDATA[%s]]></wishing> <client_ip><![CDATA[%s]]></client_ip> <act_name><![CDATA[%s]]></act_name> <remark><![CDATA[%s]]></remark> <nonce_str><![CDATA[%s]]></nonce_str> </xml>'; $resultStr = sprintf($textTpl, $sign, $mch_billno, $mch_id, $wxappid, $send_name,$re_openid,$total_amount,$total_num,$wishing,$client_ip,$act_name,$remark,$nonce_str); return curl_post_ssl($url, $resultStr); } //裂变红包 function sendgroupredpack() { $mch_billno = '0000000000' . date ( "YmdHis", time () ) . rand ( 1000, 9999 );      //商户订单号 $mch_id = '0000000000';                         //微信支付分配的商户号 $wxappid = '';        //公众账号appid $send_name = "";                          //商户名称 $re_openid = "";         //用户openid $total_amount = "300";                              //付款金额,单位分 $total_num = 3;                                          //红包发放总人数 $amt_type = "ALL_RAND";                      //红包金额设置方式 ALL_RAND—全部随机,商户指定总金额和红包发放总人数,由微信支付随机计算出各红包金额 $wishing = "恭喜发财";                             //红包祝福语 $act_name = "关注有礼";                         //活动名称 $remark = "测试";                                      //备注 $apikey = "key";   // key 商户后台设置的  微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置 $nonce_str =  md5(rand());                                  //随机字符串,不长于32位 $m_arr = array ( 'mch_billno' => $mch_billno, 'mch_id' => $mch_id, 'wxappid' => $wxappid, 'send_name' => $send_name, 're_openid' => $re_openid, 'total_amount' => $total_amount, 'total_num' => $total_num, 'amt_type' => $amt_type, 'wishing' => $wishing, 'act_name' => $act_name, 'remark' => $remark, 'nonce_str'=> $nonce_str ); array_filter ( $m_arr ); // 清空参数为空的数组元素 ksort ( $m_arr ); // 按照参数名ASCII码从小到大排序 $stringA = ""; foreach ( $m_arr as $key => $row ) { $stringA .= "&" . $key . '=' . $row; } $stringA = substr ( $stringA, 1 ); // 拼接API密钥: $stringSignTemp = $stringA."&key=" . $apikey; $sign = strtoupper ( md5 ( $stringSignTemp ) );         //签名 $textTpl = '<xml> <sign><![CDATA[%s]]></sign> <mch_billno><![CDATA[%s]]></mch_billno> <mch_id><![CDATA[%s]]></mch_id> <wxappid><![CDATA[%s]]></wxappid> <send_name><![CDATA[%s]]></send_name> <re_openid><![CDATA[%s]]></re_openid> <total_amount><![CDATA[%s]]></total_amount> <amt_type><![CDATA[%s]]></amt_type> <total_num><![CDATA[%s]]></total_num> <wishing><![CDATA[%s]]></wishing> <act_name><![CDATA[%s]]></act_name> <remark><![CDATA[%s]]></remark> <nonce_str><![CDATA[%s]]></nonce_str> </xml>'; $resultStr = sprintf($textTpl, $sign, $mch_billno, $mch_id, $wxappid, $send_name,$re_openid,$total_amount,$amt_type,$total_num,$wishing,$act_name,$remark,$nonce_str); $url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack"; return curl_post_ssl($url, $resultStr); } function curl_post_ssl($url, $vars, $second=30,$aHeader=array()) { $ch = curl_init(); //超时时间 curl_setopt($ch,CURLOPT_TIMEOUT,$second); curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1); //这里设置代理,如果有的话 //curl_setopt($ch,CURLOPT_PROXY, '10.206.30.98'); //curl_setopt($ch,CURLOPT_PROXYPORT, 8080); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false); //以下两种方式需选择一种 //第一种方法,cert 与 key 分别属于两个.pem文件 //默认格式为PEM,可以注释 curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM'); curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'/apiclient_cert.pem'); // 默认格式为PEM,可以注释 curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM'); curl_setopt($ch,CURLOPT_SSLKEY,getcwd().'/apiclient_key.pem'); //第二种方式,两个文件合成一个.pem文件 //curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'/all.pem'); if( count($aHeader) >= 1 ){ curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader); } curl_setopt($ch,CURLOPT_POST, 1); curl_setopt($ch,CURLOPT_POSTFIELDS,$vars); $data = curl_exec($ch); if($data){ curl_close($ch); return $data; } else { $error = curl_errno($ch); echo "call faild, errorCode:$error\n"; curl_close($ch); return false; } } ?>

(0)

相关推荐

  • 怎么在微信公众平台发文章

    最近笔者看到,百度和搜狗均开始收录微信公章平台账号的图文消息文章,尽管很久就为网站申请了微信公章账号,不过还没有发布过一篇文章.今天打算为大家演示一下,如何在微信公众平台发图文文章,算是对微信公众平台 ...

  • 微信商户平台如何开通支付功能

    微信公众号想要开通微信支付功能,那么溜一定要开商户号,新开通的商户号上面怎么开通支付功能你? 操作方法 01 在电脑登录你的微信商户平台(需提前申请),新开通的商户平台要点击图中蓝色字 02 然后进入 ...

  • 怎么查看微信商户平台资金流水

    教你如何查看微信商户平台资金流水 操作方法 01 1.首先我们登入微信商户平台首页,然后输入账号密码进入. 02 2.登入之后进入账户中心,如下图所示. 03 3.进入账户中心之后,在左边的导航栏里面 ...

  • 微信公众平台如何启动接口程序

    编辑模式与开发模式 01 微信公众帐号申请成功后,要想接收处理用户的请求,就必须要在"高级功能"里进行配置,点击"高级功能",将看到如下界面: 从上图中可以看到 ...

  • 微信公众平台发信息图片怎样添加水印,去掉水印

    最进微信公众平台又升级了,功能更加齐全,界面也改变了,很多人找不到给图片加水印,或去掉水印,今天小编研究了一下,给大家提供方便些. 操作方法 01 登录公众平台,这个不用我说,相信大家都知道的了. 0 ...

  • 微信商户平台登录重复下载安装安全控件解决办法

    在用浏览器登陆商户平台时,输入帐号之后,密码框总是显示请点击下载并安装控件,已经安装完控件后还是提示下载安装,遇到这种问题其实是兼容问题,解决办法很简单,确保安装控件后将浏览器切换至兼容模式,或者直接 ...

  • 微信可以放心发啦 微信公众平台增加"官方辟谣账号谣言过滤器"二维码

    微信公众平台在登陆之后增加了一个名为“官方辟谣账号谣言过滤器”的二维码。此二维码为“谣言过滤器”的微信公号,微信官方通过此号对朋友圈里的谣言进行澄清。翻阅历史记录发现,此公号于10月17日开始运营,截 ...

  • 微信公众平台发不了消息怎么办

    如果你的微信公众帐号过一段时间没登录或者突然想发图文的时候就提示要绑定微信号,这时候就有些用户手忙脚乱了,其实很简单,下面我来教大家! 操作方法 01 首先发图文的时候会第一次提示这个消息,点击下一步 ...

  • 微支付商户平台正确使用指南

    微支付申请成功之后腾讯那边会向你的重要邮箱发送一个微信支付商户平台的登录帐号和密码,这时候就需要登录来完成下面的一系列工作. 操作方法 01 登录成功之后首先点击账户设置-安全设置,点击申请安装.安装 ...