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 Token(令牌)设计
Mar 15 PHP
php学习笔记 类的声明与对象实例化
Jun 13 PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
Jun 18 PHP
解析PHP中ob_start()函数的用法
Jun 24 PHP
ThinkPHP之A方法实例讲解
Jun 20 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
Dec 24 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
May 13 PHP
PHP入门教程之上传文件实例详解
Sep 11 PHP
Python中使用django form表单验证的方法
Jan 16 PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
Oct 15 PHP
PHP 自动加载类原理与用法实例分析
Apr 14 PHP
PHP number_format函数原理及实例解析
Jul 14 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
smarty模板引擎中变量及变量修饰器用法实例
2015/01/22 PHP
PHP常用设计模式之委托设计模式
2016/02/13 PHP
Laravel框架实现model层的增删改查(CURD)操作示例
2018/05/12 PHP
如何从jQuery的ajax请求中删除X-Requested-With
2013/12/11 Javascript
ParseInt函数参数设置介绍
2014/01/02 Javascript
JavaScript实现简单的二级导航菜单实例
2015/04/15 Javascript
AngularJS教程之MVC体系结构详解
2016/08/16 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
2016/12/26 Javascript
详解Vue.js Mixins 混入使用
2017/09/15 Javascript
JS实现图片居中悬浮效果
2017/12/25 Javascript
详解Node使用Puppeteer完成一次复杂的爬虫
2018/04/18 Javascript
AngularJS实现的自定义过滤器简单示例
2019/02/02 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
2019/04/10 Javascript
JavaScript享元模式原理与用法实例详解
2020/03/09 Javascript
[01:59]DOTA2首部纪录片《Free to play》预告片
2014/03/12 DOTA
python将html转成PDF的实现代码(包含中文)
2013/03/04 Python
Python Sqlite3以字典形式返回查询结果的实现方法
2016/10/03 Python
Python3.5 创建文件的简单实例
2018/04/26 Python
Python简单读写Xls格式文档的方法示例
2018/08/17 Python
Python3 读、写Excel文件的操作方法
2018/10/20 Python
对Python3 解析html的几种操作方式小结
2019/02/16 Python
python时间日期操作方法实例小结
2020/02/06 Python
python 解决tqdm模块不能单行显示的问题
2020/02/19 Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
2020/02/27 Python
Python列表倒序输出及其效率详解
2020/03/04 Python
python3 xpath和requests应用详解
2020/03/06 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
2020/05/27 Python
css3 clip实现圆环进度条的示例代码
2018/02/07 HTML / CSS
Java程序员常见面试题
2015/07/16 面试题
电子信息专业学生自荐信
2013/11/09 职场文书
销售工作人员的自我评价分享
2013/11/10 职场文书
成功的餐厅经营创业计划书
2014/01/15 职场文书
尊师重教主题班会
2015/08/14 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
Java 数组内置函数toArray详解
2021/06/28 Java/Android
nginx实现动静分离的方法示例
2021/11/07 Servers