微信支付类

扫码支付、H5、JSAPI、查询订单、退款订单、异步通知校验

类版本:1.00
功能说明:
支持扫码支付、H5、JSAPI、查询订单、关闭订单、退款订单、异步通知校验

部署说明:
将类文件解压至Mb/tools文件夹下即可。


使用说明:
  1. 初始化:__construct($mchid, $appid, $key)参数:$mchid=商户ID, $appid=公众号ID, $key=商户KEY
  2. 扫码支付:qrcodePay($outTradeNo,$orderName,$payAmount,$notifyUrl)参数:$outTradeNo=商户订单号,$orderName=订单名称,$payAmount=付款金额,$notifyUrl=异步通知地址
  3. JSAPI支付:jsApiPay($openid,$outTradeNo, $orderName, $payAmount, $notifyUrl)参数:$openid=微信用户openid,其他同上
  4. H5支付:h5Pay($outTradeNo,$orderName,$payAmount,$notifyUrl,$returnUrl)参数同扫码支付,$returnUrl=返回地址
  5. 获取微信用户openID:GetOpenid($wx_appsecret)参数:$wx_appsecret=微信公众号appsecret
  6. 订单退款:PayRefund($refundNo,$payAmount,$refundAmount,$orderNo,$tradeNo=false)参数:$refundNo=退款订单(随机生成,非订单号),$payAmount=订单金额,$refundAmount=退款金额,$orderNo=微信交易号或商户订单号,$tradeNo=如果是微信交易号设置true,默认false商户订单
  7. 关闭订单:PayClose($outTradeNo)参数:$outTradeNo=商户订单号
  8. 查询订单:PayQuery($outTradeNo)参数:$outTradeNo=商户订单号
  9. 异步通知验证:notify()
  10. 设置证书:setCert($apiclient_cert,$apiclient_key)参数:$apiclient_cert=apiclient_cert证书路径,$apiclient_key=apiclient_key证书路径
使用演示:
class indexController extends Mb{
	
	public $wx_appid='';//微信公众号ID
    public $wx_mchid='';//微信支付商户ID
    public $wx_key='';//微信支付KEY
    public $wx_appsecret='';//微信公众号appsecret
	
	public function index(){//扫码支付
		$pay = t('Wxpay',$this->wx_mchid, $this->wx_appid, $this->wx_key);
		$outTradeNo = date("YmdHis",time()).rand(1000,9999);//生成订单号
		//echo $outTradeNo;
		$orderName = '一瓶矿泉水';
		$payAmount = 2;//支付金额
		$notifyUrl = 'https://www.liot.cn/index/notify';
		$res = $pay->qrcodePay($outTradeNo,$orderName,$payAmount,$notifyUrl);
		p($res);
	}
	
	public function jsApiPay(){//JSAPI支付
		$pay = t('Wxpay',$this->wx_mchid, $this->wx_appid, $this->wx_key);
        $openid = $pay->GetOpenid($this->wx_appsecret);      //获取openid
        if(!$openid) exit('获取openid失败');
		
		$outTradeNo = date("YmdHis",time()).rand(1000,9999);//生成订单号
		$orderName = '一瓶矿泉水';
		$payAmount = 2;//支付金额
		$notifyUrl = 'https://www.liot.cn/index/notify';//用户支付成功后异步通知地址
		$res = $pay->jsApiPay($openid,$outTradeNo, $orderName, $payAmount, $notifyUrl);
		$this->jsApiParameters = json_encode($res);
		p($this->jsApiParameters);
	}
	
	public function h5Pay(){//H5支付
		$pay = t('Wxpay',$this->wx_mchid, $this->wx_appid, $this->wx_key);
		$outTradeNo = date("YmdHis",time()).rand(1000,9999);//生成订单号
		$orderName = '一瓶矿泉水';
		$payAmount = 2;//支付金额
		$notifyUrl = 'https://www.liot.cn/index/notify';//用户支付成功后异步通知地址
		$returnUrl = 'https://www.liot.cn';//用户支付成功后跳转的地址
		$res = $pay->h5Pay($outTradeNo,$orderName,$payAmount,$notifyUrl,$returnUrl);
		if($res['code'] == 200){
		    $mwebUrl = $res['url'];
		    header('location:/'.$res['url']);
		}
		p($res);
	}
	
	public function notify(){//异步通知
		$pay = t('Wxpay',$this->wx_mchid, $this->wx_appid, $this->wx_key);
		$result = $pay->notify();
		if($result){
            //完成你的逻辑
            //例如连接数据库,获取付款金额$result['cash_fee'],获取订单号$result['out_trade_no'],修改数据库中的订单状态等;
            //现金支付金额:$result['cash_fee']
            //订单金额:$result['total_fee']
            //商户订单号:$result['out_trade_no']
            //付款银行:$result['bank_type']
            //货币种类:$result['fee_type']
            //是否关注公众账号:$result['is_subscribe']
            //用户标识:$result['openid']
            //业务结果:$result['result_code']  SUCCESS/FAIL
            //支付完成时间:$result['time_end']  格式为yyyyMMddHHmmss
            //具体详细请看微信文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7&index=8
            exit('SUCCESS');
        }
        exit('FAIL');
	}
	
	public function Query(){//查询支付结果
		$pay = t('Wxpay',$this->wx_mchid, $this->wx_appid, $this->wx_key);
		$res = $pay->PayQuery('202212240114178865');
        p($res);
	}
	
	public function Refund(){//订单退款
		$pay = t('Wxpay',$this->wx_mchid, $this->wx_appid, $this->wx_key)->setCert(Z_E.'cert/apiclient_cert.pem',Z_E.'cert/apiclient_key.pem');
		$outTradeNo = 'T'.date("YmdHis",time()).rand(1000,9999);//生成订单号
		$res = $pay->PayRefund($outTradeNo,2,2,'202212240255477043');
        p($res);
	}
	
	public function PayClose(){//关闭订单
		$pay = t('Wxpay',$this->wx_mchid, $this->wx_appid, $this->wx_key);
		$res = $pay->PayClose('202212240222357733');
        p($res);
	}
	
}

如果对你有帮助

可以赞助并支持下作者哦,谢谢!