PHP开发的微信现金红包功能示例
本文实例讲述了PHP开发的微信现金红包功能。分享给大家供大家参考,具体如下:
微信商家后台-现金红包开发
sdk
<?php class wxPay { //配置参数信息 const SHANGHUHAO = "1430998xxx";//商户号 const PARTNERKEY = "leFyTOXWzUEXxfp47WOu5d9xxxxxx"; //api,商户后台 //核心支付函数,参数:请求地址和参数 function pay($url,$obj) { $obj['nonce_str'] = $this->create_noncestr(); //创建随机字符串 $stringA = $this->create_qianming($obj,false); //创建签名 $stringSignTemp = $stringA."&key=leFyTOXWzUEXxfp47WOu5xxxxxx"; //签名后加api $sign = strtoupper(md5($stringSignTemp)); //签名加密并大写 $obj['sign'] = $sign; //将签名传入数组 $postXml = $this->arrayToXml($obj); //将参数转为xml格式 var_dump($postXml); $responseXml = $this->curl_post_ssl($url,$postXml); //提交请求 var_dump($responseXml); return $responseXml; } //生成签名,参数:生成签名的参数和是否编码 function create_qianming($arr,$urlencode) { $buff = ""; ksort($arr); //对传进来的数组参数里面的内容按照字母顺序排序,a在前面,z在最后(字典序) foreach ($arr as $k=>$v) { if(null!=$v && "null" != $v && "sign" != $k) { //签名不要转码 if ($urlencode) { $v = urlencode($v); } $buff.=$k."=".$v."&"; } } if (strlen($buff)>0) { $reqPar = substr($buff,0,strlen($buff)-1); //去掉末尾符号“&” } return $reqPar; } //生成随机字符串,默认32位 function create_noncestr($length=32) { //创建随机字符 $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; $str = ""; for($i=0;$i<$length;$i++) { $str.=substr($chars, mt_rand(0,strlen($chars)-1),1); } return $str; } //数组转xml function arrayToXml($arr) { $xml = "<xml>"; foreach ($arr as $key=>$val) { if (is_numeric($val)) { $xml.="<".$key.">".$val."</".$key.">"; } else { $xml.="<".$key."><![CDATA[".$val."]]></".$key.">"; } } $xml.="</xml>"; return $xml; } //post请求网站,需要证书 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_URL,$url); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false); //cert 与 key 分别属于两个.pem文件 //请确保您的libcurl版本是否支持双向认证,版本高于7.20.1 curl_setopt($ch,CURLOPT_SSLCERT,dirname(__FILE__).DIRECTORY_SEPARATOR. 'zhengshu'.DIRECTORY_SEPARATOR.'apiclient_cert.pem'); curl_setopt($ch,CURLOPT_SSLKEY,dirname(__FILE__).DIRECTORY_SEPARATOR. 'zhengshu'.DIRECTORY_SEPARATOR.'apiclient_key.pem'); curl_setopt($ch,CURLOPT_CAINFO,dirname(__FILE__).DIRECTORY_SEPARATOR. 'zhengshu'.DIRECTORY_SEPARATOR.'rootca.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; } } }
证书文件:
请在微信商户后台-API安全下载,PHP请使用php的证书文件
微信红包调用测试文件:
<?php require 'wxpay.class.php';<br><br>//数组参数 $money = 100; //最低1元,单位分 $sender = "晨缘房产"; $obj2 = array(); $obj2['wxappid'] = ""; //appid $obj2['mch_id'] = ""; //商户id $obj2['mch_billno'] = "商户id".date('YmdHis').rand(1000,9999); //组合成28位,根据官方开发文档,可以自行设置 $obj2['client_ip'] = $_SERVER['REMOTE_ADDR']; $obj2['re_openid'] = "oUxO6v26wdyMHThD9kfDW6NB_xbE"; //接收红包openid $obj2['total_amount'] = $money; $obj2['min_value'] = $money; $obj2['max_value'] = $money; $obj2['total_num'] = 1; $obj2['nick_name'] = $sender; $obj2['send_name'] = $sender; $obj2['wishing'] = "恭喜发财"; $obj2['act_name'] = $sender."红包"; $obj2['remark'] = $sender."红包"; $url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack"; $wxpay = new wxPay(); $res = $wxpay->pay($url, $obj2); var_dump($res);
(资源库 www.zyku.net)
您可能感兴趣的文章
- 12-12华为p50pro关闭提示条教程介绍
- 11-02华为手机怎么设置动态轨迹
- 12-26泰享家医-泰享家医应用软件功能介绍
- 12-25早典-早典应用软件功能介绍
- 12-10iqoo8pro在哪更换主题
- 03-11ecshop管理页面报Non-static method c
- 03-04wordpress防止外部iframe框架引入网站
- 10-08iphone13mini启用5g方法分享
- 09-24腾讯会议在哪里开启长期会议号
- 09-27iphone13怎样设置专注模式
- 12-30一直购-一直购应用软件功能介绍
- 09-04支付宝有点东西内容怎样更换
- 09-24oppo手机退出专注模式方法介绍
- 09-18iphone13怎么显示电池电量百分比
- 12-30虾刻-虾刻应用软件功能介绍
- 02-21CentOS 如何修改mysql 用户root的密码
- 12-18HTML <q> 标签
- 12-29老马学堂-老马学堂应用软件功能介绍
- 09-15微信视频号怎么设置部分人可见
- 12-31调音器调弦-调音器调弦应用软件功能介

最近更新
阅读排行
猜你喜欢
- 06-27js获取地址栏参数的两种方法
- 10-15米游社如何兑换商品
- 03-27PHP 判断变量的类型总结
- 10-07微信笔记在哪儿删除
- 10-20为什么写的原创文章不被百度收录?
- 03-31phpstorm中如何打开开发项目
- 11-08魅族18X有DC调光吗
- 09-23蚂蚁森林怎么获取已种树永久皮肤
- 01-13dedecms调用当前栏目ID与当前栏目顶级
- 11-24猫耳fm青少年模式怎样开启