基础类WechatPay.php
<?php
namespace App\Library;
class WechatPay{
const KEY = '5634cddddmz6qk1rwgh567xa8sj'; //支付秘钥需要更改成自己的
const APPID = 'wx3896664dede7749b9cb05'; //APPID需要更改为自己的
const MCHID = '12345678'; //商户号需要更改成自己的
// const SECRET = 'cvdfdf5545455916e233d1d380549514a3'; //开发者密码需要更改为自己的
const UOURL = 'https://api.mch.weixin.qq.com/pay/unifiedorder'; //无需更改 统一下单API地址
// const NOTIFY = 'http://tpmapi.vfinemusic.com/fontend/pay/sendWechatNO'; //支付通知地址需要更改成你自己服务器的地址
public function __construct() {
}
//获取签名
public function getSign($arr){
//去除数组的空值
array_filter($arr);
if(isset($arr['sign'])){
unset($arr['sign']);
}
//排序
ksort($arr);
//组装字符
$str = $this->arrToUrl($arr) . '&key=' . self::KEY;
//使用md5 加密 转换成大写
return strtoupper(md5($str));
}
//获取带签名的数组
public function setSign($arr){
$arr['sign'] = $this->getSign($arr);
return $arr;
}
//校验签名
public function checkSign($arr){
//生成新签名
$sign = $this->getSign($arr);
//和数组中原始签名比较
if($sign == $arr['sign']){
return true;
}else{
return false;
}
}
//数组转URL字符串 不带key
public function arrToUrl($arr){
return urldecode(http_build_query($arr));
}
//记录到文件
public function logs($file,$data){
$data = is_array($data) ? print_r($data,true) : $data;
file_put_contents('/www/paylog/' .$file, $data);
}
public function getPost(){
return file_get_contents('php://input');
}
//Xml 文件转数组
public function XmlToArr($xml)
{
if($xml == '') return '';
libxml_disable_entity_loader(true);
$arr = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement'