PHP實現開發微信現金紅包功能的方法

來源:互聯網
上載者:User
這篇文章主要介紹了PHP開發的現金紅包功能,結合執行個體形式較為詳細的分析了php使用介面實現現金紅包功能的相關步驟與操作技巧,需要的朋友可以參考下

具體如下:

商家後台-現金紅包開發

sdk

<?phpclass wxPay {  //配置參數資訊  const SHANGHUHAO = "1430998xxx";//商戶號  const PARTNERKEY = "leFyTOXWzUEXxfp47WOu5d9xxxxxx";  //api,商戶後台  //核心支付函數,參數:請求地址和參數  function pay($url,$obj) {    $obj['nonce_str'] = $this->create_noncestr();  //建立隨機字串    $stringA = $this->create_qianming($obj,false);  //建立簽名    $stringSignTemp = $stringA."&key=leFyTOXWzUEXxfp47WOu5xxxxxx";  //簽名後加api    $sign = strtoupper(md5($stringSignTemp));  //簽名加密並大寫    $obj['sign'] = $sign;  //將簽名傳入數組    $postXml = $this->arrayToXml($obj);  //將參數轉為xml格式    var_dump($postXml);    $responseXml = $this->curl_post_ssl($url,$postXml);  //提交請求    var_dump($responseXml);    return $responseXml;  }  //產生簽名,參數:產生簽名的參數和是否編碼  function create_qianming($arr,$urlencode) {    $buff = "";    ksort($arr); //對傳進來的數組參數裡面的內容按照字母順序排序,a在前面,z在最後(字典序)    foreach ($arr as $k=>$v) {      if(null!=$v && "null" != $v && "sign" != $k) {  //簽名不要轉碼        if ($urlencode) {          $v = urlencode($v);        }        $buff.=$k."=".$v."&";      }    }    if (strlen($buff)>0) {      $reqPar = substr($buff,0,strlen($buff)-1); //去掉末尾符號“&”    }    return $reqPar;  }  //產生隨機字串,預設32位  function create_noncestr($length=32) {    //建立隨機字元    $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";    $str = "";    for($i=0;$i<$length;$i++) {      $str.=substr($chars, mt_rand(0,strlen($chars)-1),1);    }    return $str;  }  //數組轉xml  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;  }  //post請求網站,需要認證  function curl_post_ssl($url, $vars, $second=30,$aHeader=array())  {    $ch = curl_init();    //逾時時間    curl_setopt($ch,CURLOPT_TIMEOUT,$second);    curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);    //這裡設定代理,如果有的話    curl_setopt($ch,CURLOPT_URL,$url);    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);    curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);    //cert 與 key 分別屬於兩個.pem檔案    //請確保您的libcurl版本是否支援雙向認證,版本高於7.20.1    curl_setopt($ch,CURLOPT_SSLCERT,dirname(__FILE__).DIRECTORY_SEPARATOR.        'zhengshu'.DIRECTORY_SEPARATOR.'apiclient_cert.pem');    curl_setopt($ch,CURLOPT_SSLKEY,dirname(__FILE__).DIRECTORY_SEPARATOR.        'zhengshu'.DIRECTORY_SEPARATOR.'apiclient_key.pem');    curl_setopt($ch,CURLOPT_CAINFO,dirname(__FILE__).DIRECTORY_SEPARATOR.        'zhengshu'.DIRECTORY_SEPARATOR.'rootca.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;    }  }}

認證檔案:

請在商戶後台-API安全下載,PHP請使用php的認證檔案

紅包調用測試檔案:

<?phprequire 'wxpay.class.php';<br><br>//數組參數$money = 100; //最低1元,單位分$sender = "晨緣房產";$obj2 = array();$obj2['wxappid'] = ""; //appid$obj2['mch_id'] = "";  //商戶id$obj2['mch_billno'] = "商戶id".date('YmdHis').rand(1000,9999);  //組合成28位,根據官方開發文檔,可以自行設定$obj2['client_ip'] = $_SERVER['REMOTE_ADDR'];$obj2['re_openid'] = "oUxO6v26wdyMHThD9kfDW6NB_xbE";  //接收紅包openid$obj2['total_amount'] = $money;$obj2['min_value'] = $money;$obj2['max_value'] = $money;$obj2['total_num'] = 1;$obj2['nick_name'] = $sender;$obj2['send_name'] = $sender;$obj2['wishing'] = "恭喜發財";$obj2['act_name'] = $sender."紅包";$obj2['remark'] = $sender."紅包";$url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";$wxpay = new wxPay();$res = $wxpay->pay($url, $obj2);var_dump($res);

相關推薦:

PHP實現公眾號開發之紅包的方法

JS實現紅包隨機演算法(附代碼)

PHP用拋物線的模型實現紅包產生演算法的程式源碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.