新浦京81707con > 功能介绍 > php实现微信支付之现金红包,php版微信公众号接

原标题:php实现微信支付之现金红包,php版微信公众号接

浏览次数:191 时间:2019-07-24

正文实例为咱们分享了php微信大伙儿号之现蟹灰包的切实代码,供大家参考,具体内容如下

英特网的好些个PHP微信支付接入教程都颇为复杂,且须要配置和引进很多的文件,本人通过整理后提交一个单文件版的,希望得以给各位想接入微信支付的带来多少协理和借鉴意义。

正文实例陈说了php版微信民众号接口达成发红包的措施。分享给大家供我们参照他事他说加以考察,具体如下:

以下关于微信支付中现茶色包的开支参照他事他说加以考察自微信支付开拓文书档案,如下图所示。

直接运维该文件就可以给钦命的微信用户发送现深黄包。

近期收下贰个职分,需求用微信来给用户自行发红包。要达成那些职务须要那样早已局地物料

图片 1

亟需留神的事项:

微信商家号,已提请微信支付

新款红包,是微信支付经纪人平台提供的经营出售工具之一,上线以来十分受广大厂家与用户的喜爱。商家能够因此本平台向微信支付用户发放现法国红包。用户领取红包后,资金达到用户微信支付零钱账户,和零卡包的别的国资本金有同等的行使出口;若用户未领到,资金将会在24钟头后退回商家的微信支付钱户中。

1.微信现钞红包供给必传证书,须求到这里 账户中央->账户设置->API安全->下载证书,然后修改代码中的证书路线

微信商户号主体下边的微信徒人号

以下为自身用于测验微信支付发红包的代码片段,仅供参照他事他说加以考察。

2.暗中认可的施用意况是抽奖(即scene_id参数为PRODUCT_2),额度是1-200元,所以测验时的最低金额是1元。如需修改在成品基本->产品齐全->现茶色包->产品设置中期维修改

先看一下功用图

/*测试微信企业给个人发红包*/ 
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().'certapiclient_cert.pem');  
  //这个也是证书的位置 
  curl_setopt($ch,CURLOPT_SSLKEY,getcwd().'certapiclient_key.pem');  
  //运行curl 
  $data = curl_exec($ch);                  
  //关闭curl 
  curl_close($ch); 

  return $data; 
}

3.该公文需放到支付授权目录下,可以在微信支付经纪人平台->产品基本->开拓配置中设置。

图片 2

上述正是本文的全体内容,希望对咱们的学习抱有帮衬,也期待我们多多援助脚本之家。

4.如提醒签字错误能够由此微信支付签字验证工具举行验证:微教徒人平台开垦接口调节和测量检验工具

图片 3

本文由新浦京81707con发布于功能介绍,转载请注明出处:php实现微信支付之现金红包,php版微信公众号接

关键词: 新浦京81707con

上一篇:MYSQL连接端口被占引入文件路径错误,解决MYSQL连

下一篇:没有了