PHP 微信支付

2021-09-19 16:50:37 字數 3526 閱讀 1574

<?php

use think\model;

/** * 使用示例

* $options = array(

* );

* 統一下單方法

* $params['body'] = '商品描述'; //商品描述

* $params['out_trade_no'] = '1217752501201407'; //自定義的訂單號

* $params['total_fee'] = '100'; //訂單金額 只能為整數 單位為分

*/ /**

* 下單方法

* @param $params 下單引數

*/public function unifiedorder( $params )

$result = $this->xml_to_data( $response );

//print_r($response);

if( !empty($result['result_code']) && !empty($result['err_code']) )

return $result; }

/*** 查詢訂單資訊

* @param $out_trade_no 訂單號

* @return array

*/public function orderquery( $out_trade_no )

$result = $this->xml_to_data( $response );

if( !empty($result['result_code']) && !empty($result['err_code']) )

return $result;

} /**

* 關閉訂單

* @param $out_trade_no 訂單號

* @return array

*/public function closeorder( $out_trade_no )

$result = $this->xml_to_data( $response );

return $result;

} /**

* * 獲取支付結果通知資料

* return array

*/public function getnotifydata()

$data = $this->xml_to_data( $xml );

if( !empty($data['return_code']) )

} return $data;

} /**

* 接收通知成功後應答輸出xml資料

* @param string $xml

*/public function replynotify()

/*** @param $prepayid 預支付id

*/$data['partnerid'] = $this->mch_id;

$data['prepayid'] = $prepayid;

$data['package'] = 'sign=wxpay';

$data['noncestr'] = $this->genrandomstring();

$data['timestamp'] = time();

$data['sign'] = $this->makesign( $data );

return $data;

} /**

* 生成簽名

* @return 簽名

*/public function makesign( $params )

/*** 將引數拼接為url: key=value&key=value

* @param $params

* @return string

*/public function tourlparams( $params )

$string = implode("&",$array);

} return $string;

} /**

* 輸出xml字元

* @param $params 引數名稱

* return string 返回組裝的xml

**/public function data_to_xml( $params )

$xml = "";

foreach ($params as $key=>$val)

else

}$xml.="";

return $xml;

} /**

* 將xml轉為array

* @param string $xml

* return array

*/public function xml_to_data($xml)

//將xml轉為array

//禁止引用外部xml實體

libxml_disable_entity_loader(true);

$data = json_decode(json_encode(******xml_load_string($xml, '******xmlelement', libxml_nocdata)), true);

return $data;

} /**

* 獲取毫秒級別的時間戳

*/private static function getmillisecond()

/*** 產生乙個指定長度的隨機字串,並返回給使用者

* @param type $len 產生字串的長度

* @return string 隨機字串

*/private function genrandomstring($len = 32)

return $output;

} /**

* 以post方式提交xml到對應的介面url

* * @param string $xml 需要post的xml資料

* @param string $url url

* @param bool $usecert 是否需要證書,預設不需要

* @param int $second url執行超時時間,預設30s

* @throws wxpayexception

*/private function postxmlcurl($xml, $url, $usecert = false, $second = 30)

//post提交方式

curl_setopt($ch, curlopt_post, true);

curl_setopt($ch, curlopt_postfields, $xml);

//執行curl

$data = curl_exec($ch);

//返回結果

if($data) else

} /**

* 錯誤**

* @param $code 伺服器輸出的錯誤**

* return string

*/public function error_code( $code )

}}

php的微信支付

需要填寫對應的引數有 data mch id 商戶號 商戶號 data spbill create ip ip位址 ip位址 partnerid 商戶號 商戶號,同上 呼叫統一下單 public function wxpay else 設定header curl setopt ch,curlopt ...

PHP微信支付功能

然後在專案中引入 之後,在去配置檔案。config.php 通常操作就是。使用者訪問乙個方法,在方法裡面new wechatpay。得到乙個結果集 然後再去呼叫sdk的一些內部方法 把一些要存到資料庫裡面的。放在快取裡面待用,比如傳入的金錢,還有型別,使用者uid等。也可以做乙個簽名驗證操作。我這裡...

微信支付 微信JSAPI支付

pay.php baby extend wx pay.php namespace wx class pay 通過redirecturi獲取授權資訊 return mixed public function getauthinfo 通過code換取網頁授權資訊 res this curlgetreq ...