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发电子邮件
Oct 09 PHP
php 上传功能实例代码
Apr 13 PHP
apache+php+mysql安装配置方法小结
Aug 01 PHP
PHP如何抛出异常处理错误
Mar 02 PHP
php curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)
Apr 07 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
Oct 30 PHP
php抓取并保存网站图片的实现代码
Oct 28 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
Jan 11 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
Feb 26 PHP
PHP 返回13位时间戳的实现代码
May 13 PHP
PHP实现的ID混淆算法类与用法示例
Aug 10 PHP
PHP explode()函数用法讲解
Feb 15 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编程与应用
2006/10/09 PHP
浅谈discuz密码加密的方式
2014/05/22 PHP
CodeIgniter生成静态页的方法
2016/05/17 PHP
PHP常见数组排序方法小结
2018/08/20 PHP
php实现每日签到功能
2018/11/29 PHP
仅img元素创建后不添加到文档中会执行onload事件的解决方法
2011/07/31 Javascript
JQuery+DIV自定义滚动条样式的具体实现
2013/06/25 Javascript
jquery验证手机号是否正确实例讲解
2015/11/17 Javascript
javascript字符串函数汇总
2015/12/06 Javascript
浅析AngularJs HTTP响应拦截器
2015/12/28 Javascript
javascript拖拽应用实例
2016/03/25 Javascript
JavaScript实现Fly Bird小游戏
2016/12/15 Javascript
原生js实现对Ajax的封装(仿jquery)
2017/01/22 Javascript
xmlplus组件设计系列之列表(4)
2017/04/26 Javascript
Vue项目添加动态浏览器头部title的方法
2018/07/11 Javascript
JS模拟浏览器实现全局搜索功能
2019/09/11 Javascript
[28:28]Ti4 冒泡赛第二天NEWBEE vs NaVi 2
2014/07/15 DOTA
tornado捕获和处理404错误的方法
2014/02/26 Python
python编程使用selenium模拟登陆淘宝实例代码
2018/01/25 Python
Django1.9 加载通过ImageField上传的图片方法
2018/05/25 Python
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
win8.1安装Python 2.7版环境图文详解
2019/07/01 Python
python对矩阵进行转置的2种处理方法
2019/07/17 Python
Python3实现建造者模式的示例代码
2020/06/28 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
美国东北部户外服装和设备零售商:Eastern Mountain Sports
2016/10/05 全球购物
学生处主任岗位职责
2013/12/01 职场文书
《雷鸣电闪波尔卡》教学反思
2014/02/23 职场文书
《植物妈妈有办法》教学反思
2014/02/25 职场文书
商业融资计划书
2014/04/29 职场文书
汽车销售经理岗位职责
2014/06/09 职场文书
捐款通知怎么写
2015/04/24 职场文书
校园开放日新闻稿
2015/07/17 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
7个你应该知道的JS原生错误类型
2021/04/29 Javascript
Python 类,对象,数据分类,函数参数传递详解
2021/09/25 Python