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

首頁 > 編程 > PHP > 正文

php如何實現微信企業付款(代碼實例)

2020-03-22 18:33:49
字體:
來源:轉載
供稿:網友
本篇文章給大家帶來的內容是關于php如何實現微信企業付款(代碼實例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

一、封裝微信企業付款類WeiXinPayToUser,如下圖代碼所示:

html' target='_blank'>class WeixinPayToUser{    /**     * API 參數     * @var array     * 'mch_appid'         # 公眾號APPID     * 'mchid'             # 商戶號     * 'device_info'       # 設備號     * 'nonce_str'         # 隨機字符串     * 'partner_trade_no'  # 商戶訂單號     * 'openid'            # 收款用戶openid     * 'check_name'        # 校驗用戶姓名選項 針對實名認證的用戶     * 're_user_name'      # 收款用戶姓名     * 'amount'            # 付款金額     * 'desc'              # 企業付款描述信息     * 'spbill_create_ip'  # Ip地址     * 'sign'              # 簽名     */    public $parameters = [];    public $SSLROOTCA_PATH='';    public $SSLCERT_PATH='';    public $SSLKEY_PATH='';    public $appid='';    public $secret='';    public $mchid='';    public $key='';//商戶密鑰    public function __construct()    {        $this->url = 'http://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers';        $this->curl_timeout = 10;        $this->SSLROOTCA_PATH=dirname(__FILE__).'/weixin/cert/rootca.pem';        $this->SSLCERT_PATH=dirname(__FILE__).'/weixin/cert/apiclient_cert.pem';        $this->SSLKEY_PATH=dirname(__FILE__).'/weixin/cert/apiclient_key.pem';    }    public function setParameter($key,$value){        $this->parameters[$key]=$value;    }    function arrayToXml($arr,$dom=0,$item=0){        if (!$dom){            $dom = new DOMDocument("1.0");        }        if(!$item){            $item = $dom->createElement("xml");            $dom->appendChild($item);        }        foreach ($arr as $key=>$val){            $itemx = $dom->createElement(is_string($key)?$key:"item");            $item->appendChild($itemx);            if (!is_array($val)){                $text = $dom->createTextNode($val);                $itemx->appendChild($text);            }else {                $this->arrayToXml($val,$dom,$itemx);            }        }        $dom->encoding = 'UTF-8'; // insert proper        return $dom->saveXML();    }    public function getSign($paramArr){//print_r($paramArr);        ksort($paramArr);        $paramStr = http_build_query($paramArr);        $paramStr=urldecode($paramStr);        $param_temp=$paramStr.'&key='.$this->key;//echo $param_temp.'<br>';        $signValue=strtoupper(md5($param_temp));//echo $signValue.'<br>';        return $signValue;    }    /**     * 生成請求xml數據     * @return string     */    public function createXml()    {        $this->parameters['mch_appid'] = $this->appid;        $this->parameters['mchid']     = $this->mchid;       // $this->parameters['nonce_str'] = md5(time());        $this->parameters['nonce_str'] = 'dddfff';        $this->parameters['sign']      = $this->getSign($this->parameters);        $a= $this->arrayToXml($this->parameters);        //echo $a;        return $a;    }    public function pay(){        $xml=$this->createXml();        $url=$this->url;        return $this->postXmlSSLCurl($xml,$url,$second=30);    }    /**     *     作用:使用證書,以post方式提交xml到對應的接口url     */    function postXmlSSLCurl($xml,$url,$second=30)    {        $ch = curl_init();        //超時時間        curl_setopt($ch,CURLOPT_TIMEOUT,$second);        //這里設置代理,如果有的話        //curl_setopt($ch,CURLOPT_PROXY, '8.8.8.8');        //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);        //設置header        curl_setopt($ch,CURLOPT_HEADER,FALSE);        //要求結果為字符串且輸出到屏幕上        curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);        //設置證書        //curl_setopt($ch,CURLOPT_CAINFO, $this->SSLROOTCA_PATH);        //使用證書:cert 與 key 分別屬于兩個.pem文件        //默認格式為PEM,可以注釋        curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');        curl_setopt($ch,CURLOPT_SSLCERT, $this->SSLCERT_PATH);        //默認格式為PEM,可以注釋        curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');        curl_setopt($ch,CURLOPT_SSLKEY, $this->SSLKEY_PATH);        //post提交方式        curl_setopt($ch,CURLOPT_POST, true);        curl_setopt($ch,CURLOPT_POSTFIELDS,$xml);        $data = curl_exec($ch);        //返回結果        if($data){            curl_close($ch);            return $data;        }        else {            $error = curl_errno($ch);            echo "curl出錯,錯誤碼:$error"."<br>";            echo "<a href='http://curl.haxx.se/libcurl/c/libcurl-errors.html'>錯誤原因查詢</a></br>";            curl_close($ch);            return false;        }    }}?>

二、調用WeiXinPayToUser,如下圖所示:

 /**     * 企業付款測試     */    public function payToUser()    {           $mchPay = new WeiXinPayToUser();        // 用戶openid        $mchPay->setParameter('openid', 'oy2lbszskklaslEKThrzqEziKEBzqU');        // 商戶訂單號        $mchPay->setParameter('partner_trade_no', 'test-'.time());        // 校驗用戶姓名選項        $mchPay->setParameter('check_name', 'NO_CHECK');        // 企業付款金額  單位為分        $mchPay->setParameter('amount', 100);        // 企業付款描述信息        $mchPay->setParameter('desc', '開發測試');        // 調用接口的機器IP地址  自定義        $mchPay->setParameter('spbill_create_ip', '127.0.0.1'); # getClientIp()        // 收款用戶姓名        // $mchPay->setParameter('re_user_name', 'Max wen');        // 設備信息        // $mchPay->setParameter('device_info', 'dev_server');        $response = $mchPay->postXmlSSL();        if( !empty($response) ) {            $data = simplexml_load_string($response, null, LIBXML_NOCDATA);            echo json_encode($data);        }else{            echo json_encode( array('return_code' => 'FAIL', 'return_msg' => 'transfers_接口出錯', 'return_ext' => array()) );        }    }}

相關推薦:

微信開發企業付款 PHP代碼實現

php中如何實現微信企業向用戶付款的代碼實例

以上就是php如何實現微信企業付款(代碼實例)的詳細內容,更多請關注 其它相關文章!

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洪江市| 纳雍县| 通渭县| 法库县| 山阴县| 揭西县| 道孚县| 黑龙江省| 武安市| 新郑市| 都匀市| 西乌珠穆沁旗| 上高县| 水城县| 景泰县| 讷河市| 观塘区| 余庆县| 民勤县| 策勒县| 潢川县| 嘉鱼县| 布拖县| 包头市| 淮南市| 三台县| 富蕴县| 金平| 云浮市| 电白县| 台中市| 缙云县| 漠河县| 娱乐| 比如县| 济宁市| 万荣县| 武隆县| 读书| 天水市| 酒泉市|