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

首頁 > 開發 > PHP > 正文

PHP版微信紅包API接口程序

2024-05-04 21:49:51
字體:
來源:轉載
供稿:網友

對于微信紅包我相信今年過年時各位朋友都有知道吧,這個微信紅包相當的火爆了,下面我們來給各位介紹一個PHP版微信紅包API接口程序了,我們可以基于這個接口也實現開發第三方紅包功能.

根據微信高級紅包接口,開發PHP版本的API接口,現在進行主要代碼分析,紅包接口調用請求代碼,所有請求參數為必填參數與文檔對應:

  1. class Wxapi { 
  2.     private $app_id = 'wxXXXXXXXXXXXX'//公眾賬號appid,首先申請與之配套的公眾賬號 
  3.     private $app_secret = 'XXXXXXXXXXXXXXXXXXXXXXXX';//公眾號secret,用戶獲取用戶授權token 
  4.     private $app_mchid = 'XXXXXXXX';//商戶號id 
  5.     function __construct(){ 
  6.     //do sth here.... 
  7.     } 
  8.     /** 
  9.      * 微信支付 
  10.      * @param string $openid 用戶openid 
  11.      */ 
  12.     public function pay($re_openid
  13.     { 
  14.         include_once('WxHongBaoHelper.php'); 
  15.         $commonUtil = new CommonUtil(); 
  16.         $wxHongBaoHelper = new WxHongBaoHelper(); 
  17.         $wxHongBaoHelper->setParameter("nonce_str"$this->great_rand());//隨機字符串,丌長于 32 位 
  18.         $wxHongBaoHelper->setParameter("mch_billno"$this->app_mchid.date('YmdHis').rand(1000, 9999));//訂單號 
  19.         $wxHongBaoHelper->setParameter("mch_id"$this->app_mchid);//商戶號 
  20.         $wxHongBaoHelper->setParameter("wxappid"$this->app_id); 
  21.         $wxHongBaoHelper->setParameter("nick_name"'紅包');//提供方名稱 
  22.         $wxHongBaoHelper->setParameter("send_name"'紅包');//紅包發送者名稱 
  23.         $wxHongBaoHelper->setParameter("re_openid"$re_openid);//相對于醫脈互通的openid 
  24.         $wxHongBaoHelper->setParameter("total_amount", 100);//付款金額,單位分 
  25.         $wxHongBaoHelper->setParameter("min_value", 100);//最小紅包金額,單位分 
  26.         $wxHongBaoHelper->setParameter("max_value", 100);//最大紅包金額,單位分 
  27.         $wxHongBaoHelper->setParameter("total_num", 1);//紅包?Х拋莧聳?br />         $wxHongBaoHelper->setParameter("wishing", '感謝您參與紅包派發活動,祝您新年快樂!');//紅包祝福詫 
  28.         $wxHongBaoHelper->setParameter("client_ip"'127.0.0.1');//調用接口的機器 Ip 地址 
  29.         $wxHongBaoHelper->setParameter("act_name"'紅包活動');//活勱名稱 
  30.         $wxHongBaoHelper->setParameter("remark"'快來搶!');//備注信息 
  31.         $postXml = $wxHongBaoHelper->create_hongbao_xml(); 
  32.         $url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack'
  33.         $responseXml = $wxHongBaoHelper->curl_post_ssl($url$postXml); 
  34.         //用作結果調試輸出 
  35.         //echo htmlentities($responseXml,ENT_COMPAT,'UTF-8'); 
  36.     $responseObj = simplexml_load_string($responseXml'SimpleXMLElement', LIBXML_NOCDATA); 
  37.     return $responseObj->return_code; 
  38.     }  //Vevb.com 
  39. 獲取隨機字符串方法: 
  40.  
  41. /** 
  42.  * 生成隨機數 
  43.  */      
  44. public function great_rand(){ 
  45.     $str = '1234567890abcdefghijklmnopqrstuvwxyz'
  46.     for($i=0;$i<30;$i++){ 
  47.         $j=rand(0,35); 
  48.         $t1 .= $str[$j]; 
  49.     } 
  50.     return $t1;     

簽名算法:

  1. /** 
  2. 例如: 
  3. appid:    wxd111665abv58f4f 
  4. mch_id:    10000100 
  5. device_info:  1000 
  6. Body:    test 
  7. nonce_str:  ibuaiVcKdpRxkhJA 

第一步:對參數按照 key=value 的格式,并按照參數名 ASCII 字典序排序如下:

stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA";

第二步:拼接支付密鑰:

  1. stringSignTemp="stringA&key=192006250b4c09247ec02edce69f6a2d" 
  2. sign=MD5(stringSignTemp).toUpperCase()="9A0A8659F005D6984697E2CA0A 
  3. 9CF3B7" 
  4. */ 
  5. protected function get_sign(){ 
  6.     define('PARTNERKEY',"QSRXXXXXXXXXXXXXXXXXXXXX"); 
  7.     try { 
  8.         if (null == PARTNERKEY || "" == PARTNERKEY ) { 
  9.            throw new SDKRuntimeException("密鑰不能為空!" . "<br>"); 
  10.         } 
  11.         if($this->check_sign_parameters() == false) {   //檢查生成簽名參數 
  12.            throw new SDKRuntimeException("生成簽名參數缺失!" . "<br>"); 
  13.         } 
  14.         $commonUtil = new CommonUtil(); 
  15.         ksort($this->parameters); 
  16.         $unSignParaString = $commonUtil->formatQueryParaMap($this->parameters, false); 
  17.         $md5SignUtil = new MD5SignUtil(); 
  18.         return $md5SignUtil->sign($unSignParaString,$commonUtil->trimString(PARTNERKEY)); 
  19.     }catch (SDKRuntimeException $e
  20.     { 
  21.         die($e->errorMessage()); 
  22.     } 
  23.  

CURL請求以及發送證書:

  1. function curl_post_ssl($url$vars$second=30,$aHeader=array()) 
  2.     $ch = curl_init(); 
  3.     //超時時間 
  4.     curl_setopt($ch,CURLOPT_TIMEOUT,$second); 
  5.     curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1); 
  6.     //這里設置代理,如果有的話 
  7.     curl_setopt($ch,CURLOPT_URL,$url); 
  8.     curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); 
  9.     curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);      
  10.     //cert 與 key 分別屬于兩個.pem文件 
  11.     //請確保您的libcurl版本是否支持雙向認證,版本高于7.20.1 
  12.     curl_setopt($ch,CURLOPT_SSLCERT,dirname(__FILE__).DIRECTORY_SEPARATOR.'zhengshu'.DIRECTORY_SEPARATOR.'apiclient_cert.pem'); 
  13.     curl_setopt($ch,CURLOPT_SSLKEY,dirname(__FILE__).DIRECTORY_SEPARATOR.'zhengshu'.DIRECTORY_SEPARATOR.'apiclient_key.pem'); 
  14.     curl_setopt($ch,CURLOPT_CAINFO,dirname(__FILE__).DIRECTORY_SEPARATOR.'zhengshu'.DIRECTORY_SEPARATOR.'rootca.pem'); 
  15.     ifcount($aHeader) >= 1 ){ 
  16.         curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader); 
  17.     } 
  18.     curl_setopt($ch,CURLOPT_POST, 1); 
  19.     curl_setopt($ch,CURLOPT_POSTFIELDS,$vars); 
  20.     $data = curl_exec($ch); 
  21.     if($data){ 
  22.         curl_close($ch); 
  23.         return $data
  24.     } 
  25.     else {  
  26.         $error = curl_errno($ch); 
  27.         //echo "call faild, errorCode:$error/n";  
  28.         curl_close($ch); 
  29.         return false; 
  30.     } 

入口文件:

  1. @require "pay.php"
  2. //獲取用戶信息 
  3. $get = $_GET['param']; 
  4. $code = $_GET['code']; 
  5. //判斷code是否存在 
  6. if($get=='access_token' && !emptyempty($code)){ 
  7.     $param['param'] = 'access_token'
  8.     $param['code'] = $code
  9.     $packet = new Packet(); 
  10.     //獲取用戶openid信息 
  11.     $userinfo = $packet->_route('userinfo',$param); 
  12.     if(emptyempty($userinfo['openid'])){ 
  13.         exit("NOAUTH"); 
  14.     } 
  15.     //調取支付方法 
  16.     $packet->_route('wxpacket',array('openid'=>$userinfo['openid'])); 
  17. }else
  18.     $packet->_route('userinfo'); 
  19. }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 张家界市| 阜平县| 玛沁县| 偃师市| 大英县| 沽源县| 镇雄县| 百色市| 秀山| 钟祥市| 万盛区| 克东县| 遂昌县| 洛阳市| 木兰县| 临泉县| 望城县| 黄梅县| 翁牛特旗| 万山特区| 涪陵区| 香河县| 西林县| 诸暨市| 泸西县| 休宁县| 大邑县| 灌阳县| 古交市| 平凉市| 崇明县| 石屏县| 迭部县| 高雄县| 临城县| 黔东| 大连市| 伊宁市| 瓦房店市| 宁武县| 东源县|