微信現金紅包開發 PHP

第一次在cnblogs發文章php

 

微信商家後臺-現金紅包開發api

sdk數組

<?php
class 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的證書文件微信

 

微信紅包調用測試文件:微信開發

<?php
require 'wxpay.class.php';

//數組參數 $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);

 

纔開始作微信開發,測試了一個下午,汗!!!app

相關文章
相關標籤/搜索