1. 程式人生 > >微信開發 -- 企業付款 PHP程式碼實現

微信開發 -- 企業付款 PHP程式碼實現

<?php // 引入SDK import('Common.Util.WxPay'); /** * 微信企業付款操作類 * Author : Max.wen * DateTime: <15/9/16 11:00> */ class WxMchPay extends Wxpay_client_pub { /** * 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 function __construct() { $this->url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers'; $this->curl_timeout = WxPayConf_pub::CURL_TIMEOUT; } /** * 生成請求xml資料 * @return string */ public function
createXml() { $this->parameters['mch_appid'] = WxPayConf_pub::APPID; $this->parameters['mchid'] = WxPayConf_pub::MCHID; $this->parameters['nonce_str'] = $this->createNoncestr(); $this->parameters['sign'] = $this->getSign($this->parameters);
return $this->arrayToXml($this->parameters); } /** * 作用:使用證書,以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, WxPayConf_pub::SSLROOTCA_PATH); //使用證書:cert 與 key 分別屬於兩個.pem檔案 //預設格式為PEM,可以註釋 curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM'); curl_setopt($ch,CURLOPT_SSLCERT, WxPayConf_pub::SSLCERT_PATH); //預設格式為PEM,可以註釋 curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM'); curl_setopt($ch,CURLOPT_SSLKEY, WxPayConf_pub::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; } } }