>  기사  >  백엔드 개발  >  PHP WeChat 공식 계정에서 현금 빨간 봉투를 무작위로 배포합니다.

PHP WeChat 공식 계정에서 현금 빨간 봉투를 무작위로 배포합니다.

php中世界最好的语言
php中世界最好的语言원래의
2018-05-16 15:56:322796검색

이번에는 PHP WeChat 공식 계정에서 현금 빨간 봉투를 무작위로 배포하는 기능에 대해 알려드리겠습니다. PHP WeChat 공식 계정에서 현금 빨간 봉투를 무작위로 배포하는 기능의 주의 사항은 무엇입니까? 봐.

다음 WeChat 결제 현금 빨간 봉투 개발은 아래 그림과 같이 WeChat 결제 개발 문서를 참조합니다.

현금 빨간 봉투는 WeChat Pay 판매자 플랫폼에서 제공하는 마케팅 도구 중 하나이며 출시 이후 판매자와 사용자에게 깊은 사랑을 받아왔습니다. 판매자는 이 플랫폼을 통해 WeChat Pay 사용자에게 현금 빨간 봉투를 발행할 수 있습니다. 사용자가 빨간 봉투를 받은 후 자금은 사용자의 WeChat Pay 변경 계좌에 도착하고 변경 지갑에 있는 다른 자금과 동일한 사용 종료를 갖습니다. 사용자가 빨간 봉투를 받지 못한 경우 해당 자금은 판매자에게 반환됩니다. 24시간 후 WeChat Pay 계정.

다음은 참고용으로 빨간 봉투를 보내기 위해 WeChat Pay를 테스트하는 데 사용한 코드 조각입니다.

/*测试微信企业给个人发红包*/ 
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 class="brush:php;toolbar:false">"; 
  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().&#39;\cert\apiclient_cert.pem&#39;);  
  //这个也是证书的位置 
  curl_setopt($ch,CURLOPT_SSLKEY,getcwd().&#39;\cert\apiclient_key.pem&#39;);  
  //运行curl 
  $data = curl_exec($ch);                  
  //关闭curl 
  curl_close($ch); 
  return $data; 
}

이 기사의 사례를 읽으신 후 방법을 마스터하셨다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 도서:

php 컬 with csrf-token 검증 시뮬레이션 제출 예시 상세 설명

PHP+SPL 적용 케이스 상세 설명

PHP는 세션 공유 케이스 상세 설명에서 로드 밸런싱을 달성합니다(코드 포함) )

위 내용은 PHP WeChat 공식 계정에서 현금 빨간 봉투를 무작위로 배포합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.