基于PHP的微信支付教程 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

订单查询

对应文件管理中example文件夹下的orderquery.php文件

1,头文件引入

必须引入的头文件,以SDK的路径为例子

require_once "../lib/WxPay.Api.php";

可选的头文件引入,该头文件只是微信支付用于记录操作日志

require_once 'log.php';

2,查询条件

每条订单可以由商户订单号,这个我们在每次下单一次生成一次的号码确定之外,还可以由微信订单号唯一确定,那么查询订单的时候也需要这两个参数之中的一个,由于微信订单的获取比较麻烦,所以一般我们采用商户订单号来进行查询,微信订单号和商户订单号最少填一个,微信订单号优先。

3,采用商户订单号查询

首先我们要这这个页面里面获取到要查询的商户订单号,例如通过get的形式来获取。

$tradeId = $_GET["out_trade_no"];

然后就能调用接口函数来进行查询了。

if(isset($tradeId) && $tradeId != "")
{
    $input = new WxPayOrderQuery();
    $input->SetOut_trade_no($tradeId); // 设置好要查询的订单
    $order = WxPayApi::orderQuery($input)); // 进行查询
    var_dump($order); // 打印出订单信息
}

常用的订单信息:

if($order['err_code_des'] =="order not exist"){
    // 订单不存在
}else{
    $money = $order['total_fee']; //所付款数,单位分 
    if($order['trade_state'] =="SUCCESS"){
        //支付成功
    }else if($order['trade_state'] =="REFUND"){
        //已退款
    }else if($order['trade_state'] =="NOTPAY"){
        //用户还没支付
    }else if($order['trade_state'] =="CLOSED"){
        //订单关闭
    }else if($order['trade_state'] =="REVOKED"){
        //已撤销(刷卡支付)
    }else if($order['trade_state'] =="USERPAYING"){
        //用户支付中
    }else if($order['trade_state'] =="PAYERROR"){
        //支付失败(其他原因,例如银行返回失败)
    }
}

更多查询订单返回值,参考官方文档

4,采用微信订单号查询

$wxId = $_GET["transaction_id"];
if(isset($wxId) && $wxId != "")
{
    $input = new WxPayOrderQuery();
    $input->SetOut_trade_no($wxId); // 设置好要查询的订单
    $order = WxPayApi::orderQuery($input)); // 进行查询
    var_dump($order); // 打印出订单信息
}

订单不存在的情况是什么原因?
输入了不存在的微信订单号或者商户订单号。