php微信公众号开发之现金红包


Posted in PHP onApril 16, 2018

本文实例为大家分享了php微信公众号之现金红包的具体代码,供大家参考,具体内容如下

以下有关微信支付中现金红包的开发参考自微信支付开发文档,如下图所示。

php微信公众号开发之现金红包

现金红包,是微信支付商户平台提供的营销工具之一,上线以来深受广大商户与用户的喜爱。商户可以通过本平台向微信支付用户发放现金红包。用户领取红包后,资金到达用户微信支付零钱账户,和零钱包的其他资金有一样的使用出口;若用户未领取,资金将会在24小时后退回商户的微信支付账户中。

以下为本人用于测试微信支付发红包的代码片段,仅供参考。

/*测试微信企业给个人发红包*/ 
public function weixin_red_packet(){ 
  // 请求参数 
  // 随机字符串 
  $data['nonce_str']=$this->get_unique_value(); 
  //签名 
  $data['sign']=""; 
  //商户号,输入你的商户号 
  $data['mch_id']="**********"; 
  //商户订单号,可以按要求自己组合28位的商户订单号 
  $data['mch_billno']=$data['mch_id'].date("ymd")."888888".rand(1000,9999); 
  //公众帐号appid,输入自己的公众号appid 
  $data['wxappid']="*********"; 
  //商户名称 
  $data['send_name']="*******"; 
  //用户openid,输入待发红包的用户openid 
  $data['re_openid']="*********"; 
  //付款金额 
  $data['total_amount']="100"; 
  //红包发放总人数 
  $data['total_num']="1"; 
  //红包祝福语 
  $data['wishing']="********"; 
  //IP地址 
  $data['client_ip']=$_SERVER['LOCAL_ADDR']; 
  //活动名称 
  $data['act_name']="*******"; 
  //备注 
  $data['remark']="没有备注"; 
  //场景ID 
  // $data['send_id']="PRODUCT_5"; 
  //活动信息 
  // $data['risk_info']=""; 
   
  // 生成签名 
  //对数据数组进行处理 
  //API密钥,输入自己的appsecret 
  $appsecret="*********"; 
  $data=array_filter($data); 
  ksort($data); 
  $str=""; 
  foreach($data as $k=>$v){ 
    $str.=$k."=".$v."&"; 
  } 
  $str.="key=".$appsecret; 
  $data['sign']=strtoupper(MD5($str)); 
 
 
  /* 
    发红包操作: 
      1.将请求数据转换成xml 
      2.发送请求 
      3.将请求结果转换为数组 
      4.将请求信息和请求结果录入到数据库中 
      4.判断是否通信成功 
      5.判断是否转账成功 
   */ 
 
 
 
  //发红包接口地址 
  $url="https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack"; 
 
  //将请求数据由数组转换成xml 
  $xml=$this->arraytoxml($data); 
  //进行请求操作 
  $res=$this->curl($xml,$url); 
  //将请求结果由xml转换成数组 
  $arr=$this->xmltoarray($res); 
 
  //请请求信息和请求结果录入到数据库中 
  // $transfer['partner_trade_no']=$data['partner_trade_no']; 
  // $transfer['request_data']=serialize($data);   
  // $transfer['response_data']=serialize($arr); 
  // if($arr['return_code']=="SUCCESS" && $arr['result_code']=="SUCCESS"){ 
  // $transfer['success']=1; 
  // $transfer_res['success']=1; 
  // }else{ 
  // $transfer['success']=0; 
  // $transfer_res['success']=0; 
  // $transfer_res['desc']=$arr['return_msg']; 
  // } 
  // $transfer['add_time']=time(); 
 
  // D("weixin_transfer")->add($transfer); 
  // 输出请求结果数组 
  echo "<pre>"; 
  print_r($arr); 
  exit("weixin_red_packet"); 
} 
 
 
 
// 生成32位唯一随机字符串 
private function get_unique_value(){ 
  $str=uniqid(mt_rand(),1); 
  $str=sha1($str); 
  return md5($str); 
} 
// 将数组转换成xml 
private function arraytoxml($arr){ 
  $xml="<xml>"; 
  foreach($arr as $k=>$v){ 
    $xml.="<".$k.">".$v."</".$k.">"; 
  } 
  $xml.="</xml>"; 
  return $xml; 
} 
// 将xml转换成数组 
private function xmltoarray($xml){ 
  //禁止引用外部xml实体 
  libxml_disable_entity_loader(true); 
  $xmlstring=simplexml_load_string($xml,"SimpleXMLElement",LIBXML_NOCDATA); 
  $arr=json_decode(json_encode($xmlstring),true); 
  return $arr; 
} 
 
//进行curl操作 
private function curl($param="",$url) { 
  $postUrl = $url; 
  $curlPost = $param; 
  //初始化curl 
  $ch = curl_init();                    
  //抓取指定网页 
  curl_setopt($ch, CURLOPT_URL,$postUrl);          
  //设置header 
  curl_setopt($ch, CURLOPT_HEADER, 0);           
  //要求结果为字符串且输出到屏幕上 
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);       
  //post提交方式 
  curl_setopt($ch, CURLOPT_POST, 1);            
  // 增加 HTTP Header(头)里的字段  
  curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);       
  // 终止从服务端进行验证 
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);     
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
 
  //这个是证书的位置 
  curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'\cert\apiclient_cert.pem');  
  //这个也是证书的位置 
  curl_setopt($ch,CURLOPT_SSLKEY,getcwd().'\cert\apiclient_key.pem');  
  //运行curl 
  $data = curl_exec($ch);                  
  //关闭curl 
  curl_close($ch); 
  
  return $data; 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
Breeze 文章管理系统 v1.0.0正式发布
Dec 14 PHP
PHP 翻页 实例代码
Aug 07 PHP
php imagecreatetruecolor 创建高清和透明图片代码小结
May 15 PHP
PHP stream_context_create()函数的使用示例
May 12 PHP
CodeIgniter读写分离实现方法详解
Jan 20 PHP
PHP之将POST数据转化为字符串的实现代码
Nov 03 PHP
CI框架实现框架前后端分离的方法详解
Dec 30 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
Jul 13 PHP
laravel框架关于搜索功能的实现
Mar 15 PHP
laravel 5.4 + vue + vux + element的环境搭配过程介绍
Apr 26 PHP
CodeIgniter框架钩子机制实现方法【hooks类】
Aug 21 PHP
PHP 文件写入和读取操作实例详解【必看篇】
Nov 04 PHP
PHP闭包定义与使用简单示例
Apr 13 #PHP
PHP简单实现正则匹配省市区的方法
Apr 13 #PHP
PHP编程实现的TCP服务端和客户端功能示例
Apr 13 #PHP
php框架CodeIgniter使用redis的方法分析
Apr 13 #PHP
php 字符串中是否包含指定字符串的多种方法
Apr 12 #PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
Apr 12 #PHP
PHP实现的mongoDB数据库操作类完整实例
Apr 10 #PHP
You might like
phpMyAdmin 安装配置方法和问题解决
2009/06/08 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
javascript 函数式编程
2007/08/16 Javascript
javascript之Partial Application学习
2013/01/10 Javascript
JavaScript表达式:URL 协议介绍
2013/03/10 Javascript
关于innerHTML后丢失动态绑定的EVENT问题解决方法
2013/05/19 Javascript
jQuery UI 实现email输入提示实例
2013/08/15 Javascript
js防止表单重复提交的两种方法
2013/09/30 Javascript
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
jQuery获取剪贴板内容的方法
2016/06/16 Javascript
客户端验证用户名和密码的方法详解
2016/06/16 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
2016/10/28 Javascript
详解nodejs 文本操作模块-fs模块(一)
2016/12/22 NodeJs
深入理解JavaScript继承的多种方式和优缺点
2017/05/12 Javascript
基于JavaScript实现抽奖系统
2018/01/16 Javascript
angularJS实现不同视图同步刷新详解
2018/10/09 Javascript
React降级配置及Ant Design配置详解
2018/12/27 Javascript
微信小程序 高德地图路线规划实现过程详解
2019/08/05 Javascript
Python的Flask框架中实现登录用户的个人资料和头像的教程
2015/04/20 Python
基于Python的文件类型和字符串详解
2017/12/21 Python
python 从csv读数据到mysql的实例
2018/06/21 Python
深入浅析Python2.x和3.x版本的主要区别
2018/11/30 Python
Django ORM 常用字段与不常用字段汇总
2019/08/09 Python
Python使用APScheduler实现定时任务过程解析
2019/09/11 Python
不到20行实现Python代码即可制作精美证件照
2020/04/24 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
2020/12/14 Python
Python3利用openpyxl读写Excel文件的方法实例
2021/02/03 Python
CSS3 对过渡(transition)进行调速以及延时
2020/10/21 HTML / CSS
html5 svg 中元素点击事件添加方法
2013/01/16 HTML / CSS
html5教程制作简单画板代码分享
2013/12/04 HTML / CSS
七年级英语教学反思
2014/01/15 职场文书
化学教育专业自荐信
2014/07/04 职场文书
学习雷锋精神活动总结
2015/02/06 职场文书
女性健康讲座主持词
2015/07/04 职场文书
给numpy.array增加维度的超简单方法
2021/06/02 Python