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

首頁 > 編程 > PHP > 正文

微信企業紅包開發(php)

2020-03-22 18:27:43
字體:
來源:轉載
供稿:網友
  • 微信的開發真的有點麻煩,不是難,就是煩,細節多,東西多,關聯多

    這里記錄下 微信企業紅包開發的整個過程(弄完的話 微信支付 也差不多了,代碼是 php的)

    申請:這里只說簡單的過程先申請公眾服務號在服務號中申請‘微信支付’(登錄公眾號平臺首頁左面有這個菜單),覺得微信在推廣移動支付,所以還是很好申請的,關于申請中填寫的網站最好做一個購買的演示鏈接,這樣可能更容易下來。證書微信支付申請下來了,那么你有了一個 微信的 商戶號和登錄密碼 (會發郵件給你)還是從申請微信支付哪里 點到 微信商戶登錄頁面進去先看 [賬戶管理]設置證書 安裝證書 設置證書的 api秘鑰(這個是開發的簽名key 自己保存好) 然后下載開發用的證書,反正都在這個大菜單里下載了證書 放到一個安全點的目錄(我是用php開發 linux環境,和window可能有點小區別) 注意這個目錄不要是 web服務的目錄 不然被別人下載了 呵呵。。開發代碼整理老規矩直接找別人的代碼,找到一個看起來靠譜的,尼瑪 6個文件。。。說真的 看demo的時候 我特別討厭 封裝下面是我自己整理的代碼,實際測試ok的時間 不足整理時間的 十分之一 再次無語(不過還是要謝謝 放代碼的兄弟)注意 所有方法全要 放一個php 類里就可以了 GrantHongbao是入口方法 下面的參數自己換一下注意 證書目錄 替換成你 保存證書的目錄
    </pre></li></ul></ol></p><pre name="code" html' target='_blank'>class="plain">
    public function GrantHongbao(){//發送紅包

    $PARTNERKEY = C('WEIXINPAYAPIKEY'); //商戶的簽名加密key
    $APPMCHID = C('WEIXINMCHID'); //微信商戶號
    $WEIXINAPPID = C('WEIXINAPPID'); //微信的appid
    $BILLNO = $this->app_mchid.date('YmdHis').rand(1000, 9999); //訂單號

    $openid = C('KKOPENID'); //收紅包的人的openid

    $acount = 100; //發放的金額(單位分)

    $url = 'http://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack'; //api url

    $ip = '101.45.174.67'; //本機ip

    $parames = array();


    $parames["nonce_str"] = $this->great_rand();//隨機字符串,丌長于 32 位
    $parames["mch_billno"] = $BILLNO;//訂單號

    $parames["mch_id"] = $APPMCHID;//商戶號
    $parames["wxappid"] = $WEIXINAPPID;

    $parames["nick_name"] = '紅包nick_name';//提供方名稱
    $parames["send_name"] = 'KK';//紅包發送者名稱
    $parames["re_openid"] = $openid;//openid

    $parames["total_amount"] = $acount;//付款金額,單位分
    $parames["min_value"] = $acount;//最小紅包金額,單位分
    $parames["max_value"] = $acount;//最大紅包金額,單位分
    $parames["total_num"] = 1;//紅包収放總人數

    $parames["wishing"] = '發個紅包真不容易...';//紅包祝福

    $parames["client_ip"] = $ip;//調用接口的機器 Ip 地址

    $parames["act_name"] = 'kk測試紅包';//活勱名稱

    $parames["remark"] = '快來搶?。]了別來了)';//

    $parames["sign"] = $this->get_sign($parames, $PARTNERKEY);//參數簽名


    //var_dump($parames);

    //轉成xml字符串
    $postXml = $this->array2Xmlstring($parames);



    //echo '<br>';
    //var_dump($postXml);

    //向微信老大發起請求
    $responseXml = $this->curl_post_ssl($url, $postXml);

    //echo '<br>$responseXml<br>';
    var_dump($responseXml);


    $responseObj = simplexml_load_string($responseXml, 'SimpleXMLElement', LIBXML_NOCDATA);

    echo $responseObj->return_code;


    }

    /**
    *獲取參數列表的簽名
    * @param type $parameters
    * @param type $PARTNERKEY:簽名的秘鑰
    * @return type
    */
    protected function get_sign($parameters, $PARTNERKEY){

    //字典排序
    ksort($parameters);

    $unSignParaString = $this->formatQueryParaMap($parameters, false);
    //要簽名的字符串
    $signStr = $unSignParaString . "&key=" . $PARTNERKEY;

    return strtoupper(md5($signStr));


    }
    /**
    *將參數列表轉化為連接字符串
    * @param type $paraMap
    * @param type $urlencode
    * @return type
    */
    protected function formatQueryParaMap($paraMap, $urlencode){
    $buff = "";
    foreach ($paraMap as $k => $v){
    if (null != $v && "null" != $v && "sign" != $k) {
    if($urlencode){
    $v = urlencode($v);
    }
    $buff .= $k . "=" . $v . "&";
    }
    }
    $reqPar;
    if (strlen($buff) > 0) {
    $reqPar = substr($buff, 0, strlen($buff)-1);
    }
    return $reqPar;
    }
    /**
    *生成隨機數(默認30位長度)
    * @return string
    */
    protected function great_rand($length = 30){
    $str = '1234567890abcdefghijklmnopqrstuvwxyz';
    for($i=0;$i<$length;$i++){
    $j=rand(0,35);
    $t1 .= $str[$j];
    }
    return $t1;
    }
    /**
    *數組轉xml串
    * @param type $arr
    * @return string
    */
    protected function array2Xmlstring($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;
    }
    /**
    * 訪問微信接口
    * @param type $url
    * @param type $vars
    * @param type $second
    * @param type $aHeader
    * @return boolean
    */
    protected 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文件
    curl_setopt($ch,CURLOPT_SSLCERT,'證書保存路徑'.'apiclient_cert.pem');
    curl_setopt($ch,CURLOPT_SSLKEY,'證書保存路徑'.'apiclient_key.pem');
    curl_setopt($ch,CURLOPT_CAINFO,'證書保存路徑'.'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);
    curl_close($ch);
    return $error;
    }
    }
    PHP編程        

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 晋中市| 布拖县| 常宁市| 张家港市| 东台市| 宁波市| 石台县| 弋阳县| 富顺县| 诸城市| 盐城市| 平陆县| 扎囊县| 德江县| 江北区| 五台县| 汽车| 临夏市| 衡阳市| 宁晋县| 富顺县| 马鞍山市| 崇州市| 甘谷县| 敖汉旗| 巨野县| 陇川县| 湟源县| 绵阳市| 百色市| 宁乡县| 泌阳县| 诸暨市| 鄂托克前旗| 肃宁县| 日照市| 平阳县| 潮安县| 沈阳市| 台东县| 道真|