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 相关文章推荐
PHP 表单提交给自己
Jul 24 PHP
php 中文处理函数集合
Aug 27 PHP
程序员编程十条戒律
Jul 09 PHP
20个PHP常用类库小结
Sep 11 PHP
php实现mysql封装类示例
May 07 PHP
php中字符串和正则表达式详解
Oct 23 PHP
分享一段PHP制作的中文拼音首字母工具类
Dec 11 PHP
PHP CodeIgniter框架的工作原理研究
Mar 30 PHP
PHP 获取ip地址代码汇总
Jul 05 PHP
PHP curl批处理及多请求并发实现方法分析
Aug 15 PHP
asp函数split()对应php函数explode()
Feb 27 PHP
thinkphp框架类库扩展操作示例
Nov 26 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
php自定义函数call_user_func和call_user_func_array详解
2011/07/14 PHP
php格式化日期和时间格式化示例分享
2014/02/24 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
鼠标图片振动代码
2006/07/06 Javascript
IE 下的只读 innerHTML
2009/08/21 Javascript
js 字符串转化成数字的代码
2011/06/29 Javascript
JS 实现导航栏悬停效果
2013/09/23 Javascript
随鼠标上下滚动的jquery代码
2013/12/05 Javascript
使用js检测浏览器是否支持html5中的video标签的方法
2014/03/12 Javascript
js获取json元素数量的方法
2015/01/27 Javascript
javascript日期处理函数,性能优化批处理
2015/09/06 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
2015/10/19 Javascript
node网页分段渲染详解
2016/09/05 Javascript
json定义及jquery操作json的方法
2016/09/29 Javascript
Vue.js之slot深度复制详解
2017/03/10 Javascript
JS中offset和匀速动画详解
2018/02/06 Javascript
vue定义全局变量和全局方法的方法示例
2018/08/01 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
2018/09/15 Javascript
JS数组属性去重并校验重复数据
2020/01/10 Javascript
详解Python中的分组函数groupby和itertools)
2018/07/11 Python
python中for循环把字符串或者字典添加到列表的方法
2019/07/20 Python
你可能不知道的Python 技巧小结
2020/01/29 Python
Python编写万花尺图案实例
2021/01/03 Python
python lambda的使用详解
2021/02/26 Python
人力资源经理的岗位职责
2014/03/02 职场文书
推荐信怎么写
2014/05/09 职场文书
查摆问题自我剖析材料
2014/08/18 职场文书
社区文艺活动方案
2014/08/19 职场文书
2014年干部作风建设总结
2014/10/23 职场文书
公司优秀员工推荐信
2015/03/24 职场文书
2015年中职班主任工作总结
2015/05/25 职场文书
任长霞观后感
2015/06/16 职场文书
2016国培学习心得体会
2016/01/08 职场文书
聊聊SpringBoot自动装配的魔力
2021/11/17 Java/Android
Vue elementUI表单嵌套表格并对每行进行校验详解
2022/02/18 Vue.js