最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP微信公眾號(hào)自動(dòng)發(fā)送紅包API

 更新時(shí)間:2016年06月01日 14:22:14   作者:ADKi  
微信發(fā)紅包已經(jīng)成為當(dāng)今比較流行的祝福形式,大家都學(xué)著使用微信發(fā)紅包,這篇文章主要為大家詳細(xì)介紹了PHP微信公眾號(hào)自動(dòng)發(fā)送紅包API,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了PHP微信公眾號(hào)自動(dòng)發(fā)送紅包API代碼,分享給大家供大家參考。具體如下:

貼出核心接口代碼至于數(shù)據(jù)自己填寫,接口測(cè)試OK
wechat_packet.php

<!--?php
/**
 * 發(fā)送紅包接口
 * Created by PhpStorm.
 * User: ADKi
 * Date: 2016/4/25 0025
 * Time: 15:25
 */

class wechat_packet{
 private $url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack';//請(qǐng)求URL
 private $mch_id;//商戶號(hào)
 private $weixin_appid;//公眾賬號(hào)appid
 private $send_name;//商戶名稱
 private $total_num = 1;//發(fā)送紅包總?cè)藬?shù)
 private $wishing;//紅包祝福語
 private $client_ip;//調(diào)用接口的機(jī)器Ip地址
 private $act_name;//活動(dòng)名稱
 private $remark;//備注信息
 private $nonce_str;//隨機(jī)字符串,不長(zhǎng)于32位
 private $api_password;
 private $arraytoxml;//數(shù)組轉(zhuǎn)xml
 /**
  * 公鑰
  */
 private $public_key = "/api/wechat/cert/apiclient_cert.pem";
 /**
  * 私鑰
  */
 private $private_key = '/api/wechat/cert/apiclient_key.pem';
 /**
  * ca證書
  */
 private $rootca = 'api/wechat/cert/rootca.pem';
 public function __construct()
 {
  //初始化紅包設(shè)置信息
  $this--->weixin_appid = C('wap_weixin_appid');
  $this->mch_id = C('wechat_mch_id');
  $this->send_name = C('wechat_send_name');
  $this->wishing = C('wechat_wishing');
  $this->act_name = C('wechat_act_name');
  $this->client_ip = $_SERVER['SERVER_ADDR'];
  $this->remark = C('wechat_remark');
  $this->nonce_str = $this->create_nonce_str(32);
  $this->api_password = C('wechat_api_password');
  $inc_file = BASE_PATH.DS.'api'.DS.'wechat'.DS.'arraytoxml.php';
  if(is_file($inc_file)) {
   require($inc_file);
  }
  $this->arraytoxml = new ArrayToXML();
 }
 
 public function send_post($mch_billno,$re_openid,$total_amount){
  $sign = $this->create_sign($mch_billno,$re_openid,$total_amount);
  $send_array = array(
   'nonce_str' => $this->nonce_str,
   'mch_billno' => $mch_billno,
   'mch_id' => $this->mch_id,
   'wxappid' => $this->weixin_appid,
   'send_name' => $this->send_name,
   're_openid' => $re_openid,
   'total_amount' => $total_amount,
   'total_num' => $this->total_num,
   'wishing' => $this->wishing,
   'client_ip' => $this->client_ip,
   'act_name' => $this->act_name,
   'remark' => $this->remark,
   'sign' => $sign,
  );
  $send_xml = $this->arraytoxml->toXml($send_array,'');
  $data = $this->curl_post_ssl($this->url, $send_xml);
  $data = $this->xmlToArray($data);
  file_put_contents('adki',var_export($data,true),FILE_APPEND);
 }
 /*
 請(qǐng)確保您的libcurl版本是否支持雙向認(rèn)證,版本高于7.20.1
 */
 private function curl_post_ssl($url, $vars, $second=30,$aHeader=array()){
  $ch = curl_init();
  //超時(shí)時(shí)間
  curl_setopt($ch,CURLOPT_TIMEOUT,$second);
  curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
  //這里設(shè)置代理,如果有的話
  //curl_setopt($ch,CURLOPT_PROXY, '10.206.30.98');
  //curl_setopt($ch,CURLOPT_PROXYPORT, 8080);
  curl_setopt($ch,CURLOPT_URL,$url);
  curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
  curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
  //以下兩種方式需選擇一種
  //第一種方法,cert 與 key 分別屬于兩個(gè).pem文件
  //默認(rèn)格式為PEM,可以注釋
  curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');
  curl_setopt($ch,CURLOPT_SSLCERT,getcwd().$this->public_key);
  //默認(rèn)格式為PEM,可以注釋
  curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');
  curl_setopt($ch,CURLOPT_SSLKEY,getcwd().$this->private_key);
  //ca證書
  curl_setopt($ch,CURLOPT_CAINFO,$this->rootca);
  //第二種方式,兩個(gè)文件合成一個(gè).pem文件
  //curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'/all.pem');
  if( count($aHeader) >= 1 ){
   curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);
  }
  curl_setopt($ch,CURLOPT_POST, 1);
  curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);
  $data = curl_exec($ch);
  if($data){
   curl_close($ch);
   return $data;
  }
  else {
   $error = curl_errno($ch);
   echo "call faild, errorCode:$error\n\n\n\n";
   curl_close($ch);
   return false;
  }
 }
 //生成簽名
 private function create_sign($mch_billno,$re_openid,$total_amount){
  $string_array = array(
   'act_name' => $this->act_name,
   'client_ip' => $this->client_ip,
   'mch_billno' => $mch_billno,
   'mch_id' => $this->mch_id,
   'nonce_str' => $this->nonce_str,
   're_openid' => $re_openid,
   'remark' => $this->remark,
   'send_name' => $this->send_name,
   'total_amount' => $total_amount,
   'total_num' => $this->total_num,
   'wishing' => $this->wishing,
   'wxappid' => $this->weixin_appid,
  );
  foreach ($string_array as $key => $value){

   if(!empty($value)){

    $stringA .= "$key=$value";
    if($key != 'wxappid'){

     $stringA .= '&';
    }
   }
  }
  //轉(zhuǎn)成UTF-8
  $stringA = $this->gbkToUtf8($stringA);
  $stringSignTemp="$stringA&key=$this->api_password";
  $sign = MD5($stringSignTemp);

  $sign = strtoupper($sign);
  return $sign;
 }
 //生成隨機(jī)字符串
 private function create_nonce_str($length){
  $str = null;
  $strPol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
  $max = strlen($strPol)-1;
  for($i=0;$i<$length;$i++){
   $str.=$strPol[rand(0,$max)];//rand($min,$max)生成介于min和max兩個(gè)數(shù)之間的一個(gè)隨機(jī)整數(shù)
  }

  return $str;
 }
 /**
  *自動(dòng)判斷把gbk或gb2312編碼的字符串轉(zhuǎn)為utf8
  *能自動(dòng)判斷輸入字符串的編碼類,如果本身是utf-8就不用轉(zhuǎn)換,否則就轉(zhuǎn)換為utf-8的字符串
  *支持的字符編碼類型是:utf-8,gbk,gb2312
  *@$str:string 字符串
  */
 private function gbkToUtf8($str){
  $charset = mb_detect_encoding($str,array('ASCII','UTF-8','GBK','GB2312'));
  $charset = strtolower($charset);
  if("utf-8" != $charset){
   $str = iconv('UTF-8',$charset,$str);
  }
  return $str;

 }
 private function xmlToArray($postStr){
  $msg = array();
  $msg = (array)simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
  return $msg;
 }
}

數(shù)組轉(zhuǎn)xml:arraytoxml.php

<!--?php
/**
 * Created by PhpStorm.
 * User: ADKi
 * Date: 2016/4/26 0026
 * Time: 12:19
 */
class ArrayToXML
{
 public function toXml($data){
  $xml = '<xml-->';
  foreach ($data as $key => $value){
   if (is_numeric($value)){
    $xml .= "<".$key.">".$value."<!--".$key."-->";
   }else{
    $xml .= "<".$key."><!--[CDATA[".$value."]]--><!--".$key."-->";
   }
  }
  $xml .= '';
  return $xml;
 }

}


以上就是本文的全部?jī)?nèi)容,希望對(duì)大家學(xué)習(xí)PHP程序設(shè)計(jì)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • ThinkPHP CURD方法之limit方法詳解

    ThinkPHP CURD方法之limit方法詳解

    這篇文章主要介紹了ThinkPHP CURD方法的limit方法,需要的朋友可以參考下
    2014-06-06
  • PHP中對(duì)于浮點(diǎn)型的數(shù)據(jù)需要用不同的方法解決

    PHP中對(duì)于浮點(diǎn)型的數(shù)據(jù)需要用不同的方法解決

    這篇文章主要介紹了PHP中對(duì)于浮點(diǎn)型的數(shù)據(jù)需要用不同的方法解決。需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2014-03-03
  • 微信支付開發(fā)發(fā)貨通知實(shí)例

    微信支付開發(fā)發(fā)貨通知實(shí)例

    本篇文章主要介紹微信支付中發(fā)貨通知功能的實(shí)現(xiàn),并且提供實(shí)例代碼做參考,希望能幫到開發(fā)微信支付的小伙伴
    2016-07-07
  • php cookie 詳解使用實(shí)例

    php cookie 詳解使用實(shí)例

    這篇文章主要介紹了php cookie 詳解使用實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • php 判斷IP為有效IP地址的方法

    php 判斷IP為有效IP地址的方法

    這篇文章主要介紹了php 判斷IP為有效IP地址的方法,需要的朋友可以參考下
    2018-01-01
  • php中的array_filter()函數(shù)的使用

    php中的array_filter()函數(shù)的使用

    php中的array_filter()函數(shù)用于篩選數(shù)組中的元素,并返回一個(gè)新的數(shù)組,新數(shù)組的元素是所有返回值為true的原數(shù)組元素,本文給大家介紹php中的array_filter()函數(shù)的使用,感興趣的朋友跟隨小編一起看看吧
    2023-08-08
  • thinkphp實(shí)現(xiàn)附件上傳功能

    thinkphp實(shí)現(xiàn)附件上傳功能

    這篇文章主要為大家詳細(xì)介紹了thinkphp實(shí)現(xiàn)附件上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • php + WebUploader實(shí)現(xiàn)圖片批量上傳功能

    php + WebUploader實(shí)現(xiàn)圖片批量上傳功能

    這篇文章主要給大家介紹了利用php + WebUploader實(shí)現(xiàn)圖片批量上傳功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用PHP具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 淺談PHP中如何實(shí)現(xiàn)Hook機(jī)制

    淺談PHP中如何實(shí)現(xiàn)Hook機(jī)制

    本篇文章主要介紹了淺談PHP中如何實(shí)現(xiàn)Hook機(jī)制,詳細(xì)的介紹了Hook機(jī)制的原理和實(shí)現(xiàn)過程,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-11-11
  • PHP速成大法

    PHP速成大法

    本文主要是簡(jiǎn)單而全面的向大家介紹了一下php的相關(guān)知識(shí),php入門非常簡(jiǎn)單,稍微有點(diǎn)小基礎(chǔ)的小伙伴們一天就能入門。
    2015-01-01

最新評(píng)論

永靖县| 闸北区| 博客| 嘉祥县| 会宁县| 溧阳市| 赣州市| 余干县| 招远市| 大冶市| 延吉市| 朝阳县| 伊吾县| 泽州县| 元阳县| 紫金县| 铁力市| 城固县| 泸溪县| 达拉特旗| 北辰区| 石渠县| 明水县| 平昌县| 即墨市| 天水市| 太和县| 凤翔县| 商河县| 林芝县| 绥芬河市| 琼中| 万源市| 格尔木市| 驻马店市| 偏关县| 顺昌县| 乐都县| 友谊县| 安丘市| 淅川县|