Init Repo

This commit is contained in:
root
2019-09-06 23:53:10 +08:00
commit f0ef89dfbb
7905 changed files with 914138 additions and 0 deletions

159
extend/wxpay/WxPayBase.php Executable file
View File

@ -0,0 +1,159 @@
<?php
include_once ("WxException.php");
/**
* 所有接口的基类
*/
class WxPayBase {
function __construct() {
}
function trimString($value) {
$ret = null;
if (null != $value) {
$ret = $value;
if (strlen ( $ret ) == 0) {
$ret = null;
}
}
return $ret;
}
/**
* 作用产生随机字符串不长于32位
*/
public function createNoncestr($length = 32) {
$chars = "abcdefghijklmnopqrstuvwxyz0123456789";
$str = "";
for($i = 0; $i < $length; $i ++) {
$str .= substr ( $chars, mt_rand ( 0, strlen ( $chars ) - 1 ), 1 );
}
return $str;
}
/**
* 作用:格式化参数,签名过程需要使用
*/
function formatBizQueryParaMap($paraMap, $urlencode) {
$buff = "";
ksort ( $paraMap );
foreach ( $paraMap as $k => $v ) {
if ($urlencode) {
$v = urlencode ( $v );
}
// $buff .= strtolower($k) . "=" . $v . "&";
$buff .= $k . "=" . $v . "&";
}
$reqPar;
if (strlen ( $buff ) > 0) {
$reqPar = substr ( $buff, 0, strlen ( $buff ) - 1 );
}
return $reqPar;
}
/**
* 作用:生成签名
*/
public function getSign($Obj) {
foreach ( $Obj as $k => $v ) {
$Parameters [$k] = $v;
}
// 签名步骤一:按字典序排序参数
ksort ( $Parameters );
$String = $this->formatBizQueryParaMap ( $Parameters, false );
// 签名步骤二在string后加入KEY
$String = $String . "&key=" . WxPayConf::$KEY;
// 签名步骤三MD5加密
$String = md5 ( $String );
// 签名步骤四:所有字符转为大写
$result_ = strtoupper ( $String );
return $result_;
}
/**
* 作用array转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;
}
/**
* 作用将xml转为array
*/
public function xmlToArray($xml) {
// 将XML转为array
libxml_disable_entity_loader(true);
libxml_use_internal_errors();
$array_data = json_decode ( json_encode ( simplexml_load_string ( $xml, 'SimpleXMLElement', LIBXML_NOCDATA ) ), true );
return $array_data;
}
/**
* 作用以post方式提交xml到对应的接口url
*/
public function postXmlCurl($xml, $url, $second = 30) {
// 初始化curl
$ch = curl_init ();
// 设置超时
curl_setopt ( $ch, CURLOPT_TIMEOUT, $second );
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 );
// post提交方式
curl_setopt ( $ch, CURLOPT_POST, TRUE );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $xml );
// 运行curl
$data = curl_exec ( $ch );
curl_close ( $ch );
// 返回结果
if ($data) {
//curl_close ( $ch );
return $data;
} else {
$error = curl_errno ( $ch );
curl_close ( $ch );
throw new WxException("curl出错错误码:$error");
}
}
/**
* 作用使用证书以post方式提交xml到对应的接口url
*/
function postXmlSSLCurl($xml, $url, $second = 30) {
$ch = curl_init ();
// 超时时间
curl_setopt ( $ch, CURLOPT_TIMEOUT, $second );
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 );
// post提交方式
curl_setopt ( $ch, CURLOPT_POST, true );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $xml );
$data = curl_exec ( $ch );
// 返回结果
if ($data) {
return $data;
} else {
$error = curl_errno ( $ch );
curl_close ( $ch );
throw new WxException("curl出错错误码:$error");
}
}
}
?>