|
導讀網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創(chuàng)造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立... 網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創(chuàng)造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立在超文本基礎之上的。超級文本標記語言之所以稱為超文本標記語言,是因為文本中包含了所謂“超級鏈接”點。 本篇文章給大家?guī)淼膬热菔顷P于php如何實現微信企業(yè)付款(代碼實例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。一、封裝微信企業(yè)付款類WeiXinPayToUser,如下圖代碼所示: 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' # 企業(yè)付款描述信息
* '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 = 'https://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,如下圖所示: /**
* 企業(yè)付款測試
*/
public function payToUser()
{
$mchPay = new WeiXinPayToUser();
// 用戶openid
$mchPay->setParameter('openid', 'oy2lbszskklaslEKThrzqEziKEBzqU');
// 商戶訂單號
$mchPay->setParameter('partner_trade_no', 'test-'.time());
// 校驗用戶姓名選項
$mchPay->setParameter('check_name', 'NO_CHECK');
// 企業(yè)付款金額 單位為分
$mchPay->setParameter('amount', 100);
// 企業(yè)付款描述信息
$mchPay->setParameter('desc', '開發(fā)測試');
// 調用接口的機器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如何實現微信企業(yè)付款(代碼實例)的詳細內容,更多請關注php中文網其它相關文章! 網站建設是一個廣義的術語,涵蓋了許多不同的技能和學科中所使用的生產和維護的網站。 |
溫馨提示:喜歡本站的話,請收藏一下本站!