国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php版微信發紅包接口用法示例

2024-05-04 23:50:05
字體:
來源:轉載
供稿:網友

本文實例講述了php版微信發紅包接口用法。分享給大家供大家參考,具體如下:

微信紅包功能我相信各位朋友都知道吧,但如果我們要把紅包集成到網站那么要如何來做呢?這里小編就來為各位分享一個php 微信發紅包接口測試實例,希望文章能夠幫助到各位朋友

下面是一個類,使用方法:

$arr['openid']='ojgTTt8oF9VdYcGsJMACHpA-jy1U';      $arr['hbname']="提現申請";      $arr['body']="您的提現申請已經成功";      $arr['fee']=1;$comm = new Common_util_pub();$re = $comm->sendhongbaoto($arr);var_dump($re);

注意證書位置和 商戶后臺設置的key需要修改.

<?phpheader("Content-type: text/html; charset=utf-8");class Common_util_pub{  /*** hbname 紅包名稱 fee 紅包金額 /元 body 內容 openid 微信用戶id* @param undefined $arr** @return*/public function sendhongbaoto($arr){//$comm = new Common_util_pub();$data['mch_id'] = '120005402';$data['mch_billno'] = '120005402'.date("Ymd",time()).date("His",time()).rand(1111,9999);$data['nonce_str'] = self::createNoncestr();$data['re_openid'] = $arr['openid'];$data['wxappid'] = 'wx8axxxxxbac4905';$data['nick_name'] = $arr['hbname'];$data['send_name'] = $arr['hbname'];$data['total_amount'] = $arr['fee']*100;$data['min_value'] = $arr['fee']*100;$data['max_value'] = $arr['fee']*100;$data['total_num'] = 1;$data['client_ip'] = $_SERVER['REMOTE_ADDR'];$data['act_name'] = '測試活動';$data['remark'] = '備注一下';$data['wishing'] = $arr['body'];if(!$data['re_openid']) {   $rearr['return_msg']='缺少用戶openid';   return $rearr;}$data['sign'] = self::getSign($data);$xml = self::arrayToXml($data);//var_dump($xml);$url ="https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";$re = self::wxHttpsRequestPem($xml,$url);$rearr = self::xmlToArray($re);return $rearr;}function trimString($value)  {    $ret = null;    if (null != $value)    {      $ret = $value;      if (strlen($ret) == 0)      {        $ret = null;      }    }    return $ret;  }  /**   * 作用:產生隨機字符串,不長于32位   */  public function createNoncestr( $length = 32 )  {    $chars = "abcdefghijklmnopqrstuvwxyz0123456789";    $str ="";    for ( $i = 0; $i < $length; $i++ ) {      $str.= substr($chars, mt_rand(0, strlen($chars)-1), 1);    }    return $str;  }  /**   * 作用:格式化參數,簽名過程需要使用   */  function formatBizQueryParaMap($paraMap, $urlencode)  {    $buff = "";    ksort($paraMap);    foreach ($paraMap as $k => $v)    {      if($urlencode)      {        $v = urlencode($v);      }      //$buff .= strtolower($k) . "=" . $v . "&";      $buff .= $k . "=" . $v . "&";    }    $reqPar;    if (strlen($buff) > 0)    {      $reqPar = substr($buff, 0, strlen($buff)-1);    }    return $reqPar;  }  /**   * 作用:生成簽名   */  public function getSign($Obj)  {    foreach ($Obj as $k => $v)    {      $Parameters[$k] = $v;    }    //簽名步驟一:按字典序排序參數    ksort($Parameters);    $String = $this->formatBizQueryParaMap($Parameters, false);    //echo '【string1】'.$String.'</br>';    //簽名步驟二:在string后加入KEY    $String = $String."&key="."254554sefg4exxxxxxxxs5cds1"; // 商戶后臺設置的key    //echo "【string2】".$String."</br>";    //簽名步驟三:MD5加密    $String = md5($String);    //echo "【string3】 ".$String."</br>";    //簽名步驟四:所有字符轉為大寫    $result_ = strtoupper($String);    //echo "【result】 ".$result_."</br>";    return $result_;  }  /**   * 作用:array轉xml   */  public function arrayToXml($arr)  {    $xml = "<xml>";    foreach ($arr as $key=>$val)    {       if (is_numeric($val))       {        $xml.="<".$key.">".$val."</".$key.">";       }       else        $xml.="<".$key."><![CDATA[".$val."]]></".$key.">";    }    $xml.="</xml>";    return $xml;  }  /**   * 作用:將xml轉為array   */  public function xmlToArray($xml)  {    //將XML轉為array    $array_data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);    return $array_data;  }   public function wxHttpsRequestPem( $vars,$url, $second=30,$aHeader=array()){        $ch = curl_init();        //超時時間        curl_setopt($ch,CURLOPT_TIMEOUT,$second);        curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);        //這里設置代理,如果有的話        //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 分別屬于兩個.pem文件        //默認格式為PEM,可以注釋        curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');        curl_setopt($ch,CURLOPT_SSLCERT,dirname(__FILE__).'/hongbao/apiclient_cert.pem');        //默認格式為PEM,可以注釋        curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');        curl_setopt($ch,CURLOPT_SSLKEY,dirname(__FILE__).'/hongbao/apiclient_key.pem');        curl_setopt($ch,CURLOPT_CAINFO,'PEM');        curl_setopt($ch,CURLOPT_CAINFO,dirname(__FILE__).'/hongbao/rootca.pem');        //第二種方式,兩個文件合成一個.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";            curl_close($ch);            return false;        }    }}?>

 

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 津南区| 金寨县| 南昌市| 奉贤区| 仙居县| 永济市| 呼伦贝尔市| 逊克县| 白水县| 阿拉善右旗| 岑溪市| 天峻县| 巴马| 富源县| 麻江县| 西华县| 海伦市| 钦州市| 菏泽市| 保定市| 五华县| 安新县| 绥棱县| 禹城市| 云阳县| 苗栗市| 瑞金市| 宜宾县| 宽城| 黄龙县| 治多县| 三台县| 正安县| 绥宁县| 铜陵市| 日土县| 曲阜市| 房山区| 曲阳县| 浪卡子县| 策勒县|